看流星社区

 找回密码
 注册账号
查看: 11138|回复: 41

X86和X64下的IAT注入技术(附工具和源代码)

[复制链接]

该用户从未签到

发表于 2018-3-8 20:47:32 | 显示全部楼层 |阅读模式

IAT又叫导入表,是WINDOWS PE文件中的一组数据结构,当EXE可执行程序被加载到地址空间后,
每个导入的DLL模块都有一个对应的导入表,PE加载器会根据导入表来加载进程需要的其他DLL模块。

据此本人根据导入表加载DLL特性,自行编写了一款IAT注入工具。

测试支持平台:WINXP WIN7(32位) WIN7(64位) WIN10 大家可以自行测试WIN8效果

引言:IAT注入程序开发过程有一定难度,需要编程开发者熟悉WINDOWS PE文件结构,可参考《Windows PE权威指南》(非广告目的),并对PE文件导入表结构成员十分熟悉,了解IAT结构组成,清楚OriginalFirstThunk和FirstThunk结构异同,还有关键的RVA和RAW地址转换关系。

程序流程:
1.注入程序将目标PE文件通过内存映射方式映射到内存中
2.判断PE文件特征,并创建新的节区头,填写相关信息
3.申请内存空间,拷贝原始导入表,并在其后构建新的IMAGE_IMPORT_DESCRIPTOR信息
4.修正内存中的映射的PE文件中的关键信息(如节区数,镜像大小,导入表RVA和SIZE等)
5.结束映射,在PE文件末尾写入新的节区(增加一个FileAlignment大小,名为PeerLess区段)
6.被注入DLL文件名必须为(back.dll)需要导出一个名为Inject函数,函数功能自拟。

续言:
程序源代码中对要注入的PE文件有较为充分的检查
1.PE文件基本特征判断
2.PE文件中NT头空间是否足够添加一个节区头
3.新加的节区大小是否大于新构建的导入表所需空间
最后如果提示注入失败,可自己打开dbgview观察错误信息。

备注:
本IAT注入程序经过测试,基本支持绝大多数无壳程序,因为加壳程序会改变PE文件特征,导致程序对关键信息判断不通过,即注入失败,但不会影响原始程序。(本人在XP上发现,如有提示注入成功,立即运行程序出现无效win32程序,可刷新一下稍等几秒在运行程序,即可正常。)
特此声明:由于此程序会对目标PE文件进行修改,建议在备份目标程序的情况下测试bin程序。

请勿使用本程序进行任何恶意目的,如有造成任何经济财产损失与本人无关。

本人所采用的编译环境是vs2013,运行程序可能会提示缺少msvcr120.dll,mfc120u.dll,请大家自行根据操作系统位数下载对应DLL。
最后附上bin程序和完整源代码,供广大技术爱好者相互交流学习(back.dll是测试用例,被加载后运行记事本程序)

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1流星币 +5 收起 理由
wangjing + 5

查看全部评分

  • TA的每日心情
    可爱
    2021-9-23 21:11
  • 发表于 2018-5-29 23:25:47 | 显示全部楼层
    C++ 伪任意地址HOOK类源码 [复制链接]

    该用户从未签到

    发表于 2019-11-13 20:08:43 | 显示全部楼层
    X86和X64下的IAT注入技术(附工具和源代码)

    该用户从未签到

    发表于 2019-12-26 21:34:34 | 显示全部楼层
    1111111111

    该用户从未签到

    发表于 2020-1-13 15:10:39 | 显示全部楼层
    好东西 谢谢分享~~~~~~
  • TA的每日心情
    无聊
    2020-7-15 11:25
  • 发表于 2020-1-15 00:59:32 | 显示全部楼层
    支持楼主,支持看流星社区,以后我会经常来!

    该用户从未签到

    发表于 2020-1-21 19:44:19 | 显示全部楼层
    看看支持一下

    该用户从未签到

    发表于 2020-1-26 05:07:45 | 显示全部楼层
    X86和X64下的IAT注入技术  感谢分享
    点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
    您需要登录后才可以回帖 登录 | 注册账号

    本版积分规则

    小黑屋|手机版|Archiver|看流星社区 |网站地图

    GMT+8, 2024-4-25 06:06

    Powered by Kanliuxing X3.4

    © 2010-2019 kanliuxing.com

    快速回复 返回顶部 返回列表