magic659117852 发表于 2008-3-12 23:21:32

脱一未知壳

【文章标题】脱一未知壳
【文章作者】mgic659117852/蚊香
【作者邮箱】mailto:[email protected]
【作者主页】http://hi.baidu.com/magic659117852
【使用工具】OD PEiD LordPE ImportREC
【脱壳平台】D版 XP-SP2
【原版下载】http://www.fs2you.com/zh-cn/files/56e9d8e3-efed-11dc-835d-00142218fc6e
【保护方式】花指令 + 未知壳
【文章声明】本人纯菜鸟...只是感兴趣,供学习和交流,没有其他目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【大概过程】PEiD显示为 Microsoft Visual C++ (包括深度扫描&核心扫描)...换另一侦壳工具...还是一样 =_= !看区段..很不友善的样子....

http://bbs.crsky.com/1128632305/Mon_0803/8_185717_46296e0bc5913d0.jpg

扩展信息...

http://bbs.crsky.com/1128632305/Mon_0803/8_185717_af2933c8c7dd2bb.jpg

断定是有壳的...但不知道叫啥...暂且称其为未知壳吧 ...
啥也不说了...OD载入:
Quote:
00409000 >55            push    ebp                              ; ★☆ 停在这里
00409001    8BEC            mov    ebp, esp
00409003    6A FF          push    -1
00409005    68 11111100    push    111111                        ; ★☆ 看此句和下句...很明显的花 =_=
0040900A    68 22222200    push    222222
0040900F    64:A1 00000000mov    eax, dword ptr fs:
00409015    50            push    eax
00409016    64:8925 0000000>mov    dword ptr fs:, esp
0040901D    58            pop    eax
0040901E    64:A3 00000000mov    dword ptr fs:, eax
00409024    58            pop    eax
00409025    58            pop    eax
00409026    58            pop    eax
00409027    58            pop    eax
00409028    8BE8            mov    ebp, eax
0040902A    B8 00804000    mov    eax, 00408000
0040902F    FFE0            jmp    eax                              ; ★☆ 直接在这里F4
花指令明显...在 0040902F 处F4后...F8一下...来到:
Quote:
00408000    5B            pop    ebx                              ; kernel32.7C816FF7
00408001    81E3 00FFFFFFand    ebx, FFFFFF00
00408007    66:813B 4D5A    cmp    word ptr , 5A4D
0040800C    75 33          jnz    short 00408041
0040800E    8BF3            mov    esi, ebx
00408010    0373 3C      add    esi, dword ptr
00408013    813E 50450000cmp    dword ptr , 4550
00408019    75 26          jnz    short 00408041
0040801B    0FB746 18      movzxeax, word ptr
0040801F    8BC8            mov    ecx, eax
00408021    69C0 AD0B0000imul    eax, eax, 0BAD
此时 Alt+M 打开内存镜像...rsrc段下断 ...Shift+F9...来到:
Quote:
0040827F    FF76 0C      PUSH DWORD PTR DS:
00408282    011C24          ADD DWORD PTR SS:,EBX
00408285    FF5424 14      CALL DWORD PTR SS:
00408289    5E            POP ESI
0040828A    5B            POP EBX
0040828B    85C0            TEST EAX,EAX
0040828D    74 6F          JE SHORT packer1.004082FE
0040828F    8BE8            MOV EBP,EAX
00408291    8BD3            MOV EDX,EBX
00408293    8BFB            MOV EDI,EBX
00408295    0356 10      ADD EDX,DWORD PTR DS:
00408298    8B06            MOV EAX,DWORD PTR DS:
0040829A    85C0            TEST EAX,EAX
再一次 Alt+M 打开内存镜像...00401000处下断 ...Shift+F9...来到:
Quote:
0040688B    8807            MOV BYTE PTR DS:,AL                ; ★☆ 停在这里...
0040688D    47            INC EDI
0040688E    01DB            ADD EBX,EBX
00406890    75 07          JNZ SHORT packer1.00406899
00406892    8B1E            MOV EBX,DWORD PTR DS:
00406894    83EE FC      SUB ESI,-4
00406897    11DB            ADC EBX,EBX
00406899^ 72 ED          JB SHORT packer1.00406888
0040689B    B8 01000000    MOV EAX,1
004068A0    01DB            ADD EBX,EBX
单步往下...一直到:
Quote:
004069FB- E9 00A6FFFF    JMP packer1.00401000                  ; ★☆ 跳向OEP
00406A00    0000            ADD BYTE PTR DS:,AL
00406A02    0000            ADD BYTE PTR DS:,AL
00406A04    0000            ADD BYTE PTR DS:,AL
00406A06    0000            ADD BYTE PTR DS:,AL
00406A08    0000            ADD BYTE PTR DS:,AL
00406A0A    0000            ADD BYTE PTR DS:,AL
00406A0C    0000            ADD BYTE PTR DS:,AL
00406A0E    0000            ADD BYTE PTR DS:,AL
00406A10    0000            ADD BYTE PTR DS:,AL
00406A12    0000            ADD BYTE PTR DS:,AL
00406A14    0000            ADD BYTE PTR DS:,AL
00406A16    0000            ADD BYTE PTR DS:,AL
00406A18    0000            ADD BYTE PTR DS:,AL
00406A1A    0000            ADD BYTE PTR DS:,AL
00406A1C    0000            ADD BYTE PTR DS:,AL
-----------------------------------------------------------------------------
Quote:
00401000    6A 00          PUSH 0                                  ; ★☆ OEP ...DUMP之
00401002    E8 C50A0000    CALL packer1.00401ACC                  ; JMP 到 kernel32.GetModuleHandleA
00401007    A3 0C354000    MOV DWORD PTR DS:,EAX
0040100C    E8 B50A0000    CALL packer1.00401AC6                  ; JMP 到 kernel32.GetCommandLineA
00401011    A3 10354000    MOV DWORD PTR DS:,EAX
00401016    6A 0A          PUSH 0A
00401018    FF35 10354000PUSH DWORD PTR DS:
0040101E    6A 00          PUSH 0
00401020    FF35 0C354000PUSH DWORD PTR DS:
00401026    E8 06000000    CALL packer1.00401031
0040102B    50            PUSH EAX
0040102C    E8 8F0A0000    CALL packer1.00401AC0                  ; JMP 到 kernel32.ExitProcess
PEiD再次查Unpack.exe : MASM32 / TASM32 ..... ImportREC 修复一下... Unpack_.exe可以运行....
但有个问题...就是在运行的同时它有一个类似DOS界面的窗口出现...

