首页
社区
课程
招聘
ACProtect脱壳问题
发表于: 2005-7-31 17:17 6576

ACProtect脱壳问题

2005-7-31 17:17
6576
在学习ACProtect脱壳――同益起名大师 V3.36 的时候第三步
三、OEP Stolen Code下内存访问断点应该
004067F4    53              push ebx
//中断在这里,取消断点
004067F5    8BD8            mov ebx,eax
004067F7    33C0            xor eax,eax
004067F9    A3 9CB05700     mov dword ptr ds:[57B09C],eax
但我怎么也到不了,偶尔到了一次,下次重新来过同样步骤到这里就被卡住了,我是到下面这里
0068FCE3    FFB5 30FE4000   push dword ptr ss:[ebp+40FE30]
0068FCE9    50              push eax
0068FCEA    8B85 00014100   mov eax,dword ptr ss:[ebp+410100]
0068FCF0    0FB600          movzx eax,byte ptr ds:[eax]
0068FCF3    83E8 33         sub eax,33

OD提示被调试的程序无法处理异常

是不是ACProtect有什么暗脏,检测是否调试过程序,望大虾指点

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
ACProtect的anti以前有过分析
精华6里面看看
2005-7-31 17:23
0
雪    币: 308
活跃值: (362)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
呵呵,再看看
2005-7-31 17:28
0
雪    币: 308
活跃值: (362)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
4
这个壳有碰到新问题了,我把我的过程叙述如下,请大虾指点

第一壳中壳的IAT和第二搞定输入表和fly大侠的步骤一样,接下来我要避过反跟踪,我的机子不避过反跟踪不能往下走

第一处反跟踪

在第一步第一次Ctrl+G前往GetModuleHandleA下内存断点
77E5AD86 >  837C24 04 00    cmp dword ptr ss:[esp+4],0
77E5AD8B    0F84 37010000   je kernel32.77E5AEC8
77E5AD91    FF7424 04       push dword ptr ss:[esp+4]
77E5AD95    E8 F8050000     call kernel32.77E5B392
77E5AD9A    85C0            test eax,eax
77E5AD9C    74 08           je short kernel32.77E5ADA6
77E5AD9E    FF70 04         push dword ptr ds:[eax+4]
77E5ADA1    E8 27060000     call kernel32.GetModuleHandleW
77E5ADA6    C2 0400         retn 4                        ;返回这里

这时堆栈处
0012FF98   0068E9FA  返回到 GoodName.0068E9FA
0012FF9C   0068AF5C  ASCII "KERNEL32.DLL"

在命令行dd 0068af5c转存处来到
0068AF5C  4E52454B

在转存处Ctrl+B搜索Ollydbg来到

0068C7A0  796C6C4F
0068C7A4  00676244  GoodName.00676244

Ctrl+B编辑ASCII码Ollydbg为heheheh

第一处反跟踪解除

第二处反跟踪

在fly大侠的ACProtect脱壳――同益起名大师 V3.36 的二、搞定输入表Dump出来
后直接在内存处00401000处下内存访问断点,我这里还要先解除反跟踪

Ctrl+G前往Process32First

77E95C5B >  55              push ebp
77E95C5C    8BEC            mov ebp,esp         ;在这里下内存访问断点,Shift+F9运行后返回用户代码
77E95C5E    81EC 2C020000   sub esp,22C
77E95C64    56              push esi
77E95C65    8B75 0C         mov esi,dword ptr ss:[ebp+C]
77E95C68    85F6            test esi,esi
77E95C6A    0F84 94000000   je kernel32.77E95D04
77E95C70    813E 28010000   cmp dword ptr ds:[esi],128
77E95C76    0F82 88000000   jb kernel32.77E95D04

0068CA97   /EB 17           jmp short GoodName.0068CAB0  ;返回到这里,F8走

一直走到
0068CCA0    813F 434D442E   cmp dword ptr ds:[edi],2E444D43  ;比较EXE前是否是CMD,修改[EDI]为2E444D43
0068CCA6    74 3B           je short GoodName.0068CCE3     ;改位jmp

这时第二个反跟踪解除,Alt+M 打开内存查看窗口,在401000第二区段上设置内存访问断点,Shift+F9运行就可来到fly大侠的第三步OEP Stolen Code

004067F4    53              push ebx       ;中断在这里
004067F5    8BD8            mov ebx,eax
004067F7    33C0            xor eax,eax
004067F9    A3 9CB05700     mov dword ptr ds:[57B09C],eax

第三个反跟踪

我这里如果Ctrl+F9返回0069766A有会出错,经跟踪发现到004067F4后下面的
0040682E    E8 9DD7FFFF     call GoodName.00403FD0    ;这里动了手脚

