假设某程序的反汇编代码如下ESP:00000000push ebx 这句执行后:ESP:00000004push esi 这句执行后:ESP:00000008push eax 这句执行后:ESP:0000000ccall 50b890 这句执行后:ESP:0000000cadd esp,c 这句执行后:ESP:00000000retn------------------我现在要自编一段代码注入的程序中,目的是要从外部调用50b890那个CALL代码如下:pushadpush ebxpush esipush eaxcall 50b890add esp,cpopadretn
2 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
信息不全,不好解决。
call 50b890 ,其中50b890 是哪里的外部调用。是在目标进程空间的调用吗?
call 50b890 有几个参数?push ebx push esi 不知道是保护环境的还是参数。
call 50b890 是什么方式平栈的?deiphi的和vc的有区别,(应该不是系统API的吧)
你试试add esp,4看看,可能它只有一个参数(push eax),同时还需要pop ebx, pop esi。或者将这句取消,它内部已经平栈了。或者将这句取消,并且加pop ebx, pop esi恢复环境。
如果你能调试,那就好判断了。pushad后的esp和popad前的应该一致。
还有一个,你的call 50b890 需要做什么操作,CALL返回后的寄存器里的值是否有用,如果有用,就不能popad,会将有用的值覆盖掉的
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报
0/150
提交
取消