求教:declspec,如何去掉Api调用的jmp中转子程序

kilrogg 2008-12-17 05:50:49
用汇编,写代码的时候,
默认设置
.386
.model flat,stdcall
option casemap:none
...
call MessageBox
...
编译之后的Api调用都是要在中间多出一个步骤
再调用这样的子程序:
MessageBoxA proc near
jmp ds:__imp_MessageBoxA
MessageBoxA endp

要怎么设置才能变成下面这样:
call dword ptr [MessageBoxA]

高级语言里面是 __declspec(dllimport) viod ...这么做的,请问汇编里面要怎么实现?
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kilrogg 2009-01-04
  • 打赏
  • 举报
回复
恩 ,是啊 ,
编译器在编译之后,程序对导入函数的调用变成了
E8 xxxx 先call一个子程序,再FF25 jmp 到IAT

我是说,怎样设置下,才能变成直接 FF15 call IAT?
killbug2004 2009-01-04
  • 打赏
  • 举报
回复
这个是编译器实现的对动态链接库函数调用的支持,IAT中函数的地址是loader在装载时填充的

21,500

社区成员

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

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