|
Alex Protector 1.0 beta2
|
Alex Protector 1.0 beta2
这个壳又是俄罗斯人写的,并且非常老了吧。 我测试了下,好象只能加asm语言编写的程序,加其他的都不行,兼容性严重失败。
不过这个壳倒是有点意思,他有偷代码。 ------------------------------华丽的分割线--------------------------------- OEP 首先在代码段下内存访问断点,F9后到达这里 /*404916*/ MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 然后bp GetModuleHandleA 断下返回用户代码后 再在代码段下内存访问断可来到这 /*3B0C05*/ MOV DWORD PTR DS:[ECX],EAX /*3B0C07*/ ADD EDI,4 /*3B0C0A*/ DEC BL /*3B0C0C*/ POP EAX /*3B0C0D*/ CMP BL,0 /*3B0C10*/ JA 003B0B58 /*3B0C16*/ CMP BYTE PTR DS:[EDI],0C3 /*3B0C19*/ JE 003B09C0 /*3B0C1F*/ CMP DWORD PTR DS:[EDI],0
然后一直往下拉 因为中间都是垃圾指令 到这 /*3B11DA*/ MOV EAX,DWORD PTR SS:[EBP+4023AD] /*3B11E0*/ MOV DWORD PTR SS:[ESP+1C],EAX /*3B11E4*/ POPAD /*3B11E5*/ JMP EAX
删除内存断,在3b11e5处下断,shift+f9跳向OEP
不过跳过来后发现前面也都是垃圾指令。 中间就有一个 push 0 然后下面一个跨段跳转 可以知道这里肯定是把push 0给偷掉了 /*3D0C52*/ TEST EDI,874CDC1C /*3D0C58*/ AND EDI,9378C643 /*3D0C5E*/ JMP 0006.0040110D
过了这个JMP后算真正来到代码里了,当然要把第一条指令push 0给补上。 -----------------------------华丽的分割线--------------------------------
到OEP还不算完事,因为它把IAT也弄的一团糟。
pacth代码吧 /*3B0C05*/ MOV DWORD PTR DS:[ECX],EAX 首先改为 jmp 3b1800
89 01 53 8B 58 38 89 18 5B 83 C7 04 E9 F9 F3 FF FF 90
/*3B1800*/ MOV DWORD PTR DS:[ECX],EAX /*3B1802*/ PUSH EBX /*3B1803*/ MOV EBX,DWORD PTR DS:[EAX+38] //在偏移38处放的是正确API地址 /*3B1806*/ MOV DWORD PTR DS:[EAX],EBX /*3B1808*/ POP EBX /*3B1809*/ ADD EDI,4 /*3B180C*/ JMP 003B0C0A /*3B1811*/ NOP
dump后 修复时用获取API调用 再新建个IAT 就OK了。
不过有时候会有一个api获取失败,那时侯再手动修复吧。我不想弄了。
反正脱主程序时没问题。
http://www.kyospace.com/feedcomm.asp?logID=318 |