一个汇编的小问题

lengx7 2008-11-19 09:39:36
push 14
push 77D2F4A0
???? ???????? //这里加一句什么?
call 583C85C0

push 传了“14”和“77D2F4A0”这两个参数,但是现在只需要“14”这一个参数就可以了,在call之前加什么语句,可以把第二个push给抵消掉啊?
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2008-11-19
  • 打赏
  • 举报
回复
我说过啥的,这问题应该发到汇编版。。。
用不上就直接pop吧,堆栈一般不会有大问题
killbug2004 2008-11-19
  • 打赏
  • 举报
回复
这样应该可以,不过你自己代码调回继续执行时要注意堆栈和返回继续执行的地址
lengx7 2008-11-19
  • 打赏
  • 举报
回复
自己乱找的GetWindowTextA汇编原形
006552BF FF15 60C68600 call dword ptr [<&USER32.GetWindowTex>; USER32.GetWindowTextA
77D3212B > 6A 0C push 0C
77D3212D 68 9021D377 push 77D32190
77D32132 E8 8964FEFF call 77D185C0
77D32137 8B7D 0C mov edi, dword ptr [ebp+C]
77D3213A 33DB xor ebx, ebx
77D3213C 3BFB cmp edi, ebx

现在想要HOOK GetWindowTextA,JMP跳转到自己的函数里,同时保持GetWindowTextA的头几行原形不变,现在准备保留前两行(不知道保留第三行的call是否会出现意想不到的结果。。。)
打算HOOK修改GetWindowTextA的前12字节为
6A 0C push 0C
68 9021D377 push 77D32190
83C4 08 add esp, 8 //前面两个push自己jmp的xxxxx用不上,还要保持平衡。。。
90 nop
E9 jmp xxxxxx

这样写是不是有点问题。。。?
cnzdgs 2008-11-19
  • 打赏
  • 举报
回复
add esp,4
如果可以改变寄存器的值,也可以pop一个寄存器。
llqpp 2008-11-19
  • 打赏
  • 举报
回复
pop 寄存器
lbh2001 2008-11-19
  • 打赏
  • 举报
回复
pop eax
xiaopoy 2008-11-19
  • 打赏
  • 举报
回复
直接改esp好
lea esp,[esp + 4];

6A 0C push 0C
68 9021D377 push 77D32190
83C4 08 add esp, 8 //前面两个push自己jmp的xxxxx用不上,还要保持平衡。。。
90 nop
E9 xxxxxxxx jmp xxxxxxxxx
这儿是16d个字节啊!

添加功能最好不要改动原流程吧?
tiger861221 2008-11-19
  • 打赏
  • 举报
回复
或者可以改堆栈指针BP,在C语言当中函数的参数传递就是通过堆栈指针来实现的!

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