⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patch5.idc

📁 刚接触逆向的
💻 IDC
字号:
#include "idc.idc"

static main() {
  auto MyAddr,DeCodeAddr,HigtBitflat,EBX,EAX,ECX,EBP,ESI,EDX,CF,IsNotZero,Counter;
   auto MyByteO,MyByteT,MyWordO,MyWordT,MyBuffer,Addr,bl;

MyAddr = 0x447000;
DeCodeAddr =0x447000 - 0x46000;
ESI=DeCodeAddr;
Counter = 0;
CF = 0;
EBX = Dword(MyAddr);
MyAddr = MyAddr + 4;
HigtBitflat = EBX & 0x80000000;  
EBX = EBX + EBX;
EBX++;

while (Counter != 1){
while (HigtBitflat != 0){
	PatchByte (DeCodeAddr,Byte(MyAddr));
	MyAddr++;
	DeCodeAddr++;

	IsNotZero = EBX & 0x7FFFFFFF;
	if (IsNotZero == 0){
		CF=1;
		EBX = Dword(MyAddr);          
        	MyAddr = MyAddr + 4;       
				}
	HigtBitflat = EBX & 0x80000000;
	EBX = EBX + EBX;
        EBX = EBX + CF;
	CF = 0;

			}
EAX = 1;
while (Counter != 1){

IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;

EAX = EAX + EAX;
if (HigtBitflat != 0) EAX++;

HigtBitflat = EBX & 0x80000000;
if (HigtBitflat != 0){
	IsNotZero = EBX & 0x7FFFFFFF;
	if (IsNotZero != 0) {
	EBX = EBX + EBX;
	break;
				}
	EBX = Dword(MyAddr);
	MyAddr = MyAddr + 4;
	HigtBitflat = EBX & 0x80000000;
	if (HigtBitflat != 0) {
	EBX = EBX + EBX;
	EBX++;
	break;
				}
	CF = 1;	
			}
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;

EAX--;	

IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;         
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;

EAX = EAX + EAX;
if (HigtBitflat != 0) EAX++;
				}
ECX = 0;
if (EAX < 3){
EAX = EAX - 3;
IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;         
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;
}
else{
EAX = EAX - 3;
EAX = EAX << 8;
EAX = EAX + Byte(MyAddr);
MyAddr++;
EAX = EAX ^ 0xffffffff;
if (EAX == 0) break;
HigtBitflat = EAX & 1;
EAX = EAX >> 1;
EBP = EAX;
}

ECX = ECX + ECX;
if (HigtBitflat != 0) ECX++;

IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;         
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;

ECX = ECX + ECX;
if (HigtBitflat != 0) ECX++;

if (ECX == 0 ){

ECX++;
HigtBitflat = 0;
while (HigtBitflat == 0){
IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;         
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;

ECX = ECX + ECX;
if (HigtBitflat != 0) ECX++;

HigtBitflat = EBX & 0x80000000;
if (HigtBitflat != 0){
IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero != 0) {
EBX = EBX + EBX;
break;  
}
EBX = Dword(MyAddr);         
MyAddr = MyAddr + 4;
CF = 1;
HigtBitflat = EBX & 0x80000000;
			}
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;
	}
ECX = ECX + 2;
			}

HigtBitflat = EBP & 0x80000000;
if (HigtBitflat !=0){
if (EBP < 0xfffffb00) CF =1;
			}
else{
CF =1;
	}
ECX ++;
ECX = ECX + CF;
CF=0;
EDX = DeCodeAddr + EBP;
if (HigtBitflat !=0){
if (EBP > -4) CF=1;
			}
if (CF==1){
CF=0;
while (ECX !=0){
PatchByte(DeCodeAddr,Byte(EDX));
EDX ++;
DeCodeAddr ++;
ECX --;
		}
		}
else{
while(Counter != 1){
PatchDword(DeCodeAddr,Dword(EDX));
EDX = EDX + 4;

DeCodeAddr = DeCodeAddr + 4;

if (ECX <= 4){
ECX= ECX -4;
break;
}
ECX = ECX - 4;
}

DeCodeAddr = DeCodeAddr + ECX;

	}


IsNotZero = EBX & 0x7FFFFFFF;
if (IsNotZero == 0){
	CF=1;  
	EBX = Dword(MyAddr);         
        MyAddr = MyAddr + 4;         
			}
HigtBitflat = EBX & 0x80000000;
EBX = EBX + EBX;
EBX = EBX + CF;
CF = 0;
				}
		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -