西南学生 发表于 2008-4-2 18:58:04

UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]脱壳

UPX-Scrambler RC1.x -> ㎡nT畂L

OD载入,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.


当然想学习内存补丁的,现在可以动手了,哈哈!

yybns 发表于 2008-4-2 23:10:51

学习中……/:018

py22 发表于 2008-4-6 20:31:43

ok ,学习了,经典方法办事。
页: [1]
查看完整版本: UPX-Scrambler RC1.x -> ㎡nT畂L [Overlay]脱壳