黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航

黑客文章 - 加密解密 - 浏览 - Obsidium V1.2 加壳的记事本脱壳

Obsidium V1.2 加壳的记事本脱壳

黑客 发布日期:2008-1-23 1:34:00 共有 464 人次浏览
Obsidium V1.2 加壳的记事本脱壳

【脱文标题】 Obsidium V1.2 加壳的记事本脱壳

【脱文作者】 yeyu0808

【使用工具】 flyOD,Lordpe,PEID,ImportREC1.42

【破解平台】 WinXp

【软件名称】 notepad
      
【加壳方式】 Obsidium V1.2

【脱壳目的】 我是一只大菜鸟,只是为了学习技术而脱壳~!


【脱壳内容】 Obs1.2版的壳也出来这么久了,一直没人愿意放出脱壳方法,我在这里献丑了。这次OBS的

升级没有什么太大的变化,加壳的程序跟1.1版的脱壳方法相似,还是第4次除零异常后处理IAT,连代码

都没有太大的变化,找OEP跟1.1版基本上是一模一样,只是在IAT加密的时候,检测内存访问断点,断不

到1.1版直接加密IAT的地方,这就为找特殊函数设了一点障碍,靠你自己去研究了~!


用Obsidium V1.2版加壳的记事本,难度就大降低了,我是菜鸟,太难的搞不定,只能脱个记事本~!




一、寻找OEP、Dump进程


老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。忽略除了“整数被除零”之外的所有其他异常选
项,同时还要用上UnhandledExceptionFilter2.20,F9后出现一个内存异常,不管它,直接Shift+F9。


00407000 > /EB 02               jmp short NOTEPAD.00407004    载入后停在这
003A120F    F7F0                div eax                        1次
003A42E5    F7F0                div eax                        2次
003A4413    F7F0                div eax                        3次
003A42E5    F7F0                div eax                        4次,处理IAT的地方
003A2C8E    F7F0                div eax                        5次
003A30B9    F7F0                div eax                        6次
003A2C8E    F7F0                div eax                        7次
003A30B9    F7F0                div eax                        8次
0040891C    F7F0                div eax                        9次  跳OEP的地方


OK,当第5次003A2C8E异常时,Ctrl+G:003A2C8E (第4次异常地址)  

到达 003A2C8E 时 Ctrl+F 搜索命令:test word ptr ds:[esi],20  


003A49BF    66:F706 2000        test word ptr ds:[esi],20//找到这里


记下这个:003A64F0  地址,IAT的解密还要靠它。


9次时的堆栈:
0012FF4C    0012FFE0  指针到下一个 SEH 记录
0012FF50    00408951  SE 句柄

去00408951下断吧:
00408951    C8 000000           enter 0,0
00408955    EB 03               jmp short NOTEPAD.0040895A


Ctrl+F 在当前位置下搜索命令:mov dword ptr ds:[eax+0B8],edx 在004089DF处:
查找CONTEXT结构,中间会返回到系统中去。

004089DF    8990 B8000000       mov dword ptr ds:[eax+B8],edx                   ;  

NOTEPAD.00408C77
004089E5    EB 02               jmp short NOTEPAD.004089E9

此时edx=00408C77,去00408C77下断,F9断下来:

00408C77    E8 BB000000         call NOTEPAD.00408D37
//加密CALL,跟进去吧

00408D37    F8                  clc
00408D38    73 01               jnb short NOTEPAD.00408D3B
00408D3A    59                  pop ecx
00408D3B    60                  pushad
00408D3C    EB 02               jmp short NOTEPAD.00408D40
00408D3E    FC                  cld
00408D3F    D6                  salc
00408D40    836C24 20 05        sub dword ptr ss:[esp+20],5
00408D45    EB 03               jmp short NOTEPAD.00408D4A
00408D47    CF                  iretd
00408D48    D4 1B               aam 1B
00408D4A    8B4424 20           mov eax,dword ptr ss:[esp+20]
00408D4E    C600 CD             mov byte ptr ds:[eax],0CD
00408D51    C740 01 023B1DCD    mov dword ptr ds:[eax+1],CD1D3B02
00408D58    EB 01               jmp short NOTEPAD.00408D5B
00408D5A    65:B9 C0000000      mov ecx,0C0
00408D60    F9                  stc
00408D61    72 03               jb short NOTEPAD.00408D66
00408D63    9E                  sahf
00408D64    8480 BECD3A19       test byte ptr ds:[eax+193ACDBE],al
00408D6A    66:8000 1E          add byte ptr ds:[eax],1E
00408D6E    EB 02               jmp short NOTEPAD.00408D72
00408D70    0108                add dword ptr ds:[eax],ecx
00408D72    83C0 04             add eax,4
00408D75    F9                  stc
00408D76    72 02               jb short NOTEPAD.00408D7A
00408D78    2E:4B               dec ebx
00408D7A    C1CE D8             ror esi,0D8
00408D7D    EB 02               jmp short NOTEPAD.00408D81
00408D7F    1950 83             sbb dword ptr ds:[eax-7D],edx
00408D82  - E9 040F85E1         jmp E1C59C8B
00408D87    FFFF                ???                                             ; 未知命令
00408D89    FFEB                jmp far ebx                                     ; 非法使用寄

存器
00408D8B    04 F0               add al,0F0
00408D8D    9C                  pushfd
00408D8E    8CD3                mov bx,ss
00408D90    61                  popad
00408D91    C3                  retn

F7走过上面的部分:
00408C77   /EB 02               jmp short NOTEPAD.00408C7B

再次来到00408C77处时,Ctrl+F 在 当前位置下 搜索命令: jmp edi 在00408D15处,当然是F2再下断了

,F9会断在那里的


00408D15    FFE7                jmp edi


跟进后,一直F7:
003A84FC  - E9 D28B5600         jmp 009110D3         这里去伪OEP
003A8501    EB 02               jmp short 003A8505

009110D3    FF15 E4639100       call dword ptr ds:[9163E4]
009110D9    8BF0                mov esi,eax
009110DB    8A00                mov al,byte ptr ds:[eax]

补上Stolen Code,脱其他Obsidium壳程序可以根据程序运行代码、伪OEP处的堆栈和寄存器等情况,还原

OEP处代码。

009110CC    55                  push ebp
009110CD    8BEC                mov ebp,esp
009110CF    83EC 44             sub esp,44
009110D2    56                  push esi
009110D3    FF15 E4639100       call dword ptr ds:[9163E4]

LordPE先完全Dump这个进程,然后“区域脱壳”,地址=00910000,大小=00008000,得到
Region00910000-00918000.dmp文件。用LordPE打开dumped.exe,从磁盘载入Region00910000-

00918000.dmp区段,改其VOffset=00510000。只保留LordPE的“验证PE”选项,对dumped.exe重建PE。OK

,Dump完毕!


1/2页次 第1页 第2页 下一页 最后一页
所属分类: 加密解密     网摘收藏: Google 雅虎 百度 POCO 365key 和讯 天极