在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
【脱文标题】 手动脱壳入门第十九篇ASProtect 1.1 【脱文作者】 weiyi75[Dfcg] 【作者邮箱】 [email protected] 【作者主页】 Dfcg官方大本营 【使用工具】 Peid,Ollydbg,Loadpe,ImportREC1.42 【脱壳平台】 Win2000/XP 【软件名称】 chap709.exe 【下载地址】 本地下载 chap709.rar 【软件简介】 ASProtect 1.1b Registered 加密Win98的记事本。 【软件大小】 58.2K 【加壳方式】 ASProtect 1.1b Registered [SAC] -> Alexey Solodovnikov 【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享: -------------------------------------------------------------------------------- 【脱壳内容】 首先Peid查壳,为ASProtect 1.1b Registered [SAC] -> Alexey Solodovnikov,ASProtect 1.1b Registered 很少弄过,与现在的Asprotect1.2X SEH不同,不过也很容易。SEH异常全部是由13个精心设计的非法指令SEH组成的,这样就无法用模拟跟踪找Oep了。二哥脱壳没有什么耐心,喜欢快。先大概了解了一下程序开始脱壳。 OD载入程序,除了错误或有特权的指令外异常全部忽略,1.1b不检测OD,根本无需隐藏。 0040D001 > 60 pushad //外壳入口,F9运行。 0040D002 E9 95050000 jmp chap709.0040D59C 0040D007 F710 not dword ptr ds:[eax] 0040D009 0F0F ??? ; 未知命令 0040D00B 0F9F6C90 FC setg byte ptr ds:[eax edx*4-4] 0040D010 57 push edi 0040D011 C5540F CA lds edx, fword ptr ds:[edi ecx-36] 0040D015 4B dec ebx 0040D016 C5540F 12 lds edx, fword ptr ds:[edi ecx 12] 0040D01A EC in al, dx 0040D01B 3AAC90 CD540F92 cmp ch, byte ptr ds:[eax edx*4 920F54CD] 0040D022 CC int3 ............................................................. 第一次异常 0092FF94 8DC0 lea eax, eax ; 非法使用寄存器 0092FF96 EB 01 jmp short 0092FF99 0092FF98 68 648F0500 push 58F64 0092FF9D 0000 add byte ptr ds:[eax], al 0092FF9F 00EB add bl, ch 0092FFA1 02E8 add ch, al 0092FFA3 0158 68 add dword ptr ds:[eax 68], ebx 0092FFA6 98 cwde 0092FFA7 E5 92 in eax, 92 0092FFA9 0068 D0 add byte ptr ds:[eax-30], ch 0092FFAC FF92 00687CF5 call dword ptr ds:[edx F57C6800] 0092FFB2 92 xchg eax, edx 0092FFB3 0068 14 add byte ptr ds:[eax 14], ch ................................................................... 继续Shift F9 12次达第十三次也是最后一次异常。 0093053D 8DC0 lea eax, eax ; 非法使用寄存器 0093053F EB 01 jmp short 00930542 00930541 68 648F0500 push 58F64 00930546 0000 add byte ptr ds:[eax], al 00930548 00EB add bl, ch 0093054A 02E8 add ch, al 0093054C 0158 33 add dword ptr ds:[eax 33], ebx 0093054F C05A 59 59 rcr byte ptr ds:[edx 59], 59 00930553 64:8910 mov dword ptr fs:[eax], edx 00930556 68 78059300 push 930578 0093055B 8D45 F0 lea eax, dword ptr ss:[ebp-10] 0093055E E8 2D2CFFFF call 00923190 00930563 8D45 F8 lea eax, dword ptr ss:[ebp-8] ............................................................. ALT M 打开内存镜像。 内存镜像,项目 21 地址=00401000 大小=00004000 (16384.) Owner=chap709 00400000 区段= 包含=code //对这里下内存访问断点,Shift F9运行。 类型=Imag 01001002 访问=R 初始访问=RWE 004010CC 55 push ebp //到达Oep,用Loadpe脱壳吧。 004010CD 8BEC mov ebp, esp 004010CF 83EC 44 sub esp, 44 004010D2 56 push esi 004010D3 FF15 E4634000 call dword ptr ds:[4063E4] 004010D9 8BF0 mov esi, eax 004010DB 8A00 mov al, byte ptr ds:[eax] 004010DD 3C 22 cmp al, 22 004010DF 75 1B jnz short chap709.004010FC //往下看看IAT被加密了不少。 004010E1 56 push esi 004010E2 FF15 F4644000 call dword ptr ds:[4064F4] 004010E8 8BF0 mov esi, eax 004010EA 8A00 mov al, byte ptr ds:[eax] 004010EC 84C0 test al, al 004010EE 74 04 je short chap709.004010F4 004010F0 3C 22 cmp al, 22 004010F2 ^ 75 ED jnz short chap709.004010E1 004010F4 803E 22 cmp byte ptr ds:[esi], 22 004010F7 75 15 jnz short chap709.0040110E 004010F9 46 inc esi 004010FA EB 12 jmp short chap709.0040110E ........................................................... IAT修复 运行ImportREC,OEP填入10CC,自动搜索,获得输入信息,有111个指针没有修复,先用跟踪等级1修复98个,剩下的13个用等级3全部修复,正常运行。 火眼金精区段减肥,去除垃圾区段,重建PE。 这个需要一点PE知识,没有也不要紧,跟着一起学,积累经验。 备份好脱壳程序,区段减肥有时过量会导致程序无法运行。 这次区段减肥只是例子,大家要学会举一反三。 我们用OD同时载入未加密的Win98计事本,和脱壳程序。 Win98 记事本 本地下载 Notepad.rar Alt M打开内存镜像同步分析。 原程序内存镜像 地址 大小 Owner Section Contains 类型 访问 初始访问 映射为 003E0000 00002000 Map R R 00400000 00001000 NOTEPAD PE header Imag R RWE 00401000 00004000 NOTEPAD .text code Imag R RWE 00405000 00001000 NOTEPAD .data data Imag R RWE 00406000 00001000 NOTEPAD .idata imports Imag R RWE 00407000 00005000 NOTEPAD .rsrc resources Imag R RWE 0040C000 00001000 NOTEPAD .reloc relocations Imag R RWE Contains .text //代码段,我们反编译程序经常看到。 .data //数据快,程序初始化用。 .idata //输入表,现在加密壳搞破坏的对象,坏的输入表 |
请发表评论