📄 patch5.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 + -