首页
社区
课程
招聘
[旧帖] [原创]脱壳之ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov 0.00雪花
发表于: 2008-4-23 22:00 8351

[旧帖] [原创]脱壳之ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov 0.00雪花

2008-4-23 22:00
8351
【破文标题】ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov 之脱壳
【破文作者】失落的剑
【作者邮箱】by110@qq.com
【破解工具】OD、Import REC、LordPE  
【破解平台】WINXP
【软件名称】SoWorker_cn_hero
【软件大小】1.66MB
【原版下载】ftp://219.239.138.183/SoWorker_cn_hero.exe
【保护方式】ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov
【软件简介】一个游戏外挂,多的不提了
【破解声明】感谢compiler大虾与birdcfly大虾的鼎力支持与帮助,特此写了以下文字教程,以供交流
——————————————————————————————————————————————
首先隐藏OD,这点就不用多说了,没有插件的自己去看雪主页下载去。

OD不忽略内存访问异常,其余全忽略,载入程序:
程序开始处:
00401000 >  68 01C06B00     push    006BC001
00401005    E8 01000000     call    0040100B
0040100A    C3              retn
0040100B    C3              retn
0040100C  - 7F D6           jg      short 00400FE4
0040100E    4B              dec     ebx
0040100F    6E              outs    dx, byte ptr es:[edi]
00401010    B0 E2           mov     al, 0E2
00401012    A2 DF47AC06     mov     byte ptr [6AC47DF], al
00401017    BA 6AE25969     mov     edx, 6959E26A
0040101C    1069 EE         adc     byte ptr [ecx-12], ch

经过26次的SHIFT+F9到达此处(因为程序按27就运行了,小常识不必多说.)
00C839EC    3100            xor     dword ptr [eax], eax
00C839EE    64:8F05 0000000>pop     dword ptr fs:[0]
00C839F5    58              pop     eax
00C839F6    833D B07EC800 0>cmp     dword ptr [C87EB0], 0
00C839FD    74 14           je      short 00C83A13
00C839FF    6A 0C           push    0C
00C83A01    B9 B07EC800     mov     ecx, 0C87EB0
00C83A06    8D45 F8         lea     eax, dword ptr [ebp-8]
00C83A09    BA 04000000     mov     edx, 4
00C83A0E    E8 2DD1FFFF     call    00C80B40
00C83A13    FF75 FC         push    dword ptr [ebp-4]
00C83A16    FF75 F8         push    dword ptr [ebp-8]
00C83A19    8B45 F4         mov     eax, dword ptr [ebp-C]
00C83A1C    8338 00         cmp     dword ptr [eax], 0
00C83A1F    74 02           je      short 00C83A23
00C83A21    FF30            push    dword ptr [eax]
00C83A23    FF75 F0         push    dword ptr [ebp-10]
00C83A26    FF75 EC         push    dword ptr [ebp-14]
00C83A29    C3              retn<------------------------------此处F2断点,继续SHIFT+F9
00C83A2A    5F              pop     edi
00C83A2B    5E              pop     esi
00C83A2C    5B              pop     ebx
看到堆栈区为:
0012FF5C   00C94B78
0012FF60   00400000  SoWorker.00400000
0012FF64   DFA61663
0012FF68   0012FFA4  
下断点 hr 0012ff68
取消00C83A29    C3              retn处断点继续...
按F9---来到了这里
00C96642   /EB 44           jmp     short 00C96688          此处按F8
00C96644   |EB 01           jmp     short 00C96647
00C96646   |9A 51579CFC BF0>call    far 00BF:FC9C5751
00C9664D   |0000            add     byte ptr [eax], al
00C9664F   |00B9 00000000   add     byte ptr [ecx], bh
00C96655   |F3:AA           rep     stos byte ptr es:[edi]
继续按F8 跟入
00C96688    03C3            add     eax, ebx                         ; SoWorker.00400000
00C9668A    BB CD000000     mov     ebx, 0CD
00C9668F    0BDB            or      ebx, ebx
00C96691    75 07           jnz     short 00C9669A
00C96693    894424 1C       mov     dword ptr [esp+1C], eax
00C96697    61              popad
00C96698    50              push    eax
00C96699    C3              retn
00C9669A    E8 00000000     call    00C9669F
00C9669F    5D              pop     ebp
00C966A0    81ED 4DE14B00   sub     ebp, 4BE14D
00C966A6    8D85 F2E04B00   lea     eax, dword ptr [ebp+4BE0F2]
00C966AC    8D8D 94E14B00   lea     ecx, dword ptr [ebp+4BE194]
00C966B2    03CB            add     ecx, ebx
00C966B4    8941 01         mov     dword ptr [ecx+1], eax
00C966B7    8D85 36E14B00   lea     eax, dword ptr [ebp+4BE136]
00C966BD    8D8D FAE04B00   lea     ecx, dword ptr [ebp+4BE0FA]
00C966C3    8901            mov     dword ptr [ecx], eax
00C966C5    B8 5E140000     mov     eax, 145E
00C966CA    8D8D FFE04B00   lea     ecx, dword ptr [ebp+4BE0FF]
00C966D0    8901            mov     dword ptr [ecx], eax
00C966D2    8D8D 94E14B00   lea     ecx, dword ptr [ebp+4BE194]
00C966D8    8D85 94F34B00   lea     eax, dword ptr [ebp+4BF394]
00C966DE    51              push    ecx
00C966DF    50              push    eax
00C966E0    E8 76FFFFFF     call    00C9665B
00C966E5    61              popad
00C966E6    F2:             prefix repne:  <-------------------------这里不要按F8了,改按F7了跟入...
跟至
00C966EA   /64:EB 02        jmp     short 00C966EF
00C966ED   |CD20 EB01E98D   vxdcall 8DE901EB
00C966F3    64:24 D2        and     al, 0D2
00C966F6    83C4 2A         add     esp, 2A
00C966F9    F3:             prefix rep:
00C966FA    EB 02           jmp     short 00C966FE
00C966FC    CD20 56EB02CD   vxdjump CD02EB56
00C96702    208F 442400EB   and     byte ptr [edi+EB002444], cl
00C96708    01E8            add     eax, ebp
00C9670A    3E:EB 01        jmp     short 00C9670E
一直按F7直到.......↓
00C96774    55              push    ebp   
00C96775    8BEC            mov     ebp, esp
00C96777    6A FF           push    -1
00C96779    68 A06C5300     push    536CA0
00C9677E    68 00124F00     push    4F1200
00C96783    64:A1 00000000  mov     eax, dword ptr fs:[0]
把以上六行代码复制二进制添加一个文档中
我的二进制代码为    55 8B EC 6A FF 68 A0 6C 53 00 68 00 12 4F 00 64 A1 00 00 00 00
继续F7跟至:
00C9678C    50              push    eax
00C9678D    64:8925 0000000>mov     dword ptr fs:[0], esp
00C96794    83EC 58         sub     esp, 58
以上三行代码复制二进制继续添加文档中   我的是:50 64 89 25 00 00 00 00 83 EC 58
继续F7跟至:00C9679A    53              push    ebx   并复制二进制代码添加文档 我的是53
继续F7  至: 00C9679E    56              push    esi   并复制二进制代码添加文档 我的是56
继续F7  至:00C967A2    57              push    edi                              ; ntdll.7C930738
            00C967A3    8965 E8         mov     dword ptr [ebp-18], esp
