首页
社区
课程
招聘
[原创]使用exe的导出函数
发表于: 2012-5-8 18:39 6854

[原创]使用exe的导出函数

2012-5-8 18:39
6854
首先要知道一点:LoadLibrary在加载.exe文件时,并不会处理其中的iat
因此,如果你使用下面的代码可能会导致程序出现访问异常c0000005:

        hm=LoadLibrary("xx.exe");
        aFunc=GetProcAddress(hm,"aFunc");
        aFunc();(如果在该函数中调用了exe中IAT的API地址则会出现内存访问异常)

如果不做其他处理,目前似乎只有在这种情况下才能正常使用EXE中的导出函数:
某个exe调用了某个dll中的函数,该函数再调用exe中的导出函数

可以这样写:
        exe端:
        //首先,写一个导出函数:
        extern "C" __declspec(dllexport) exe_export()
        {
                //some code here
        }
        //其次,在某个场合下调用dll中的函数,让该函数再来调用自己内部的函数
        GetProcAddress(hm,"afunc");
        afunc();

        dll端:
        afunc()
        {
                GetProcAddress(GetModuleHandle(NULL),"exe_export");
                exe_export();
        }

作者声明:没什么技术含量,抱砖引玉。转载请注明“作者:凭凡”
参考资料:高端调试论坛网名为“手语”的文章

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 276
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
遮遮掩掩的,贴代码,发demo就成了。
2012-5-8 18:50
0
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
我觉得我已经说得很清楚了。这种东西,实际利用的场合并不多。我用不着浪费时间为看不懂的人写DEMO
2012-5-8 21:31
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
基址没发生改变,数据地址和导入表地址没变化当然能正常运行了
调用者exe是被调用者exe,说实话这个真没多大意义,这个dll似乎也可以省略~~
如果真想用exe导出的函数你可以不用这么的导出的,
微软本身就提供有exe自动化接口服务导出api,

另外还看了篇文章觉得挺有意思的,
http://bbs.pediy.com/showthread.php?t=68730
2012-5-8 23:17
0
雪    币: 62
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
嗯~~楼上给的链接文章很有意思啊~
2012-5-9 10:04
0
雪    币: 229
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错,以前找过这样的资料没找到
2012-5-11 14:31
0
雪    币: 1753
活跃值: (840)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
7
实质和DLL调用差不多~~
都需要extern "C" __declspec(dllexport) 声明才行的·!
2012-5-12 15:47
0
游客
登录 | 注册 方可回帖
返回
//