修改EXE文件的问题

fbiboss 2008-08-08 11:27:53
想让EXE加个弹出框,
函数都是这样调用的吗

CALL 00000009(到JMP的偏移)

jmp xxxxx


这个XXXX怎么得到啊?
...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc25 2008-08-08
  • 打赏
  • 举报
回复
jmp puts
jmp gets
这些都可以的
jxc25 2008-08-08
  • 打赏
  • 举报
回复
本来是user32.MessageBoxA
现在被JMP DWORD PTR DS:[ <&user32.MessageBoxA>] 代替了
你可以在JMP DWORD PTR DS:[ <&user32.MessageBoxA>] 的前面写些内容了
gzgzlxg 2008-08-08
  • 打赏
  • 举报
回复
jmp MessageBoxA 是输入表的地址表,你看到的东西是在程序加载后才形成的,所以作为编译器,只能将call指向那个jmp地址,等程序加载后,系统初始化时根据输入表将jmp后面的地址给填上,这样就可以调用了。
fbiboss 2008-08-08
  • 打赏
  • 举报
回复
在OD中看到调用函数都是:
00401000 >/$ 6A 00 PUSH 0
00401002 |. 68 00304000 PUSH hello.00403000
00401007 |. 68 0C304000 PUSH hello.0040300C
0040100C |. 6A 00 PUSH 0
0040100E |. E8 09000000 CALL <JMP.&user32.MessageBoxA>

0040101C $- FF25 08204000 JMP DWORD PTR DS:[<&user32.MessageBoxA>] ; user32.MessageBoxA

为什么在CALL那要再跳到后面的JMP啊?

21,458

社区成员

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

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