| 关键词: nbsp 010143 SHORT DWORD PTR 加壳 ESI 11.010143 ECX 代码 |
【破文标题】破解UPolyX 0.51壳 【破文作者】仙果 【作者邮箱】[email protected] 【作者主页】http://hi.baidu.com/zhanglinguo11 【破解工具】OD PEID 【破解平台】Win32-XPsp2 【软件简介】今天在网络上UPolyX 0.5这个壳的资料,发现关于这个壳的破解资料很少,自己动手进行了破解,算是给这个壳多点资料把! 【破解声明】纯属个人爱好 ------------------------------------------------------------------------ 【破解过程】最新版本是UPolyX 0.51,就以这个最新版本进行破解,破解样本是记事本程序。 这个加壳程序是对UPX加壳过的程序进行二次加壳或加密。 先压缩后进行加密 PEID显示为:什么都没找到 核心扫描为:ARJ Archive * //不晓得代表什么意思 OD载入,代码为: 010143B8 > 0FB7CF MOVZX ECX,DI //停在这里 010143BB D1D6 RCL ESI,1 010143BD 69EF 6B823D0C IMUL EBP,EDI,0C3D826B 010143C3 EB 01 JMP SHORT 11.010143C6 010143C5 C3 RETN //从下面跳至这里 010143C6 BE 40420101 MOV ESI,11.01014240 010143CB 83EC 04 SUB ESP,4 010143CE 893424 MOV DWORD PTR SS:[ESP],ESI 010143D1 B9 B0000000 MOV ECX,0B0 010143D6 8136 8E931300 XOR DWORD PTR DS:[ESI],13938E 010143DC 51 PUSH ECX 010143DD 33C9 XOR ECX,ECX 010143DF B9 04000000 MOV ECX,4 010143E4 83C6 01 ADD ESI,1 010143E7 ^ E2 FB LOOPD SHORT 11.010143E4 010143E9 59 POP ECX 010143EA 83E9 03 SUB ECX,3 010143ED ^ E2 E7 LOOPD SHORT 11.010143D6 010143EF ^ EB D4 JMP SHORT 11.010143C5 很简单的代码 JMP SHORT 11.010143C5 是一个向上的跳转,跳到 RETN的地方,然后继续 0101423D 00FF ADD BH,BH 0101423F 0060 BE ADD BYTE PTR DS:[EAX-42],AH 01014242 0000 ADD BYTE PTR DS:[EAX],AL 01014244 0101 ADD DWORD PTR DS:[ECX],EAX 01014246 8DBE 0010FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF1000] 0101424C 57 PUSH EDI 0101424D 83CD FF OR EBP,FFFFFFFF 01014250 EB 10 JMP SHORT 11.01014262 01014252 90 NOP 其实是跳往01014240,但鼠标动以下就会变成以上的汇编代码,需要右键-分析-分析代码,分析后就可以看到如下代码 01014240 . 60 PUSHAD 01014241 . BE 00000101 MOV ESI,11.01010000 01014246 . 8DBE 0010FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF1000] 0101424C . 57 PUSH EDI 0101424D . 83CD FF OR EBP,FFFFFFFF 01014250 . EB 10 JMP SHORT 11.01014262 01014252 90 NOP 01014253 90 NOP 01014254 90 NOP DUMP下来,然后PEID显示: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo UPX的壳,剩下就很好解决了。UPX的壳很容易就可以脱,用脚本就可以了 载入之前DUMP文件,OD载入 01014377 FF96 F0AE0100 CALL DWORD PTR DS:[ESI+1AEF0] 0101437D 09C0 OR EAX,EAX 0101437F 74 07 JE SHORT 5.01014388 01014381 8903 MOV DWORD PTR DS:[EBX],EAX 01014383 83C3 04 ADD EBX,4 01014386 ^ EB E1 JMP SHORT 5.01014369 01014388 FF96 F4AE0100 CALL DWORD PTR DS:[ESI+1AEF4] //跟到这里,F8就直接执行,但离OEP已经很近了! 0101438E 61 POPAD //在这里F2下断 0101438F - E9 0930FFFF JMP 5.0100739D 01014394 0000 ADD BYTE PTR DS:[EAX],AL 在0101438E下断后,程序跳往 JMP 5.0100739D 那里就是OEP 0100739D 6A 70 PUSH 70 0100739F 68 98180001 PUSH 5.01001898 010073A4 E8 BF010000 CALL 5.01007568 010073A9 33DB XOR EBX,EBX 010073AB 53 PUSH EBX 010073AC 8B3D CC100001 MOV EDI,DWORD PTR DS:[10010CC] ; kernel32.GetModuleHandleA 010073B2 FFD7 CALL EDI DUMP下来,PEID检测 Microsoft Visual C++ 7.0 Method2 完美完毕! |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|