手动脱壳入门第十九篇ASProtect 1.1
番茄系统家园 · 2022-03-12 04:52:36
【脱文标题】 手动脱壳入门第十九篇ASProtect 1.1
【脱文作者】 weiyi75[Dfcg]
【作者邮箱】 weiyi75@sohu.com
【作者主页】 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 >60pushad //外壳入口,F9运行。
0040D002E9 95050000 jmp chap709.0040D59C
0040D007F710not dword ptr ds:[eax]
0040D0090F0F???; 未知命令
0040D00B0F9F6C90 FC setg byte ptr ds:[eax edx*4-4]
0040D01057push edi
0040D011C5540F CA lds edx, fword ptr ds:[edi ecx-36]
0040D0154Bdec ebx
0040D016C5540F 12 lds edx, fword ptr ds:[edi ecx 12]
0040D01AECin al, dx
0040D01B3AAC90 CD540F92 cmp ch, byte ptr ds:[eax edx*4 920F54CD]
0040D022CCint3
.............................................................
第一次异常
0092FF948DC0lea eax, eax ; 非法使用寄存器
0092FF96EB 01 jmp short 0092FF99
0092FF9868 648F0500 push 58F64
0092FF9D0000add byte ptr ds:[eax], al
0092FF9F00EBadd bl, ch
0092FFA102E8add ch, al
0092FFA30158 68 add dword ptr ds:[eax 68], ebx
0092FFA698cwde
0092FFA7E5 92 in eax, 92
0092FFA90068 D0 add byte ptr ds:[eax-30], ch
0092FFACFF92 00687CF5 call dword ptr ds:[edx F57C6800]
0092FFB292xchg eax, edx
0092FFB30068 14 add byte ptr ds:[eax 14], ch
...................................................................
继续Shift F9 12次达第十三次也是最后一次异常。
0093053D8DC0lea eax, eax ; 非法使用寄存器
0093053FEB 01 jmp short 00930542
0093054168 648F0500 push 58F64
009305460000add byte ptr ds:[eax], al
0093054800EBadd bl, ch
0093054A02E8add ch, al
0093054C0158 33 add dword ptr ds:[eax 33], ebx
0093054FC05A 59 59rcr byte ptr ds:[edx 59], 59
0093055364:8910 mov dword ptr fs:[eax], edx
0093055668 78059300 push 930578
0093055B8D45 F0 lea eax, dword ptr ss:[ebp-10]
0093055EE8 2D2CFFFF call 00923190
009305638D45 F8 lea eax, dword ptr ss:[ebp-8]
.............................................................
ALT M 打开内存镜像。
内存镜像,项目 21
地址=00401000
大小=00004000 (16384.)
Owner=chap70900400000
区段=
包含=code //对这里下内存访问断点,Shift F9运行。
类型=Imag 01001002
访问=R
初始访问=RWE
004010CC55push ebp//到达Oep,用Loadpe脱壳吧。
004010CD8BECmov ebp, esp
004010CF83EC 44 sub esp, 44
004010D256push esi
004010D3FF15 E4634000 call dword ptr ds:[4063E4]
004010D98BF0mov esi, eax
004010DB8A00mov al, byte ptr ds:[eax]
004010DD3C 22 cmp al, 22
004010DF75 1B jnz short chap709.004010FC //往下看看IAT被加密了不少。
004010E156push esi
004010E2FF15 F4644000 call dword ptr ds:[4064F4]
004010E88BF0mov esi, eax
004010EA8A00mov al, byte ptr ds:[eax]
004010EC84C0test al, al
004010EE74 04 je short chap709.004010F4
004010F03C 22 cmp al, 22
004010F2^ 75 ED jnz short chap709.004010E1
004010F4803E 22 cmp byte ptr ds:[esi], 22
004010F775 15 jnz short chap709.0040110E
004010F946inc esi
004010FAEB 12 jmp short chap709.0040110E
...........................................................
IAT修复
运行ImportREC,OEP填入10CC,自动搜索,获得输入信息,有111个指针没有修复,先用跟踪等级1修复98个,剩下的13个用等级3全部修复,正常运行。
火眼金精区段减肥,去除垃圾区段,重建PE。
这个需要一点PE知识,没有也不要紧,跟着一起学,积累经验。
备份好脱壳程序,区段减肥有时过量会导致程序无法运行。
这次区段减肥只是例子,大家要学会举一反三。
我们用OD同时载入未加密的Win98计事本,和脱壳程序。
Win98 记事本
本地下载
Notepad.rar
Alt M打开内存镜像同步分析。
原程序内存镜像
地址 大小 OwnerSectionContains类型 访问初始访问映射为
003E0000 00002000 MapR R
00400000 00001000 NOTEPAD PE header Imag R RWE
00401000 00004000 NOTEPAD.textcodeImag R RWE
00405000 00001000 NOTEPAD.datadataImag R RWE
00406000 00001000 NOTEPAD.idata imports Imag R RWE
00407000 00005000 NOTEPAD.rsrcresources Imag R RWE
0040C000 00001000 NOTEPAD.reloc relocations Imag R RWE
Contains
.text //代码段,我们反编译程序经常看到。
.data //数据快,程序初始化用。
.idata//输入表,现在加密壳搞破坏的对象,坏的输入表
免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/wlaq/192044mCxQHr.html。
