pe静态注入

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:少就是多,快就是慢:

静态注入对于小生来说花了很长时间才成功了,最大的坑就是dll版本不对导致一直失败


提示:以下是本篇文章正文内容,下面案例可供参考,小生在win10 64bit成功运行

一、准备阶段

用到的软件:PEview、WinHex、VScode

二、使用步骤

1.编写dll

代码如下(示例):

#include <windows.h>
extern "C" __declspec(dllexport) void SayHello(void){}
// DLL入口点函数
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	MessageBoxA(GetActiveWindow(), "DLL已进入目标进程。", "信息", MB_ICONINFORMATION); //弹出一个模态对话框
	return TRUE;
}

打包一下,

g++ -m32 -shared  -o hih.dll C:\Users\admin\Desktop\dll_dtudy\hi_dll.cpp

在这里插入图片描述
dll准备好后,用到上篇文章的test.exe,下面贴出源代码:

#include <windows.h>
int main(){
    MessageBox(NULL, "hello32world", "32", MB_ICONINFORMATION); //弹出一个模态对话框
     return 0;
}

忽略打包过程,记住dll是32位的,exe必须是32位
使用peview分析
在这里插入图片描述
在WinHex找到该区域地址,复制下来
在这里插入图片描述
粘贴到idata段的末尾,如图有大片空白段,物理地址是2780,
在这里插入图片描述
保存一下用PEview打开,找到新IID的File Offset地址,查看RVA=6580
在这里插入图片描述
用Win Hex更改导入表地址;
在这里插入图片描述
user32.dll的起始地址如图,复制下来,粘贴到新的IID(Image Import Directory)地址后面
在这里插入图片描述
其中,最前面4个字节是INT的RVA
之后8个字节留空
接着4个字节是dll名字,最后4个字节是要导入的函数,也就是IAT
在这里插入图片描述

在线把SayHello(要导出的函数)转为16进制
在这里插入图片描述
找一块空地写入字符串,小生找的是新IID的后面(为什么不找新建的区呢,主要是麻烦,鼠标要滑来滑去的)
选择ASCII Hex
在这里插入图片描述

SayHello(要导入的函数)的RVA=65E0,它前面的两个空字节是顺号
导入的函数Name的RVA=65D0
接着
在物理地址27A8写入Name的RVA=65D0
在物理地址279C写入INT的RVA=65F0
在物理地址27AC写入IAT的RVA=65F0
65F0指向要导入函数的RVA(SayHello)
在这里插入图片描述
简单来说就是RVA指向RVA
INT和IAT的值为什么一样,因为他们的值都是要导入函数(SayHello)的RVA
至此修改完毕,双击运行成功了
在这里插入图片描述

结语

勤能补拙,小生失败了上百次才完成"PE添加节"和"PE静态注入"的实验
路漫漫其修远兮,吾将上下而求索

在这里插入图片描述

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都是爱️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值