并复制二进制代码添加文档  
OK,整理以上二进制代码得到
55 8B EC 6A FF 68 A0 6C 53 00 68 00 12 4F 00 64 A1 00 00 00 00
50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8   先把这些二进制代码复制上,下面有用^_^
OK,保存好以上二进制代码.继续F7至
00C96647    51              push    ecx    此处按F8
00C96648    57              push    edi
00C96649    9C              pushfd
00C9664A    FC              cld
00C9664B    BF 8866C900     mov     edi, 0C96688
00C96650    B9 5E140000     mov     ecx, 145E
00C96655    F3:AA           rep     stos byte ptr es:[edi]
00C96657    9D              popfd
00C96658    5F              pop     edi
00C96659    59              pop     ecx
F8至此处:
004EBE8F    FF15 9C525200   call    dword ptr [52529C] 跟到这里就不要跟了,,鼠标滑轮向上拉..
004EBE95    33D2            xor     edx, edx                         ; ntdll.KiFastSystemCallRet
004EBE97    8AD4            mov     dl, ah
004EBE99    8915 CC5B6700   mov     dword ptr [675BCC], edx
004EBE9F    8BC8            mov     ecx, eax
004EBEA1    81E1 FF000000   and     ecx, 0FF
004EBEA7    890D C85B6700   mov     dword ptr [675BC8], ecx
大家看到了吧,这就是真的程序入口
——————————————————————————————
004EBE64    C3              retn
004EBE65    33C0            xor     eax, eax
004EBE67  ^ EB F8           jmp     short 004EBE61
004EBE69    0000            add     byte ptr [eax], al   (真正的OEP)从这里
004EBE6B    0000            add     byte ptr [eax], al
004EBE6D    0000            add     byte ptr [eax], al
004EBE6F    0000            add     byte ptr [eax], al
004EBE71    0000            add     byte ptr [eax], al
004EBE73    0000            add     byte ptr [eax], al
004EBE75    0000            add     byte ptr [eax], al
004EBE77    0000            add     byte ptr [eax], al
004EBE79    0000            add     byte ptr [eax], al
004EBE7B    0000            add     byte ptr [eax], al
004EBE7D    0000            add     byte ptr [eax], al
004EBE7F    0000            add     byte ptr [eax], al
004EBE81    0000            add     byte ptr [eax], al
004EBE83    0000            add     byte ptr [eax], al
004EBE85    0000            add     byte ptr [eax], al
004EBE87    0000            add     byte ptr [eax], al
004EBE89    0000            add     byte ptr [eax], al
004EBE8B    0000            add     byte ptr [eax], al
004EBE8D    0000            add     byte ptr [eax], al   至这里  圈上然后点二进制粘贴(刚才不是叫你复制整理好的二进制代码了吗)
004EBE8F    FF15 9C525200   call    dword ptr [52529C]
004EBE95    33D2            xor     edx, edx                         ; ntdll.KiFastSystemCallRet
004EBE97    8AD4            mov     dl, ah
004EBE99    8915 CC5B6700   mov     dword ptr [675BCC], edx
004EBE9F    8BC8            mov     ecx, eax
看到了吧  看看我的粘贴好的代码:
004EBE64    C3              retn
004EBE65    33C0            xor     eax, eax
004EBE67  ^ EB F8           jmp     short 004EBE61
004EBE69    55              push    ebp     <------------左键单击此处,转换为新的EIP
004EBE6A    8BEC            mov     ebp, esp
004EBE6C    6A FF           push    -1
004EBE6E    68 A06C5300     push    00536CA0
004EBE73    68 00124F00     push    004F1200
004EBE78    64:A1 00000000  mov     eax, dword ptr fs:[0]
004EBE7E    50              push    eax
004EBE7F    64:8925 0000000>mov     dword ptr fs:[0], esp
004EBE86    83EC 58         sub     esp, 58
004EBE89    53              push    ebx
004EBE8A    56              push    esi
004EBE8B    57              push    edi
004EBE8C    8965 E8         mov     dword ptr [ebp-18], esp
004EBE8F    FF15 9C525200   call    dword ptr [52529C]
004EBE95    33D2            xor     edx, edx                         ; ntdll.KiFastSystemCallRet
004EBE97    8AD4            mov     dl, ah
004EBE99    8915 CC5B6700   mov     dword ptr [675BCC], edx
004EBE9F    8BC8            mov     ecx, eax
之后打开工具LoadPE选择外挂程序   选择纠正文件大小  之后点完全脱壳,保存默认文件名dumped就行了  显示脱壳成功,关闭LoadPE  
在004EBE69    55              push    ebp 处右键选择用olly pump脱壳调试进程  
这步要求复制入口点地址后的修正为后的代码就可以了,我的是EBE69  ^-^
打开Import REC工具选择外挂程序  在(需要的IAT栏中)把OEP改为刚刚复制的EBE69代码,之后点自动查找IAT,获取输入表,点显示无效的
之后显示出一些有蓝色地址的代码    右键-->跟踪级别1(反汇编)
现在已经把大多数的地址修改好了,还有一个地址需要用插件修复,继续
单击显示无效的   右键-->插件跟踪-->选择ASProtect 1.22   OK
再点一下显示无效的,呵呵,是不是没有显示错误的地址啊  之后点修复转储文件把之前保存的dumped打开就可以了  OK脱壳完成
用PEID查一查,是不是显示VC++编写的啊.由于是本菜鸟第一次写教程,一定有不如意之处,多多担待..
以上的方法是birdcfly大虾教我的,也是我唯一会手动脱的壳,再一次感谢birdcfly大虾。同样感谢compiler大虾的帮助.
由于小弟才疏学浅,把壳脱了,脱壳后的外挂也没弄明白破解的方法,希望哪位好心的大大帮助我一下,把外挂破掉,小弟感激不尽。
小弟承诺,以后只要我会的,一定会毫无保留地写好教程供大家交流..
另外,小弟想找一位师傅,好好学本事,小弟的QQ是252048984  

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来我写的真是挺垃圾的,都没有人回应,不过没关系,下次继续努力
2008-4-25 20:22
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
经过26次的SHIFT+F9到达此处(因为程序按27就运行了,小常识不必多说.)
純屬誤人子弟!!!!
2008-4-26 01:38
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
貌似三人行教程脱壳的笔记
2008-4-26 02:52
0
雪    币: 250
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
stripper
不用这么麻烦
2008-4-26 18:56
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
经过26次的SHIFT+F9到达此处(因为程序按27就运行了,小常识不必多说.)
最關鍵的地方。。不說原因。。。其餘說的全是白費。。。
2008-4-26 23:38
0
雪    币: 213
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
stripper 有些版本脱不掉的!
2008-4-27 09:15
0
雪    币: 297
活跃值: (27)
能力值: ( LV13,RANK:380 )
在线值:
发帖
回帖
粉丝
8
the truth
2008-4-27 09:30
0
雪    币: 213
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
有NP保护的程序,是不是不能这样脱?
我命令HR 断点下了,F9执行后
程序直接就终止了

知道的大牛简单的说下
谢谢先了~~`
2008-4-27 10:43
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
呵,我就是这种脱壳的方法,什么误人子弟,纯属放屁,爱TMD学不学,少在这放屁
2008-5-5 19:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不知道ESP能不能搞定哦...
2008-5-5 19:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不知道ESP能不能搞定哦...
2008-5-5 20:07
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我也是个菜鸟啊,这种方法还是别人教我的,我也是照葫芦画瓢,不过还真能把壳脱掉,我看了别人的贴子,发现有些地方写的不详细,没脱掉,所以我自己就写一个,新手照我说的一步一步做肯定能把壳脱掉
2008-5-6 13:19
0
游客
登录 | 注册 方可回帖
返回
//