Always keep a beginner's mind, don't forget the beginner's mind.|

园龄:粉丝:关注:

2020-11-13 21:54阅读: 677评论: 0推荐: 0

汇编代码中是如何确定apI函数的地址的呢?

问:对于dll中的函数地址在运行前是不知道的,那在文件代码中是如何编写 “call  函数地址” 之类的指令的呢?

答:虽然不知道函数的地址是什么,但是知道函数的地址写在哪里。可以[函数地址的指针]来读取函数的地址

比如:           

 

 

 上图是 汇编中调用KERNEL32.GetModuleHandleA的语句,让我们查看这条语句跳转到哪里

 

 

 由上图可知 语句跳转到了地址为0040127A的位置,这里是一个JMP指令,这里的意思是说,对402004的值解引用,然后跳转,可能说的不太清楚,直接看图

下图是 402004地址的值

 

 

由图可知00402004的值是75f816d0

下图是下一个跳转的位置

 

 由图可知 API地址的位置正是402004的位置,看来402004就是KERNEL32库的IAT了,在程序装载到进程时,PE装载器会把API的地址放入IAT的位置,在程序只要用解引用的方式调用IAT地址的值,就可以以不变应万变了

 

 

      

 

本文作者:乘舟凉

本文链接:https://www.cnblogs.com/czlnb/p/13971538.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   乘舟凉  阅读(677)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起