看雪老大的脱壳入门,我是看了又看,现在基本上可以应付压缩壳,以及一些简单的加密壳了(类似TELOCK等),但还是不会脱ASP,ARM等猛壳,徘徊不前怎么办,只好到看雪来找师傅了。正所谓师傅选徒弟,徒弟也要选师傅。那我就首先来个才艺展示好了。希望能找到一个技术好,热情的师傅
今天从黑吧下了一个叫马丁宁马甲1.0的程序压缩了一下记事本。自己脱来玩玩
0101339E > 55 push ebp //开始停在这里
0101339F 89E5 mov ebp, esp
010133A1 6A FF push -1
010133A3 53 push ebx
010133A4 56 push esi
010133A5 57 push edi
010133A6 58 pop eax
010133A7 58 pop eax
010133A8 5B pop ebx
010133A9 58 pop eax
010133AA 5D pop ebp
010133AB 60 pushad
010133AC E8 1DFEFFFF call 010131CE //F7跟进
010131CE 55 push ebp
010131CF 8BEC mov ebp, esp
010131D1 83C4 D4 add esp, -2C
010131D4 53 push ebx
010131D5 56 push esi
010131D6 57 push edi
010131D7 8B45 10 mov eax, dword ptr [ebp+10]
。。。。。。。。。。。。。。。略
01013319 8B40 10 mov eax, dword ptr [eax+10]
0101331C 0345 E4 add eax, dword ptr [ebp-1C]
0101331F 8B55 14 mov edx, dword ptr [ebp+14]
01013322 83C2 20 add edx, 20
01013325 8902 mov dword ptr [edx], eax ; EAX=OEP=0100739D
就直接CTRL+G输入EAX显示的值,然后按F2下断,停在OEP处。
0100739D 6A db 6A ; CHAR 'j';这里DUMP程序
0100739E 70 db 70 ; CHAR 'p'
0100739F 68 db 68 ; CHAR 'h'
010073A0 98 db 98
010073A1 18 db 18
010073A2 00 db 00
010073A3 01 db 01
010073A4 E8 db E8
保存后运行正常,但程序大了2倍,用LORDPE观察发现多了一个.mdn以及.idata2区段,删除.mdn这个区段,然后重建PE,程序变成了67.8KB,比原来的大了2.8KB而已,而且也可以正常运行。
推广:
由马丁宁马甲1.0压缩的程序可以这样脱壳:
OD载入程序后搜索:mov dword ptr [edx], eax,在这句上按F4,EAX的值就是OEP,到OEP下断,其余的步骤就跟上面一样了
编辑后付上本人QQ:3327194
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)