首页
社区
课程
招聘
ASProtect 1.23 RC4 脱壳过程,各位看看哪里不对啊!!
发表于: 2004-10-6 22:03 8081

ASProtect 1.23 RC4 脱壳过程,各位看看哪里不对啊!!

2004-10-6 22:03
8081
破解过程:
用peid查壳,ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov
用od载入(我用的是flyODBG V1.10正式汉化修改版),在调试选项中,除了内存异常,其它都打钩,
用插件隐藏od,F9运行,程序会被断下来,下面一路按Shift+F9,直到下面的典型代码

00A739EC    3100                 xor dword ptr ds:[eax],eax                 ; 停在这
00A739EE    64:8F05 00000000     pop dword ptr fs:[0]                    ; 撤销SEH链
00A739F5    58                   pop eax
00A739F6    833D B07EA700 00     cmp dword ptr ds:[A77EB0],0
00A739FD    74 14                je short 00A73A13
00A739FF    6A 0C                push 0C
00A73A01    B9 B07EA700          mov ecx,0A77EB0
00A73A06    8D45 F8              lea eax,dword ptr ss:[ebp-8]
00A73A09    BA 04000000          mov edx,4
00A73A0E    E8 2DD1FFFF          call 00A70B40
00A73A13    FF75 FC              push dword ptr ss:[ebp-4]
00A73A16    FF75 F8              push dword ptr ss:[ebp-8]
00A73A19    8B45 F4              mov eax,dword ptr ss:[ebp-C]
00A73A1C    8338 00              cmp dword ptr ds:[eax],0
00A73A1F    74 02                je short 00A73A23
00A73A21    FF30                 push dword ptr ds:[eax]
00A73A23    FF75 F0              push dword ptr ss:[ebp-10]
00A73A26    FF75 EC              push dword ptr ss:[ebp-14]
00A73A29    C3                   retn                                         ;F2下断点

这段代码很好记,看第二行和第三行,典型的撤销SEH链的代码,这就意味下面肯定没有SEH为我们指路了,
只好自己走了,在
00A73A29    C3                   retn                                         ;F2下断点
这行用F2下断点,Shift+F9运行,断下来后F2取消断点,
此时看堆栈窗口
0012FF5C    00A862FC
0012FF60    00400000  DVDFab.00400000
0012FF64    5FBA9F6F
0012FF68    0012FFA4                                                     
0012FF6C    0012FF90
下硬件断点 在命令行中输入 hr 12ff68 或 打开内存,在12ff68处下硬件访问断点
F9运行来到

00A8648D   /EB 44                jmp short 00A864D3                      ; 在这行按F8跳转
00A8648F   |EB 01                jmp short 00A86492
00A86491   |9A 51579CFC BF00     call far 00BF:FC9C5751
00A86498   |0000                 add byte ptr ds:[eax],al
00A8649A   |00B9 00000000        add byte ptr ds:[ecx],bh
00A864A0   |F3:AA                rep stos byte ptr es:[edi]
00A864A2   |9D                   popfd
00A864A3   |5F                   pop edi
00A864A4   |59                   pop ecx
00A864A5   |C3                   retn

按一次F8,来到

00A864D3    03C3                 add eax,ebx                        ; DVDFab.00400000
00A864D5    BB 87010000          mov ebx,187                        ; 这行的地址,后面有用
00A864DA    0BDB                 or ebx,ebx
00A864DC    75 07                jnz short 00A864E5
00A864DE    894424 1C            mov dword ptr ss:[esp+1C],eax
00A864E2    61                   popad
00A864E3    50                   push eax
00A864E4    C3                   retn
00A864E5    E8 00000000          call 00A864EA
00A864EA    5D                   pop ebp
00A864EB    81ED 4DE14B00        sub ebp,4BE14D

这里就是stolen code部分了,ASProtect 1.23 RC4 在程序入口点偷了一段代码,因此找不到真正的oep,
记住mov ebx,187(不一定是187) 这行前面的地址,就把它当作oep了

下面用loadPE修正文件大小(correct ImageSize),dump full 存为dump.exe。然后把上面的这段stolen code部分
也要存下来,应此再 dump region,Address:A80000     Size:C000 ,保存为Region00A60000-00A7E000.dmp
然后用loadPE载入dump.exe,选区块(Sections),点右键,把Region00A60000-00A7E000.dmp添加进去,
修改VOffset=A80000-400000(基址)=680000,保存。保留重建PE中的选项只有验证PE(Validate PE)打勾

对刚才保存的dump.exe重建PE.

用ASPRDBGR载入DVDFab.exe(注意是原来的文件!)按两次(一般是两次)YES,出现Application paused!时
出现

AsprDbgr v1.0beta () Made by me... Manko.

  iEP=401000 (G:\破解\试炼场\DVDFab\DVDFab.exe)

    IAT Start: 459000                                           ()1
          End: 459AA8                                                               2
       Length: AA8                                                              3
      IATentry 459190 = A717A4 resolved as GetProcAddress
      IATentry 4591AC = A71CB8 resolved as GetCurrentProcess
      IATentry 4591C0 = A71C8C resolved as GetVersion
      IATentry 4591D0 = A71CC8 resolved as LockResource
      IATentry 459234 = A71C64 resolved as GetModuleHandleA
    11 invalid entries erased.
  Dip-Table at adress: A77AB4
    0 41FF9B 0 41FFDA 41FFA7 0 0 41FFE4 41FFF0 41FFFC 0 0 0 0
  Last SEH passed. (A739EE) Searching for signatures. Singlestepping to OEP!
    Call + OEP-jump-setup at: A85CE1 ( Code: E8000000 5D81ED )