http://bbs.crsky.com/1128632305/Mon_0803/8_185717_8c2b35b60323e08.jpg

个人不解 !!!    后经高手指点....将子系统 'Win32 控制台' 改为 'Win32 GUI' 即可 ....(嗯呐..学习了一招=_= !)

http://bbs.crsky.com/1128632305/Mon_0803/8_185717_0f2957456ae6d91.jpg

Unpack_.exe载入PE编辑器 ---- 子系统 ----- 将 Windows控制台(0003) 改为 Windows图形用户界面(0002) ---- 保存..确定
OK了...整个世界都清静了 =_=
------------------------------------------------------------------------
【文章总结】应该属于压缩壳吧...其实就是走过花指令后用内存断点法...另去除那个类DOS界面对偶来说属于新知识 ..学习 =_=
------------------------------------------------------------------------
【版权声明】...啥版权..没...

[ 本帖最后由 magic659117852 于 2008-3-12 23:22 编辑 ]

glts 发表于 2008-3-13 00:03:32

写得很好~~
1.0040902F    FFE0            jmp   eax
2.00408301- E9 6AE5FFFF   jmp   00406870
3.004069FB- E9 00A6FFFF   jmp   00401000

feitian1 发表于 2008-3-15 09:35:41

浅谢谢楼

flyjmu 发表于 2008-3-15 15:05:52

下了 学习一下 感谢楼主分享/:good

ooO孤雁Ooo 发表于 2008-3-20 08:26:35

哇,想不到在这里碰到了蚊香,(*^__^*) 嘻嘻……,顺便学习了一下!!/:014 /:014
页: [1]
查看完整版本: 脱一未知壳