morphine程序加壳的简单脱壳方法
 

标题:morphine程序加壳的简单脱壳方法
链接:http://www.unpack.cn/viewthread.php?tid=16442
贴者:8100303
日期:2007-8-20 18:58

morphine程序加壳的简单脱壳方法
很老套的东西了,呵呵呵。
以2.7版本加壳xp记事本为例。
载入后停在这里:

00401711 > /E2 19                   loopd   short 0040172C
00401713   |E3 17                   jecxz   short 0040172C
00401715   |CF                      iretd
00401716   |8D53 45                 lea     edx, dword ptr [ebx+45]
00401719   |A1 EA268678             mov     eax, dword ptr [788626EA]
0040171E  ^|E0 A9                   loopdne short 004016C9
00401720   |2A65 57                 sub     ah, byte ptr [ebp+57]
00401723   |05 CFC71BC5             add     eax, C51BC7CF
00401728   |A0 08FB9841             mov     al, byte ptr [4198FB08]
0040172D    51                      push    ecx

断点:VirtualAlloc 中断后,返回来到这里:

00401342    FFD3                    call    ebx
00401344    85C0                    test    eax, eax                       ;返回这里
00401346    0F84 4D020000           je      00401599
0040134C    8945 F4                 mov     dword ptr [ebp-C], eax
0040134F    89C7                    mov     edi, eax
00401351    8B75 08                 mov     esi, dword ptr [ebp+8]         ; 数据窗口定位到[ebp+8],可以看见是原始程序的起
始处,记住[ebp+8]的地址。

00401C0E  4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00  MZ?........
00401C1E  B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  ?......@.......
00401C2E  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00401C3E  00 00 00 00 00 00 00 00 00 00 00 00 E0 00 00 00  ............?..
00401C4E  0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68  ?.???L?Th
00401C5E  69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  is program canno
00401C6E  74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20  t be run in DOS

然后在下面下断:

0040139B    8B55 F4            mov     edx, dword ptr [ebp-C]
0040139E    2B55 FC            sub     edx, dword ptr [ebp-4]
004013A1    74 5C              je      short 004013FF
004013A3    8B45 F4            mov     eax, dword ptr [ebp-C]

运行中断后,写一个一句话的脚本:

dm 401c0e, 123F2, "c:\dump.exe"

上面401c0e是第一次记下的数据,123F2是从401c0e到code区段末的大小,可以选中401c0e到区段末的数据,od会自动提示大小。
脚本运行后,自动在c盘根目录生成一个脱壳文件dump.exe。
然后查看一下区段信息,把脱壳程序末尾多余的字节删掉,就和原程序一模一样了。
具体细节自己琢磨吧,只有琢磨出来的才是自己真正掌握的。

上一篇   下一篇