调用PE文件中引入表中的函数的方法
当我们补丁一个PE文件时,常常要用到调用这个PE文件引入表中的函数,那么怎样来调用呢?要想很透彻的了解其原理,需要对引入表很熟悉,并且要对PE文件的加载机制有所了解。
对于引入表的介绍和PE加载机制,看雪老大的著作上已经介绍的很清楚,只要花点时间,很容易弄清楚。按照下面步骤,即使对不太熟悉引入表的朋友,也能直接使用其中的函数。
准备的工具:LoadPe、Softice或TRW2000
步骤:
1、用LoadPe打开PE文件,查看其目录中的导入表,选中要使用的DLL并纪
录下它的FirstThunk的值(这是IAT表的起始RVA),假设为:E1B7。
2、找到要在这个DLL中要使用的函数,假设为:LoadLibraryA。
3、数一数这个函数在这个DLL函数列表中是第几个,假设为:第3个。
4、那么在补丁中调用这个函数就是:
call dword ptr[e1b7+ImageBase][(3-1)*4]
5、ImageBase的获得:
当我们补丁一个程序时,补丁的起始RVA是已知的(可以根据VA用LoadPe
的FLC计算出来),请看下面程序:
假设补丁开始地址(VA)为:0040d000,通过计算知道对应的RVA为n
0040d000:pushad
0040d001:call 0040d006
0040d006:pop ebp
xxxxxxxx:sub ebp-n-6 ;此时,ebp就是ImageBase,减6是
;pushad 和 call 0040d006的指令长度
xxxxxxxx:call dword ptr[ebp+e1b7][(3-1)*4] ;调用
;LoadLibraryA
.
.
xxxxxxxx:popad
仅此抛砖引玉,欢迎高手赐教其他方法。 (出处:赢政天下整理收藏)
相关文章:
相关软件:
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)
| 广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright © 1999-2003
winzheng.com All Rights Reserved.
繁体版:由华琦数码技术提供
Powered
by:MeSky.Net
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。