| 
注册时间2005-7-22
阅读权限20
最后登录1970-1-1UID2466 以武会友  
 
 该用户从未签到 | 
 
| 【调试环境】:WinXP、PEiD、ODbyDYK v1.10、ImportREC1.6 Final 
 【学习目的】:手动脱ASProtect 1.2 / 1.2c-> Alexey Solodovnikov壳
 
 【目标软件】:ABC Amber Excel Converter V1.26
 
 【下载连接】:(自己去搜索)
 
 【作者声明】:我是一只小菜鸟,偶得一点心得,愿与大家分享
 
 ------------------------------------------------------------------------------------------
 
 1.前言
 
 前天在一个论坛看到一篇有关该软件脱壳的教程,想下来学习一下,在那个教程里是用
 ASProtect 1.2x - 1.3x [已经注册] -> Alexey Solodovnikov加的壳(ABC Amber Excel
 Converter 1.20 多国语言),这几天在学习脱ASProtect壳,就下来看了一下,没想到这
 个是ASProtect 1.2 / 1.2c-> Alexey Solodovnikov的壳,有点失望。不过琢磨了一下,发
 现了一个可以快速脱ASProtect 1.2 / 1.2c-> Alexey Solodovnikov的方法,大家遇到这个
 加壳方式时不防用来试试,是否通用,我也不知道,但是在这个软件是可以的。
 
 2.脱壳过程
 
 OD载入程序,忽略所有异常,再添加以下几个异常C0000005(ACCESS VIOLATION)、C000001D(ILLEGAL
 INSTRUCTION)、C000001E(INVALID LOCK SEQUENCE)、C0000096(PRIVILEGED INSTRUCTION),请检查
 自己的OD设置。
 
 入口代码:
 
 00401000 a>  68 01C06B00       push abcexcel.006BC001
 00401005     C3                retn---------------------------F8下来到这里,看寄存器ESP=12ffc0
 00401006     A2 8034479C       mov byte ptr ds:[9C473480],al
 0040100B     E7 9E             out 9E,eax
 0040100D     49                dec ecx
 0040100E     3C 90             cmp al,90
 00401010     E0 73             loopdne short abcexcel.00401085
 00401012     90                nop
 00401013     21E8              and eax,ebp
 
 于是在命令行下:hr 12ffc0       F9运行
 
 006BC002     E8 1B000000       call abcexcel.006BC022--------第一次硬件中断在这里
 006BC007   - E9 FC8DB50F       jmp 10214E08
 006BC00C     06                push es
 006BC00D     0000              add byte ptr ds:[eax],al
 006BC00F     8BFE              mov edi,esi
 006BC011     B9 97000000       mov ecx,97
 006BC016     AD                lods dword ptr ds:[esi]
 006BC017     35 78563412       xor eax,12345678
 006BC01C     AB                stos dword ptr es:[edi]
 006BC01D     49                dec ecx
 006BC01E   ^ 75 F6             jnz short abcexcel.006BC016
 006BC020     EB 04             jmp short abcexcel.006BC026
 006BC022     5D                pop ebp
 006BC023     45                inc ebp
 006BC024     55                push ebp
 006BC025     C3                retn
 
 继续F9运行
 
 
 00CDA213     8901              mov dword ptr ds:[ecx],eax
 00CDA215     03C3              add eax,ebx
 00CDA217     894424 1C         mov dword ptr ss:[esp+1C],eax
 00CDA21B     61                popad ---------------------第二次硬件中断在这里
 00CDA21C     FFE0              jmp eax-----★飞向光明顶(这个词很cool,借用一下)
 00CDA21E     0060 E8           add byte ptr ds:[eax-18],ah
 00CDA221     06                push es
 00CDA222     0000              add byte ptr ds:[eax],al
 00CDA224     008B 642408EB     add byte ptr ds:[ebx+EB082464],cl
 00CDA22A     0C 33             or al,33
 00CDA22C     F664FF 36         mul byte ptr ds:[edi+edi*8+36]
 00CDA230     64:8926           mov dword ptr fs:[esi],esp
 00CDA233     FE06              inc byte ptr ds:[esi]
 00CDA235   ^ EB E8             jmp short 00CDA21F
 
 
 第二次硬件中断后,F8两下就到OEP了:
 
 0062A61C     55                push ebp-----------------OEP
 0062A61D     8BEC              mov ebp,esp
 0062A61F     81C4 E8FEFFFF     add esp,-118
 0062A625     53                push ebx
 0062A626     56                push esi
 0062A627     33C0              xor eax,eax
 0062A629     8945 E8           mov dword ptr ss:[ebp-18],eax
 0062A62C     8945 F0           mov dword ptr ss:[ebp-10],eax
 0062A62F     8945 EC           mov dword ptr ss:[ebp-14],eax
 0062A632     B8 3C9F6200       mov eax,abcexcel.00629F3C
 0062A637     E8 40DDDDFF       call abcexcel.0040837C
 0062A63C     33C0              xor eax,eax
 0062A63E     55                push ebp
 0062A63F     68 06A76200       push abcexcel.0062A706
 0062A644     64:FF30           push dword ptr fs:[eax]
 0062A647     64:8920           mov dword ptr fs:[eax],esp
 0062A64A     8D55 EC           lea edx,dword ptr ss:[ebp-14]
 
 用OD插件直接dump出来,用ImportREC修复便可了,OEP:22A61C(PEID查看dump出来文件的数值)
 “自动搜索”,先Level 1修复,再ASProtect 1.22插件修复即可。
 
 还是运行修复后的程序,出错!具体的修复方法参考---密界脱壳文集第二版[1]---51Crack的
 文章《菜鸟也脱壳--ABC Amber CHM Converter 1.11脱壳》,修复后的程序可以正常运行。
 | 
 |