能力值:
( LV9,RANK:3410 )
|
-
-
2 楼
ACProtect的anti以前有过分析
精华6里面看看
|
能力值:
( LV12,RANK:370 )
|
-
-
3 楼
呵呵,再看看
|
能力值:
( 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大侠的不一样,是不是还有错的地方,请大虾们指点.
|
能力值:
( LV9,RANK:3410 )
|
-
-
5 楼
1、我用的是修改版OllyDBG,所以可以直接调试
2、输入表修复问题,修正ImportTable RVA没有?
|
能力值:
( 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]
|
能力值:
( LV9,RANK:3410 )
|
-
-
7 楼
你把OllyDBG主程序名改为:eXpLorEr.exe或者cmd.exe
同益起名大师脱壳需要注意的地方不少,去看原来讨论的帖子
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
都没见AC作者出来说话了,也见不到AC再升级,失望矣。。。
说起AC,我就想起DBPE,感觉两者命运差不多
看来盗版确实害人不浅
|