-
-
[旧帖] [求助]AsProtect1.23RC1* 0.00雪花
-
发表于: 2008-12-10 12:46 2197
-
我前两天从坛子上找了一篇关于AsProtect1.23 RC1*的手脱文章。
手脱文章链接:http://bbs.pediy.com/showthread.php?p=547759#post547759
里有一段要PATCH的代码。。这段代码我没看明白是怎么回事。。。
在这里学习下下。。PATCH的代码如下:
好了,执行到这里我们重来。(CTRL+F2)
最后被断在这里:013CB1A9 FFD2 CALL EDX---》去掉硬件执行断点。
改为:013CB1A9 FFD2 JMP 02640000 //这里是改成跳向要PATCH代码的地方,下面开始是PATCH的代码。
分配一段内存,我这里分配的是02640000写下如下代码:
02640000 FFD2 CALL EDX
02640002 60 PUSHAD
02640003 8B1D 30006402 MOV EBX,DWORD PTR DS:[2640030]//请问2640030是什么意思,如果说这个是地址的话,那我把我加的这个壳的程序修改成相应的地址值单步这里提示异常,shift+F8步过,就会终止程序。如是不是地址这个数值代表的是什么呢。
02640009 C1E0 1F SHL EAX,1F
0264000C 03C5 ADD EAX,EBP
0264000E 8903 MOV DWORD PTR DS:[EBX],EAX
02640010 83C3 04 ADD EBX,4
02640013 891D 30006402 MOV DWORD PTR DS:[2640030],EBX//还有这个
02640019 61 POPAD
0264001A 807B 20 00 CMP BYTE PTR DS:[EBX+20],0
0264001E - E9 8CB1D8FE JMP 013CB1AF----》这里是上面提到要记住的地址。
二进制代码为:
FF D2 60 8B 1D 30 00 64 02 C1 E0 1F 03 C5 89 03 83 C3 04 89 1D 30 00 64 02 61 80 7B 20 00 E9 8C
B1 D8 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 64 02 00
上面代码写好之后,F4到如下代码
013CB2FB 8945 00 MOV DWORD PTR SS:[EBP],EAX
013CB2FE 6A 0A PUSH 0A
013CB300 E8 B3A9FDFF CALL 013A5CB8
013CB305 8BC8 MOV ECX,EAX
013CB307 038B E4000000 ADD ECX,DWORD PTR DS:[EBX+E4]
013CB30D 8BD6 MOV EDX,ESI
013CB30F 8BC3 MOV EAX,EBX
013CB311 E8 AAE6FFFF CALL 013C99C0
013CB316 FF0C24 DEC DWORD PTR SS:[ESP]
013CB319 03B3 E4000000 ADD ESI,DWORD PTR DS:[EBX+E4]
013CB31F 833C24 00 CMP DWORD PTR SS:[ESP],0
013CB323 ^ 0F87 55FEFFFF JA 013CB17E
013CB329 53 PUSH EBX------》F4就这里了。
013CB32A E8 5D000000 CALL 013CB38C
013CB32F 0183 EC000000 ADD DWORD PTR DS:[EBX+EC],EAX
013CB335 B0 01 MOV AL,1
013CB337 83C4 24 ADD ESP,24
013CB33A 5D POP EBP
013CB33B 5F POP EDI
013CB33C 5E POP ESI
013CB33D 5B POP EBX
013CB33E C3 RETN
首先谢谢啦~~~,我正在努力的学习中。。不过到现在为止偶还是一只小小鸟。。。
手脱文章链接:http://bbs.pediy.com/showthread.php?p=547759#post547759
里有一段要PATCH的代码。。这段代码我没看明白是怎么回事。。。
在这里学习下下。。PATCH的代码如下:
好了,执行到这里我们重来。(CTRL+F2)
最后被断在这里:013CB1A9 FFD2 CALL EDX---》去掉硬件执行断点。
改为:013CB1A9 FFD2 JMP 02640000 //这里是改成跳向要PATCH代码的地方,下面开始是PATCH的代码。
分配一段内存,我这里分配的是02640000写下如下代码:
02640000 FFD2 CALL EDX
02640002 60 PUSHAD
02640003 8B1D 30006402 MOV EBX,DWORD PTR DS:[2640030]//请问2640030是什么意思,如果说这个是地址的话,那我把我加的这个壳的程序修改成相应的地址值单步这里提示异常,shift+F8步过,就会终止程序。如是不是地址这个数值代表的是什么呢。
02640009 C1E0 1F SHL EAX,1F
0264000C 03C5 ADD EAX,EBP
0264000E 8903 MOV DWORD PTR DS:[EBX],EAX
02640010 83C3 04 ADD EBX,4
02640013 891D 30006402 MOV DWORD PTR DS:[2640030],EBX//还有这个
02640019 61 POPAD
0264001A 807B 20 00 CMP BYTE PTR DS:[EBX+20],0
0264001E - E9 8CB1D8FE JMP 013CB1AF----》这里是上面提到要记住的地址。
二进制代码为:
FF D2 60 8B 1D 30 00 64 02 C1 E0 1F 03 C5 89 03 83 C3 04 89 1D 30 00 64 02 61 80 7B 20 00 E9 8C
B1 D8 FE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 64 02 00
上面代码写好之后,F4到如下代码
013CB2FB 8945 00 MOV DWORD PTR SS:[EBP],EAX
013CB2FE 6A 0A PUSH 0A
013CB300 E8 B3A9FDFF CALL 013A5CB8
013CB305 8BC8 MOV ECX,EAX
013CB307 038B E4000000 ADD ECX,DWORD PTR DS:[EBX+E4]
013CB30D 8BD6 MOV EDX,ESI
013CB30F 8BC3 MOV EAX,EBX
013CB311 E8 AAE6FFFF CALL 013C99C0
013CB316 FF0C24 DEC DWORD PTR SS:[ESP]
013CB319 03B3 E4000000 ADD ESI,DWORD PTR DS:[EBX+E4]
013CB31F 833C24 00 CMP DWORD PTR SS:[ESP],0
013CB323 ^ 0F87 55FEFFFF JA 013CB17E
013CB329 53 PUSH EBX------》F4就这里了。
013CB32A E8 5D000000 CALL 013CB38C
013CB32F 0183 EC000000 ADD DWORD PTR DS:[EBX+EC],EAX
013CB335 B0 01 MOV AL,1
013CB337 83C4 24 ADD ESP,24
013CB33A 5D POP EBP
013CB33B 5F POP EDI
013CB33C 5E POP ESI
013CB33D 5B POP EBX
013CB33E C3 RETN
首先谢谢啦~~~,我正在努力的学习中。。不过到现在为止偶还是一只小小鸟。。。
赞赏
他的文章
- [求助]好心给个天草高级班的硬件号吧 5601
- [转帖]ASProtect 1.23 RC1*手脱 3185
- [求助]AsProtect1.23RC1* 2198
- [求助]脱壳后的问题,请大大们回答一下,谢谢 2226
- [求助]外挂教学软件(WgPro.exe)之我见 4744
赞赏
雪币:
留言: