易语言教程_易语言源码_易语言写挂_易语言论坛_看流星社区

 找回密码
 注册
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 288|回复: 1

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是测试用例,被加载后运行记事本程序)

游客,如果您要查看本帖隐藏内容请回复
发表于 2018-5-29 23:25:47 | 显示全部楼层
C++ 伪任意地址HOOK类源码 [复制链接]
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2018-10-22 05:54 易语言论坛 易语言导航

Powered by 看流星社区 X3.2

©2011-2016 最好的辅助编程技术论坛

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