能力值:
( LV2,RANK:10 )
2 楼
没有回话,自己顶一下
能力值:
( LV2,RANK:10 )
3 楼
高手如云的看雪论坛怎么没人帮我啊,是不是我没说明白啊,没说明白也要告诉我一下啊
能力值:
( LV2,RANK:10 )
4 楼
我晕了,都放好几天了,怎么没人回应啊,继续顶上去
能力值:
( LV2,RANK:10 )
5 楼
这位兄弟,太够意思了,终于有回应了,,只是不知道啥意思
能力值:
( LV2,RANK:10 )
6 楼
至少该给个程序,你这样直接贴代码,没有程序,谁知道是怎么回事
能力值:
( LV2,RANK:10 )
7 楼
这位大虾,你提示的太对了,谢谢你啊,你不提示我都快忘了
ftp://219.239.138.183/SoWorker_cn_hero.exe
这里下载
能力值:
( LV2,RANK:10 )
8 楼
SoWorker_cn_hero.exe按照http://bbs.pediy.com/showthread.php?t=32917&highlight=ASProtect+1+23+RC4+3+08+24
的做法,经过25次左右的shift+F9,及hr 12FF68....... 来到了lz提到的那个循环地方
00C16BAB 0FB703 movzx eax, word ptr [ebx]
00C16BAE 03C6 add eax, esi
00C16BB0 83C3 02 add ebx, 2
00C16BB3 8BD0 mov edx, eax
00C16BB5 8BC6 mov eax, esi
00C16BB7 E8 0C000000 call 00C16BC8
00C16BBC 66:833B 00 cmp word ptr [ebx], 0
00C16BC0 ^ 75 E9 jnz short 00C16BAB //这里不要跟,
00C16BC2 5E pop esi ///在这里F4
00C16BC3 5B pop ebx
00C16BC4 5D pop ebp
00C16BC5 C2 0800 retn 8
一直F7经过下面的代码,就是stolen code了
00C14EBC 56 push esi //这两个不是真实的堆栈操作
00C14EBD 51 push ecx
00C14EBE 896C24 04 mov dword ptr [esp+4], ebp
00C14EC2 EB 01 jmp short 00C14EC5
00C14EC4 F3: prefix rep:
00C14EC5 83C4 04 add esp, 4 //push ebp
00C14EC8 8BEC mov ebp, esp
00C14ECA 6A FF push -1
00C14ECC 68 50A55200 push 52A550
00C14ED1 68 A0664E00 push 4E66A0 ; 入口地址
00C14ED6 64:A1 00000000 mov eax, dword ptr fs:[0] 00C14EED 56 push esi //这两个不是真实的堆栈操作
00C14EEE 51 push ecx
00C14EEF 894424 04 mov dword ptr [esp+4], eax
00C14EF3 EB 01 jmp short 00C14EF6
00C14EF5 F3: prefix rep:
00C14EF6 83C4 04 add esp, 4 //push eax
00C14EF9 64:8925 0000000>mov dword ptr fs:[0], esp
00C14F00 83EC 58 sub esp, 58
00C14F14 56 push esi
00C14F15 51 push ecx
00C14F16 895C24 04 mov dword ptr [esp+4], ebx
00C14F1A EB 01 jmp short 00C14F1D
00C14F1C F3: prefix rep:
00C14F1D 83C4 04 add esp, 4 //push ebx
00C14F31 56 push esi
00C14F32 51 push ecx
00C14F33 897424 04 mov dword ptr [esp+4], esi
00C14F37 EB 01 jmp short 00C14F3A
00C14F39 F3: prefix rep:
00C14F3A 83C4 04 add esp, 4 //push esi
00C14F4E 56 push esi
00C14F4F 51 push ecx
00C14F50 897C24 04 mov dword ptr [esp+4], edi
00C14F54 EB 01 jmp short 00C14F57
00C14F56 F3: prefix rep:
00C14F57 83C4 04 add esp, 4 //push edi
00C14F5A 8965 E8 mov dword ptr [ebp-18], esp
等价代码:
push ebp
mov ebp,esp
push -1
push 52A550
push 4E66A0
mov eax, dword ptr fs:[0]
push eax
mov dword ptr fs:[0], esp
sub esp, 58
push ebx
push esi
push edi
mov dword ptr [ebp-18], esp
二进制代码
55 8B EC 6A FF 68 50 A5 52 00 68 A0 66 4E 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53 56 57 89 65 E8
把上面的代码二进制粘贴到下面的位置 004E1309 00 db 00 //真的OEP
004E130A 00 db 00
004E130B 00 db 00
004E130C 00 db 00
004E130D 00 db 00
004E130E 00 db 00
004E130F 00 db 00
004E1310 00 db 00
004E1311 00 db 00
004E1312 00 db 00
004E1313 00 db 00
004E1314 00 db 00
004E1315 00 db 00
004E1316 00 db 00
004E1317 00 db 00
004E1318 00 db 00
004E1319 00 db 00
004E131A 00 db 00
004E131B 00 db 00
004E131C 00 db 00
004E131D 00 db 00
004E131E 00 db 00
004E131F 00 db 00
004E1320 00 db 00
004E1321 00 db 00
004E1322 00 db 00
004E1323 00 db 00
004E1324 00 db 00
004E1325 00 db 00
004E1326 00 db 00
004E1327 00 db 00
004E1328 00 db 00
004E1329 00 db 00
004E132A 00 db 00
004E132B 00 db 00
004E132C 00 db 00
004E132D 00 db 00
004E132E . 00 db 00
004E132F . FF15 9C925100 call dword ptr [51929C] //假的OEP
004E1335 . 33D2 xor edx, edx
修复IAT的过程比较麻烦,无效的基本上可以用汇编等级1修复,不能修复的有6个如下,查看了一下大致是下面的一些功能,GetModuleHandleA、GetProcAddress是直接反汇编就可以看出来的,GetCommandLineA是跟踪程序的时候想到的,GetVersion是经验的猜测(对比上面的帖子),GetCurrentThread完全是的等价猜测,因为GetCurrentThread也返回-1,至于最后一个很奇怪,它不是API调用就实现如下的C语言功能
int fun(int a){
return a;
}
不知道这个是否也是什么API,我的处理办法是搜索二进制FF15 D0925100 基本上连同上面的push eax一起NOP掉,只有一处改成pop eax
00119168 00C01CD8 GetCommandLineA //eax->"F:\SoWorker_cn_hero.exe"
0011924C 00C01CB8 mov eax,-1 //GetCurrentThread
00119280 00C01C64 GetModuleHandleA
00119284 00C017A4 GetProcAddress
0011929C 00C01C8C mov eax,0A280105 //GetVersion
001192D0 00C01CC8 pop eax
00505668 |. FF15 D0925100 call dword ptr [5192D0]
004FC3C7 |. FF15 D0925100 call dword ptr [5192D0]
00469103 |. FF15 D0925100 call dword ptr [5192D0]
004F5919 . FF15 D0925100 call dword ptr [5192D0]//push edi
004F5C08 . FF15 D0925100 call dword ptr [5192D0] 004E1309 > 55 push ebp
004E130A 8BEC mov ebp, esp
004E130C 6A FF push -1
004E130E 68 50A55200 push 0052A550
004E1313 68 A0664E00 push 004E66A0 ; 入口地址
004E1318 64:A1 00000000 mov eax, dword ptr fs:[0]
004E131E 50 push eax
004E131F 64:8925 00000000 mov dword ptr fs:[0], esp
004E1326 83EC 58 sub esp, 58
004E1329 53 push ebx
004E132A 56 push esi
004E132B 57 push edi
004E132C 8965 E8 mov dword ptr [ebp-18], esp
004E132F B8 0501280A mov eax, 0A280105
004E1334 90 nop
程序可以运行。。。。。
能力值:
( LV2,RANK:10 )
9 楼
,真牛,我也要学习一下.
能力值:
( LV2,RANK:10 )
10 楼
首先多谢这位大虾的帮忙,但有还是有点弄不明白,我就按大虾说的要求按F7一直跟到
00C14EBC 56 push esi //这两个不是真实的堆栈操作
00C14EBD 51 push ecx
00C14EBE 896C24 04 mov dword ptr [esp+4], ebp
这里的时候,本人都按一个小时F7了,也没跟到啊,是我方法做错了,还是本来就应该这样啊
能力值:
( LV2,RANK:10 )
11 楼
00C16BAB 0FB703 movzx eax, word ptr [ebx]
00C16BAE 03C6 add eax, esi
00C16BB0 83C3 02 add ebx, 2
00C16BB3 8BD0 mov edx, eax
00C16BB5 8BC6 mov eax, esi
00C16BB7 E8 0C000000 call 00C16BC8
00C16BBC 66:833B 00 cmp word ptr [ebx], 0
00C16BC0 ^ 75 E9 jnz short 00C16BAB //这里不要跟,
00C16BC2 5E pop esi ///在这里F4
00C16BC3 5B pop ebx
00C16BC4 5D pop ebp
00C16BC5 C2 0800 retn 8
你可能是上面那个循环没有跳出来
地址是有一定的随机性,这部分是它申请的内存,不是PE文件到地址空间的映射
为了定位代码,你可以搜索二进制串,。。。。。
能力值:
( LV2,RANK:10 )
12 楼
那有几点疑问,这位大虾你脱壳的时候遇到过5200多次的循环吗??
还有刚开始应该是26次Shist+F9还有硬件断点是hr 13ff68吧,麻烦这位大虾指明。谢谢
能力值:
( LV2,RANK:10 )
13 楼
088539EC 3100 XOR DWORD PTR DS:[EAX],EAX
088539EE 64:8F05 0000000>POP DWORD PTR FS:[0]
088539F5 58 POP EAX
088539F6 833D B07E8508 0>CMP DWORD PTR DS:[8857EB0],0
088539FD 74 14 JE SHORT 08853A13
088539FF 6A 0C PUSH 0C
08853A01 B9 B07E8508 MOV ECX,8857EB0
08853A06 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
08853A09 BA 04000000 MOV EDX,4
08853A0E E8 2DD1FFFF CALL 08850B40
08853A13 FF75 FC PUSH DWORD PTR SS:[EBP-4]
08853A16 FF75 F8 PUSH DWORD PTR SS:[EBP-8]
08853A19 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
08853A1C 8338 00 CMP DWORD PTR DS:[EAX],0
08853A1F 74 02 JE SHORT 08853A23
08853A21 FF30 PUSH DWORD PTR DS:[EAX]
08853A23 FF75 F0 PUSH DWORD PTR SS:[EBP-10]
08853A26 FF75 EC PUSH DWORD PTR SS:[EBP-14]
08853A29 C3 RETN //F2这里断下,SHIFT+F9在这里,取消断点.
08853A2A 5F POP EDI
08853A2B 5E POP ESI
08853A2C 5B POP EBX
08853A2D 8BE5 MOV ESP,EBP
08853A2F 5D POP EBP
08853A30 C3 RETN
是不是下完一次hr 0013FF68 断点后立即删除硬件断点,还是永不删除啊
能力值:
( LV2,RANK:10 )
14 楼
马上要沉了,顶起来
能力值:
( LV2,RANK:10 )
15 楼
compiler大虾在吗???
能力值:
( LV2,RANK:10 )
16 楼
顶起来,希望你能看到...
能力值:
( LV2,RANK:10 )
17 楼
又学到不少知识
能力值:
( LV2,RANK:10 )
18 楼
谁来帮帮我吧
能力值:
( LV2,RANK:10 )
19 楼
顶起来,,希望大虾能回答我的疑惑
能力值:
( LV2,RANK:10 )
20 楼
我也顶个,遭遇同样问题,希望学习下
能力值:
( LV2,RANK:10 )
21 楼
顶到回复为止
能力值:
( LV2,RANK:10 )
22 楼
我做的脱ASProtect 1.23 RC4录象,希望对你有所帮助
http://www.namipan.com/d/ASProtect1.23RC4_stolen_Code.rar/bb5951f2c59c9c196dded2ac9c7634749e3eeadbd0465d00
能力值:
( LV2,RANK:10 )
23 楼
太感谢了,学习中
能力值:
( LV2,RANK:10 )
24 楼
哥啊,你太好了,我这就去脱壳
能力值:
( LV2,RANK:10 )
25 楼
birdcfly 这位兄弟,太感谢你了,这个壳我脱掉了,学到了很多知识