UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]脱壳
UPX-Scrambler RC1.x -> ㎡nT畂LOD载入,ep处代码
0040DA7F >90 nop
0040DA80 61 popad
0040DA81 BE 00B04000 mov esi,packer.0040B000
0040DA86 8DBE 0060FFFF lea edi,dword ptr ds:
0040DA8C 57 push edi
0040DA8D 83CD FF or ebp,FFFFFFFF
0040DA90 EB 10 jmp short packer.0040DAA2
0040DA92 EB 00 jmp short packer.0040DA94
0040DA94^ EB EA jmp short packer.0040DA80
0040DA96^ EB E8 jmp short packer.0040DA80
0040DA98 8A06 mov al,byte ptr ds:
1,脱壳,bp LoadLibraryA两次后,alt+F9返回
0040DBA8 95 xchg eax, ebp
0040DBA9 8A07 mov al, byte ptr
0040DBAB 47 inc edi
0040DBAC 08C0 or al, al
0040DBAE^ 74 DC je short 0040DB8C
0040DBB0 89F9 mov ecx, edi
0040DBB2 79 07 jns short 0040DBBB
0040DBB4 0FB707 movzx eax, word ptr
0040DBB7 47 inc edi
0040DBB8 50 push eax
0040DBB9 47 inc edi
0040DBBA B9 5748F2AE mov ecx, AEF24857
0040DBBF 55 push ebp
0040DBC0 FF96 74E50000 call dword ptr
0040DBC6 09C0 or eax, eax
0040DBC8 74 07 je short 0040DBD1
0040DBCA 8903 mov dword ptr , eax
0040DBCC 83C3 04 add ebx, 4
0040DBCF^ EB D8 jmp short 0040DBA9
0040DBD1 FF96 78E50000 call dword ptr
0040DBD7 60 pushad
0040DBD8- E9 AA4AFFFF jmp 00402687//F2下断,shift+F9,到达OEP
00402687 8D4424 F8 lea eax, dword ptr //OEP,脱壳,完成
0040268B 64:8705 0000000>xchg dword ptr fs:, eax
00402692 BB D5264000 mov ebx, 004026D5
00402697 8925 58544000 mov dword ptr , esp
0040269D 53 push ebx
0040269E 50 push eax
2,试运行,提示未与破解程序在同一目录
可能性:1,程序有自校验(bp CreateFileA等相关API未找到,于是有了第二种可能,overlay)
2,附加数据
WINHEX出场,打开packer,翻到文件末尾,发现Overlay在4800H处,复制附加数据,粘贴到dump出的文件尾(记录overlay粘贴的位置10FE0)。
对dump出的文件,从新载入,下 bp SetFilePointer,发现参数4800,修改为10FE0,保存。运行,在次出错。只好再分析。
分析注册机的特殊性,想到CreateFileA,再次 bp CreateFileA,到
0040141E E8 FD1D0000 call <jmp.&kernel32.GetFileSize>
00401423 2D E00F0100 sub eax, 4800//4800改为10FE0
保存,运行,OK.
当然想学习内存补丁的,现在可以动手了,哈哈! 学习中……/:018 ok ,学习了,经典方法办事。
页:
[1]