能力值:
( LV2,RANK:10 )
|
-
-
5 楼
好像有问题哦,SHIFT+F9 34次后,单步跟踪,最后出现
“不知道如何进行单步操作,因为在内存中的地址FFFFFFFFA是不易读取的。请尝试更改EIP或者跳过异常以执行程序
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
跟到最后一次异常后,现在我该怎么办?
0105FAA5 C700 EFCA5C85 MOV DWORD PTR DS:[EAX],855CCAEF
0105FAAB 67:64:8F06 0000 POP DWORD PTR FS:[0]
0105FAB1 83C4 04 ADD ESP,4
0105FAB4 83E8 AF SUB EAX,-51
0105FAB7 83C8 4B OR EAX,4B
0105FABA 58 POP EAX
0105FABB A1 0C380601 MOV EAX,DWORD PTR DS:[106380C]
0105FAC0 8B00 MOV EAX,DWORD PTR DS:[EAX]
0105FAC2 8B68 1C MOV EBP,DWORD PTR DS:[EAX+1C]
0105FAC5 A1 0C380601 MOV EAX,DWORD PTR DS:[106380C]
0105FACA 8B00 MOV EAX,DWORD PTR DS:[EAX]
0105FACC 8B00 MOV EAX,DWORD PTR DS:[EAX]
0105FACE 894424 04 MOV DWORD PTR SS:[ESP+4],EAX
0105FAD2 A1 0C380601 MOV EAX,DWORD PTR DS:[106380C]
0105FAD7 8B00 MOV EAX,DWORD PTR DS:[EAX]
0105FAD9 8D78 18 LEA EDI,DWORD PTR DS:[EAX+18]
0105FADC A1 8C370601 MOV EAX,DWORD PTR DS:[106378C]
0105FAE1 8858 08 MOV BYTE PTR DS:[EAX+8],BL
0105FAE4 833F 00 CMP DWORD PTR DS:[EDI],0
0105FAE7 75 1D JNZ SHORT 0105FB06
0105FAE9 83C5 20 ADD EBP,20
0105FAEC A1 84360601 MOV EAX,DWORD PTR DS:[1063684]
0105FAF1 8078 0A 00 CMP BYTE PTR DS:[EAX+A],0
0105FAF5 75 0F JNZ SHORT 0105FB06
0105FAF7 B8 1F000000 MOV EAX,1F
0105FAFC E8 C32DFDFF CALL 010328C4
0105FB01 C1E0 02 SHL EAX,2
0105FB04 2BE8 SUB EBP,EAX
0105FB06 E8 A9D0FFFF CALL 0105CBB4
0105FB0B 8BD8 MOV EBX,EAX
0105FB0D 833D E4B50601 00 CMP DWORD PTR DS:[106B5E4],0
0105FB14 74 15 JE SHORT 0105FB2B
0105FB16 6A 04 PUSH 4
0105FB18 B9 E4B50601 MOV ECX,106B5E4
0105FB1D 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
0105FB21 BA 04000000 MOV EDX,4
0105FB26 E8 3944FEFF CALL 01043F64
0105FB2B 833D 14B60601 00 CMP DWORD PTR DS:[106B614],0
0105FB32 74 15 JE SHORT 0105FB49
0105FB34 6A 0C PUSH 0C
0105FB36 B9 14B60601 MOV ECX,106B614
0105FB3B 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
0105FB3F BA 04000000 MOV EDX,4
0105FB44 E8 1B44FEFF CALL 01043F64
0105FB49 833F 00 CMP DWORD PTR DS:[EDI],0
0105FB4C 74 08 JE SHORT 0105FB56
0105FB4E 8B0424 MOV EAX,DWORD PTR SS:[ESP]
0105FB51 A3 24B60601 MOV DWORD PTR DS:[106B624],EAX
0105FB56 8B07 MOV EAX,DWORD PTR DS:[EDI]
0105FB58 894424 08 MOV DWORD PTR SS:[ESP+8],EAX
0105FB5C 896C24 10 MOV DWORD PTR SS:[ESP+10],EBP
0105FB60 8B0424 MOV EAX,DWORD PTR SS:[ESP]
0105FB63 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
0105FB67 A1 8C370601 MOV EAX,DWORD PTR DS:[106378C]
0105FB6C 8818 MOV BYTE PTR DS:[EAX],BL
0105FB6E A1 B8370601 MOV EAX,DWORD PTR DS:[10637B8]
0105FB73 C600 E1 MOV BYTE PTR DS:[EAX],0E1
0105FB76 E8 65ECFEFF CALL 0104E7E0
0105FB7B 8B15 78370601 MOV EDX,DWORD PTR DS:[1063778]
0105FB81 8802 MOV BYTE PTR DS:[EDX],AL
0105FB83 A1 0CB60601 MOV EAX,DWORD PTR DS:[106B60C]
0105FB88 E8 7B81FFFF CALL 01057D08
0105FB8D A1 78370601 MOV EAX,DWORD PTR DS:[1063778]
0105FB92 8038 00 CMP BYTE PTR DS:[EAX],0
0105FB95 74 26 JE SHORT 0105FBBD
0105FB97 A1 58370601 MOV EAX,DWORD PTR DS:[1063758]
0105FB9C C600 EA MOV BYTE PTR DS:[EAX],0EA
0105FB9F B8 32000000 MOV EAX,32
0105FBA4 E8 1B2DFDFF CALL 010328C4
0105FBA9 2905 20B60601 SUB DWORD PTR DS:[106B620],EAX
0105FBAF B8 64000000 MOV EAX,64
0105FBB4 E8 0B2DFDFF CALL 010328C4
0105FBB9 014424 04 ADD DWORD PTR SS:[ESP+4],EAX
0105FBBD A1 20B60601 MOV EAX,DWORD PTR DS:[106B620]
0105FBC2 894424 0C MOV DWORD PTR SS:[ESP+C],EAX
0105FBC6 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]
0105FBCA 894424 18 MOV DWORD PTR SS:[ESP+18],EAX
0105FBCE A1 0CB60601 MOV EAX,DWORD PTR DS:[106B60C]
0105FBD3 E8 3C30FDFF CALL 01032C14
0105FBD8 A1 B8370601 MOV EAX,DWORD PTR DS:[10637B8]
0105FBDD C600 E3 MOV BYTE PTR DS:[EAX],0E3
0105FBE0 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8]
0105FBE4 A1 2CB60601 MOV EAX,DWORD PTR DS:[106B62C]
0105FBE9 E8 7695FFFF CALL 01059164
0105FBEE E8 3160FFFF CALL 01055C24
0105FBF3 8BC6 MOV EAX,ESI
0105FBF5 E8 1A30FDFF CALL 01032C14
0105FBFA E8 B5D0FFFF CALL 0105CCB4
0105FBFF 83C4 2C ADD ESP,2C
0105FC02 5D POP EBP
0105FC03 5F POP EDI
0105FC04 5E POP ESI
0105FC05 5B POP EBX
0105FC06 C3 RETN
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我再跟下去,就有“不知道如何进行单步操作,因为在内存中的地址FFFFFFFFA是不易读取的。请尝试更改EIP或者跳过异常以执行程序”
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我跟前面的call好像没什么问题,然后我单步进入
0105FBFA E8 B5D0FFFF CALL 0105CCB4
然后按CTRL+F9 执行到返回
0105cdce retn
77f85ead retn 28
77f8d669 retn 18
77f88b1c retn 14
77f88a29 retn 10
77e807fc retn oc
接下来如果我直接按F9 程序可以正常运行。
如果我按CTRL+F9,就会出现“不知道如何进行单步操作:因为在内存中的地址BC88229C是不易读取的。请尝试更改EIP或者跳过异常以执行程序”。怎么办?跟不下去了
|
能力值:
( LV9,RANK:3410 )
|
-
-
11 楼
看雪学院五周年纪念收藏版
(包含看雪论坛精华1、2、3、4、5、6) 注:全部重新编译,可以实行全集检索。
http://www.pediy.com/
先去把ASProtect V1.23 RC4脱熟悉了
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
这个壳明显不是ASProtect V1.23 RC4,看它最后一次异常的特征码是
MOV DWORD PTR DS:[EAX],855CCAEF
而不是
xor dword ptr ds:[eax],eax
因此,原先的脱壳方法是不管用的
据我的研究,这个壳不但修改了入口处的几个字节,更是把原程序里好几大段代码挪到壳里面,简直强得变态。
建议Fly有时间研究一下,发篇文章,最近碰到这种壳好几次了。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
根据教程,ASProtect V1.23 RC4我能脱得掉,但很多地方,教程并没有说为什么。基本上按照教程一步一步,都能脱掉。但可能因为基础知识不够,所以并不清楚为什么该这么一步一步做。
还有那个1.3X的程序的壳虽然我没脱掉,本来希望找到关键JNZ,通过打补丁的形式实现程序多开,也没成功。但我却发现通过OD在一个系统模块kernel32中的一行JGE语句进行中断运行3次,就可以影响内存,实现程序多开,当然,我还是不知道为什么。哈哈
不过为了这个程序,我进行跟踪,记下了每个运行过的语句,好麻烦哦,已经记了三四天了。请问有没有什么比较方便的软件,能自动记录运行过的语句。并实现记录对比,这样就可以对比出程序不同运行情况下,发生变化的代码,从而更容易分析出关键jnz。
|
能力值:
( LV4,RANK:50 )
|
-
-
17 楼
楼主的钻研精神值得pf
关于工具,你可以看看<软件剖析--代码攻防之道>(t大出版社,Greg Hoglund著)这本书,上面好像提到了不少的逆向工具
我最近也在关注此类工具 :)
|