F7跟进
00403FD0    C705 14005800 1>mov dword ptr ds:[580014],GoodName.0040>  ;跟入这里,F8走
00403FDA    C705 18005800 1>mov dword ptr ds:[580018],GoodName.0040>
00403FE4    A3 40065800     mov dword ptr ds:[580640],eax
00403FE9    33C0            xor eax,eax
00403FEB    A3 44065800     mov dword ptr ds:[580644],eax
00403FF0    8915 48065800   mov dword ptr ds:[580648],edx
00403FF6    8B42 04         mov eax,dword ptr ds:[edx+4]
00403FF9    A3 30005800     mov dword ptr ds:[580030],eax
00403FFE    E8 C5FEFFFF     call GoodName.00403EC8
00404003    C605 38005800 0>mov byte ptr ds:[580038],0
0040400A    E8 61FFFFFF     call GoodName.00403F70     ;跟进
0040400F    C3              retn

00403F70    55              push ebp                   ;进到这里
00403F71    8BEC            mov ebp,esp
00403F73    53              push ebx
00403F74    56              push esi
00403F75    57              push edi
00403F76    A1 40065800     mov eax,dword ptr ds:[580640]
00403F7B    85C0            test eax,eax
00403F7D    74 4B           je short GoodName.00403FCA
00403F7F    8B30            mov esi,dword ptr ds:[eax]
00403F81    E8 90942700     call GoodName.0067D416
00403F86    33D2            xor edx,edx
00403F88    55              push ebp
00403F89    68 B63F4000     push GoodName.00403FB6
00403F8E    64:FF32         push dword ptr fs:[edx]
00403F91    64:8922         mov dword ptr fs:[edx],esp
00403F94    3BF3            cmp esi,ebx
00403F96    7E 14           jle short GoodName.00403FAC      ;改这里为jmp
00403F98    8B04DF          mov eax,dword ptr ds:[edi+ebx*8]
00403F9B    43              inc ebx
00403F9C    891D 44065800   mov dword ptr ds:[580644],ebx
00403FA2    85C0            test eax,eax
00403FA4    74 02           je short GoodName.00403FA8
00403FA6    FFD0            call eax
00403FA8    3BF3            cmp esi,ebx
00403FAA  ^ 7F EC           jg short GoodName.00403F98
00403FAC    33C0            xor eax,eax
00403FAE    5A              pop edx
00403FAF    59              pop ecx
00403FB0    59              pop ecx
00403FB1    64:8910         mov dword ptr fs:[eax],edx
00403FB4    EB 14           jmp short GoodName.00403FCA
00403FB6  ^ E9 59F9FFFF     jmp GoodName.00403914
00403FBB    E8 50FFFFFF     call GoodName.00403F10
00403FC0    E8 27FDFFFF     call GoodName.00403CEC
00403FC5    E8 76FDFFFF     call GoodName.00403D40
00403FCA    5F              pop edi
00403FCB    5E              pop esi
00403FCC    5B              pop ebx
00403FCD    5D              pop ebp
00403FCE    C3              retn

改了00403F96这里后就可回到0069766A处了,第三个反跟踪处理完了,然后Ctrl+F9返回0069766A后继续在401000第二区段上设置内存访问断点,Shift+F9运行可以回到
0057A4BD    E8 72C5E8FF     call 00406A34
//中断这里
然后根据FLY大侠OEP处Stolen Code修复,dumped.exe

到这里我又被卡住了,载入dumped.exe后的程序这里访问违反是在

0057A4C8    E8 8FC6E8FF     call dumped.00406B5C  ;F7进入

00406B5C  - FF25 50135800   jmp dword ptr ds:[581350]    ;ds:[00581350]=001820FE

F9运行提示访问违反:正在执行[001820FE],呵呵跟fly大侠的不一样,是不是还有错的地方,请大虾们指点.
2005-8-6 10:37
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
1、我用的是修改版OllyDBG,所以可以直接调试
2、输入表修复问题,修正ImportTable RVA没有?
2005-8-6 11:52
0
雪    币: 308
活跃值: (362)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
6
我正是用fly大侠您的修改版第二版,还是被检测到

确实忘记修正ImportTable RVA,
Import Table RVA=00181000
             size=400
修正后设置OllyDbg不忽略内存访问异常选项,载入dumped.exe
F9运行
0047650D    80BB A4000000 0>cmp byte ptr ds:[ebx+A4],0     ;停在这里
00476514    74 3D           je short dumped.00476553
00476516    8D55 FC         lea edx,dword ptr ss:[ebp-4]

下面提示
访问违反:读取[000000A4]
2005-8-6 12:31
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
7
你把OllyDBG主程序名改为:eXpLorEr.exe或者cmd.exe
同益起名大师脱壳需要注意的地方不少,去看原来讨论的帖子
2005-8-6 13:33
0
雪    币: 198
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
都没见AC作者出来说话了,也见不到AC再升级,失望矣。。。
说起AC,我就想起DBPE,感觉两者命运差不多
看来盗版确实害人不浅

2005-8-6 19:34
0
游客
登录 | 注册 方可回帖
返回
//