-
-
Asprotect SKE 2。x Advanced Import protection中一个未弄明白的问题
-
发表于:
2006-11-10 18:49
4390
-
Asprotect SKE 2。x Advanced Import protection中一个未弄明白的问题
shooo和kanxue在脱asp2.x时提到
"进入EA0000后发生了什么,一共三层
第一层:保存所有当前寄存器 (出来后还要继续运行的,不能影响后面,不过它不是明目张胆的pushad)
第二层:1. 决定是哪一种方式的导入函数调用
a. 第一种方式:将call 00EA0000 变成call F00004之类,出来后再次从原地进入F00004进入导入函数
b. 第二种方式:直接带着参数进入导入函数
2. 决定这个调用是call (ff15)还是jmp (ff25)
不要以为C的都是call,delphi的都是jmp
c. 如果是call (ff15),返回地址要+1 ,比如inc [esp],因为call 00EA0000 占5个字节,call (ff15)占6个字节
d. 如果是jmp (ff25),要esp+4,想一下就知道原因了:)
3. 如果是1.b的情况,可能有更邪恶的对下一行的偷代码,我一直没有找到好的方式解决它:(
第三层:恢复所有的寄存器返回"
第二层的第2点(返回地址+1,esp+4),我没弄明白,请大家指点。
原文链接:
http://bbs.pediy.com/showthread.php?s=&threadid=19313
http://bbs.pediy.com/showthread.php?s=&threadid=23771
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)