1、请教下csjwaman大侠,在 “SDprotector v1.1加壳的MD5计算器脱壳过程”教程中您写道:
00452FBB 83C4 24 ADD ESP,24
00452FBE 5F POP EDI
00452FBF 5E POP ESI
00452FC0 83C4 58 ADD ESP,58
00452FC3 C2 0400 RETN 4///返回。
中间省略跟踪过程。来到:
//
就是这里,前面我都对了,但是我始终找不到下面的位置,请问是不是每个软件加密出来都不一样啊?
00453F60 E5 0D IN EAX,0D ; I/O 命令
00453F62 0000 ADD BYTE PTR DS:[EAX],AL
00453F64 3D 00000080 CMP EAX,80000000
00453F69 73 63 JNB SHORT Pack.00453FCE/////这里要跳!修改CF标志,让跳。
00453F6B 56 PUSH ESI
00453F6C 57 PUSH EDI
2、请教csjwaman大侠,您在 “SDprotector v1.1加壳的某软件脱壳过程” 中写道:
004FBBBA E8 F784FFFF call 004F40B6 ; 004F40B6
004FBBBF 05 08010000 add eax,108
004FBBC4 50 push eax
004FBBC5 E8 73FFFFFF call 004FBB3D ; 004FBB3D
004FBBCA 35 47F2EA87 xor eax,87EAF247///这个固定值可能是用于加密的。
004FBBCF C3 retn
//
主要是这里: 我在我调试的软件上在上面那句一retn后,下面的代码就和您的完全不一样了,请教一下我怎么找到哪个je,也就是怎么找到子进程和附进程的分支处?
004F0191 /EB 01 jmp short 004F0194 ; 004F0194
004F0193 |90 nop///花指令。
004F0194 \0F84 0E010000 je 004F02A8 ///此处是子进程和父进程的分支处。跳则以子进程身份运行。修改标志位强行跳转。
004F019A E8 01000000 call 004F01A0 ; 004F01A0
004F019F FF58 05 call far fword ptr ds:[eax+5]
在004F0194处如果不跳,则程序后面调用CreateProcessA创建新的进程,父进程则退出。
我用的同一个SDP加密的程序,按照您的2篇文章的办法分别试了很久(大概3天的样子)始终不能越过上面那2处障碍,不得以只好在此像大侠您请教了。如果打扰之处,敬请各位前辈原谅。
最后祝各位大侠早成正果,给我们这些菜鸟更多的好文学习。先谢过:)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)