打开ImportREC,选DVDFab.exe, 填入
oep=6864d5 (还记得mov ebx,187行的地址吗?这行的地址减去基址400000作为oep)
RVA=59000  (上面第一行减去基址)
大小=AA8  (第三行Length)
在选项中去掉新建输入表中的两个勾
然后整理抓取文件,保存为dump_.exe

我完全按以上方法脱壳,修复后程序不能运行,操作系统2003.以上步骤有错误吗?错误在哪里啊??请指教!!!!!!!!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (26)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
保存为Region00A60000-00A7E000.dmp
区域脱壳部分正确否?

BTW:有些脱壳后有暗桩
跟踪看看哪里出错
2004-10-6 23:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如何判断区域脱壳部分是否正确??
2004-10-7 02:21
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
00A864D5    BB 87010000          mov ebx,187                        ; 这行的地址,后面有用
00A864DA    0BDB                 or ebx,ebx
00A864DC    75 07                jnz short 00A864E5

明显的,Region00A60000-00A7E000没有包括这部分
2004-10-7 02:30
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
然后把上面的这段stolen code部分
也要存下来,应此再 dump region,Address:A80000     Size:C000
这里的大小 如何确定?
2004-10-7 21:59
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
lordpe区域脱壳就行了
2004-10-8 00:16
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
fly 老师
我已经确认以上步骤没有错误了
但程序还是不能运行!!

估计程序可能有暗桩,请您帮忙看一下好吗? 谢谢!!
这是我已脱壳并修复的程序
http://www.51bak.com/getfile.aspx?id=25421&yz=69553212

不知道这样是否违反了论坛的规定,如有请告知!我再通过另外的方式与您联系请教!
2004-10-8 05:28
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
链接无效
直接给原版程序链接就行了
2004-10-8 12:51
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
9
bp KiUserExcpet(
隐藏od,
经过20多多个SEH好想到26个

内存断点在code区段
在一直跟,就回到oep,!!
2004-10-8 18:51
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
看了你的脱壳文件
明显的某些函数被遗露
004023B5    FF25 C4515700       jmp dword ptr ds:[5751C4]
……
2004-10-9 02:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
应该怎么补上这些函数呢???

哪里不对呀?

我完全按照你的以壳脱壳的方法做的 而且代码几乎都一样的!

提示一下! 谢谢!
2004-10-9 17:23
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
上面已经说了
某些函数没有修复
2004-10-9 20:44
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
是RAV的地址不对吗??
我在IMPORT REC上显示的都是有效函数啊!

请FLY老师再提示一下!
2004-10-9 22:51
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
14
你再增大size
看看哪些函数上次没有得到
2004-10-9 23:15
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我增大SIZE后都是得到的一些无效指针

难道是哪些无效指针吗??
2004-10-9 23:31
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
16
004023B5    FF25 C4515700       jmp dword ptr ds:[5751C4]
你看看[5751C4]那些地方是什么

BTW:看点基础的东西吧
2004-10-10 12:56
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
JMP到5751C4后OD显示一片空白!  没有代码了!

我也想看基础的东西啊  但无从下手
指点一下?
2004-10-11 04:08
0
雪    币: 229
活跃值: (143)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
这里应该需要填入函数~!
2004-10-11 12:46
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
其中有些数据应该改一下
1、应再 dump region,Address:A80000     Size:8000 !!!!
                                          ^^^^
2、oep=68000!!!!!
3、最后我们只用OD加载脱壳修复后的程序,现在的OEP是0680000,修改其入口代码为:

代码:
-------------------------------------------------------------------------------------------------------------
06800000    BB CC050000     MOV     EBX, 187
06800006    E9 3A010000     JMP     00A864E5   
-------------------------------------------------------------------------------------------------------------
2004-10-11 15:29
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
to lucktiger :
那里我已修复,还是不行

TO:FLY
好像就是缺少函数,因为有几个应该调用的DLL在修复时没有显示

接下来应该怎么办呢?  望FLY再指点一下!
2004-10-13 13:14
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
21
你直接在ImportREC里填入RVA=1751C0  SIZE=100
看看能得到什么
2004-10-13 13:29
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
只显示了 MSVCRT.DLL这一个!

请明示!!  为了这个壳我搞了好多天啦!
2004-10-13 13:33
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
啊  
是不是应该把
004023B5    FF25 C4515700       jmp dword ptr ds:[5751C4]
改成
004023B5    FF25 C4515700       jmp dword ptr ds:[57523C]

???
2004-10-13 13:37
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
还是没明白 FLY老师的意思!!

请明示!
2004-10-13 14:24
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
clide2000 写过教程并作了一个动画 找找吧
2004-10-13 16:06
0
游客
登录 | 注册 方可回帖
返回
//