通过修改PE文件导入DLL

PE 之导入表解析和注入 1、导入表 导入表是在可选PE头得数据目录项得第二项 其结构如下 其中name是一个RVA,是DLL的名字 OriginalFirstThunk指向INT表,为 IMAGE_THUNK_DATA32的结构。这个结构的值中如果最高位为1 ,那么除去最高位的值函数的导出序号,否则为指向IMAGE_IMPORT_BY_NAME的RVA 其结构如下 其中Hint值无关紧要。 ** FirstThunk** 指向的是IAT表,其内容结构与OriginalFirstThunk指向的INT表一模一样 2、程序启动 阅读详情

通过修改PE文件导入DLL

修改思路

在这里插入图片描述

实例

1.查看IDT信息

图1
在这里插入图片描述

由上图我们可以得到以下信息:

IDT的RVA信息在文件偏移160h处,值为84CC

IDT的大小信息在文件偏移164h处,值为64h

1.1转到IDT处查看具体信息

转到84CC也就是文件偏移76CC

在这里插入图片描述

共有5个IID结构体(每个IID20个字节,对应一个DLL相关信息),最后一个IID为NULL

由上图我们发现并没有足够空间添加我们的DLL,

那么转移IDT

2.转移IDT

由图1可知IDT在.rdata节区,

查看.rdata节区是否有多余的空白区域
图二

在这里插入图片描述

由上图可知.rdata节区的文件偏移为5200h,大小为2E00h

转到8000h(5200+2E00),这里我们从后往前看,因为节区中一般后面才会是NULL区域
在这里插入图片描述

从7E60~7FFF都是NULL,

但是还不能直接将IDT转移至此处,

需要先看看.rdata节区头的信息,看看该空白区域是不是有效的NULL区域(不一定是NULL就能用,只有在节区头中规定了的区域才是有效的)

由图2可知:.rdata节区在文件中大小为2E00h,在内存中大小为2C56h,很明显还有1AA(2E00-2C56)的空间可以使用,那么我们可以放心的将IDT转移到此处

3.修改IDT的RVA与SIZE

转到文件偏移160h:
在这里插入图片描述

修改IDT的RVA与SIZE:
在这里插入图片描述

8C80就是文件偏移7E80处,大小多了14h(20个字节),就是我们添加的DLL

4.删除绑定导入表

绑定导入表是一种提高DLL加载速度的技术,如果其值为0,则不用修改,如果不为0,那么要将其置位0,使其不存在(因为绑定导入表不存在是允许的,但如果存在,里面信息记录错误,那么会导致程序运行时出错)

在这里插入图片描述

可以看到其值为0

5.创建IDT

将之前的IDT信息(84CC处)复制到新位置8C80(文件偏移7E80):

在这里插入图片描述

6.写入DLL信息

IID中有3个重要成员需要写入:

  1. INT的RVA
  2. DLL名字的RVA
  3. IAT的RVA

在这里插入图片描述

这里用的8D00,8D10,8D20对应文件偏移7F00,7F10,7F20

正好在下面,比较方便

7.设置INT,NAME,IAT

在这里插入图片描述

8.修改IAT所在节区属性

PE文件加载到内存时,PE装载器会修改IAT,将函数实际地址写入IAT,所以IAT所在节区必须要有可写属性,这是一种方法

因为可选头的最后一个成员Data Directory数组含有IAT,所以直接转到此区域为dummy添加IAT,然后将整个IAT大小添加8个字节即可,这是另外一种方法

先试试方法一

IAT在.rdata节区,修改.rdata属性

在这里插入图片描述

将40000040与80000000(可写属性值)进行bit OR运算,得到C0000040

在这里插入图片描述

9.验证

在这里插入图片描述
在这里插入图片描述

DLL导入成功

DLL注入_修改导入表(1) PE文件分析 (一) 替换DLL函数 通过修改PE文件导入导出表来更改函数。单纯分析PE文件是一件比较无聊的事,通过修改可以更加灵活的利用和理解PE文件。这就像生活一样,总要有一些特别的事,才能更加有灵感。学习本身就是生活的一部分,如何让程序更加灵活,是一个比较值得去实践的事,可以更加接近计算机的一些思想。 (二) 环境 VC++ 6.0 为了减少复杂度,用VC++ 6.0编译sum.cpp su... 阅读详情

相关推荐

把dll模块注入到游戏进程的方法_基于文件修改的注入方式

通过对pe结构的了解,我们会发现进程加载时依赖的dll主要来源于PE的导入表,因此我们可以自己写代码修改pe文件的导入表,也可以利用LordPe等Pe工具自行修改文件的导入表,从而让想注入的dll在原PE文件中有一席之地。(4)再用PrcoessExplorer查看test.exe所加载的dll,会发现dbghelp_0.dll(改名后的系统dll)和dbghelp.dll(我们的dll,MyDbghelp.dll改名得到的)都会被加载,如下图所示,请注意两个dll的路径。

douluo998的博客 1843

PE输入表DLL注入

PE输入表DLL注入

944

手动进行dll静态注入

大概思路是这样的:要注入一个dll文件,也就是需要修改输入表的中的IMPORT Directory Table结构,需要增加一个对应的结构体和该结构对应的IMAGE_IMPORT_DESCRIPTO和对输入表的size进行修改。所以我们只需要在原先的结构体数组后面增加对应的就够就行了,但是有时候往往在这些数据之后存在其他的数据,我们进行添加会对其进行覆盖,这是我们不想看到的。因此我们可选择考虑将整...

qq_38184895的博客 3262

Dll注入--修改PE文件头

DLL注入,除了常见的远线程注入,挂钩和修改注册表以外还可以通过修改PE文件头来达到注入目的,废话少说先上菜。1. 思路PE文件经常会调用外部DLL文件,而需要调用的DLL文件都会在PE文件说明,通过 NT头->可选头->导入表 可以找到导入表,而导入表就是对需要导入的每个DLL的说明,它实际上是一个20个字节组成的IID结构体数组,每个结构体就是一个DLL信息说明,我们只需要想PE文件中准确添加这

王二娃的生活的博客 1万+

eXeScope工具深度解析与DLL/PE文件修改实战

eXeScope是一款经典的PE文件资源查看与编辑工具,广泛应用于逆向工程、软件本地化及界面定制领域。它能够直接解析Windows可执行文件中的资源结构,支持图标、位图、对话框、菜单及字符串表的提取与修改。其无需源码即可对资源进行可视化操作的特性,使其成为快速修改第三方程序界面元素的实用工具。尤其在老旧软件维护、汉化项目和安全研究中,eXeScope提供了轻量级且高效的分析入口,是理解PE资源组织机制的理想起点。

weixin_30700095的博客 511

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2093

PE格式: 新建节并插入DLL

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等。

微软技术分享 5845

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

PE文件本地DLL注入实现

本工具是通过修改PE文件的OEP位置,让它指向我们插入的代码(调用LoadLibrary函数),从而载入DLL进行程序注入,载入DLL后系统会自动调用DllMain函数,由于修改了OEP,使得我们的代码执行在被注入程序之前,且在同一地址空间里,简直可以为所欲为了。

flukeshen的博客 2507

基于卷积神经网络的人脸识别算法

摘要:近年来,随着科学技术的不断发展,人脸识别技术日渐成熟,使得人脸识别技术的使用率不断增大。例如:门禁、ATM机、公安系统以及新兴起的人机交互等领域,都应用到了人脸识别系统。在人脸识别研究领域中,深度学习扮演着重要的角色。由于深度学习的人脸识别技术凭借其识别率高、识别快等特点,逐渐成为整个领域的主流技术。在众多深度学习算法中,以卷积神经网络为代表的人脸识别系统得到了广泛应用,主要研究内容如下:首先,通过对经典损失函数进行研究,对比每种损失函数的特点,然后根据A-Softmax函数进行改进,借助Margin

yyq2263511327的博客 1万+

工业相机与ABB机器人Socket通信实战:手把手教你用RobotStudio 6.08搭建视觉引导工作站

本文详细介绍了工业相机与ABB机器人通过Socket通信实现视觉引导工作站的实战教程。使用RobotStudio 6.08平台,涵盖工作站搭建、坐标系标定、RAPID代码开发及TCP/IP通信配置,特别解析了欧拉角与四元数转换等关键技术难点,助力智能制造产线升级。

weixin_42531516的博客 409

通过修改PE文件的方式导入DLL(包含详细操作流程)

我们需要修改IDT表,增加一条我们字节DLL文件的IID以达到导入的目的。在NT头下IMAGE_DATA_DIRECTORY_ARRAY结构体,找到导入表,导入表第一个参数的值便为IDT的RVA RVA是程序的相对虚拟地址,我们要想在文件中精确定位IDT,必须要把RVA转位RAW,在上图中也叫FOA(文件偏移,文件中某个位置距离文件头的偏移),具体的计算公式:84CCh属于.rdata节区,VirtualAddress 和PointerToRawData可从节区头中获取。 VirtualAddress 是指

fanxiaoyao1的博客 1987

概念解析 | 事件相机的原理 (含仿真代码)

在我们熟悉的世界里,传统相机就像一个勤勉的绘画师,每隔固定的时间就为我们勾勒出一幅完整的画面。但是,大自然中有太多瞬息万变的精彩场景,这种"定时绘画"的方式往往难以捕捉。于是,一种全新的"观察者"应运而生 -事件相机(Event Camera)。事件相机,就像是一群极其敏感的"像素哨兵",它们不再按部就班地等待指令,而是主动感知周围的变化,只有在光线强度发生显著变化时才会发出信号。这种革命性的设计,让事件相机拥有了传统相机难以企及的优势:超高的时间分辨率、极低的延迟、宽广的动态范围,以及出色的能效比。

NLOS的博客 1423

通过修改PE加载DLL

练习文件 直接修改TextView.exe文件,使其在运行时自动加载myhack3.dll文件。 TextView.exe是一个非常简单的文本查看程序,只要用鼠标将要查看的文本文件(myhack3.cpp)拖动到其中,即可通过它查看文本文件的内容。 使用PEView工具查看TextView.exe可执行文件的IDT(import Directory Table,导入目录表),TexeView.exe中直接导入的DLL文件为KERNEL32.dll、USER32.dll、GDI32.dll、SHELL32

qq_39249347的博客 1591

【x265编码器】章节6——x265的码率控制

对于CRF模式而言,右边这部分是是固定值m_rateFactorConstant,在初始化的时候确定,跟分辨率,qCompress这个参数是外部可设参数,默认值0.6,因此QP的选择只跟编码复杂度有关,跟码率无关,编码复杂度越高,QP值越高,因此可以一定程度上说CRF模式是恒定质量的编码模式。其中Complex表示当前帧的编码复杂度,x265中用lookahead模块计算的SATD作为衡量当前帧的复杂度,c为模型参数,qscale是率失真优化中的拉格朗日乘子,R为编码当前帧需要的比特数。

vcvdv123的博客 1万+

4、LTE无人机认证:保障通信安全的新方案

本文针对LTE网络中无人机通信存在的安全风险,提出了一种基于可信第三方GCS的新型认证协议。该协议通过非对称加密和哈希函数保护IMSI等敏感信息,防止身份泄露、中间人攻击、拒绝服务攻击和位置追踪等威胁。利用Scyther工具对协议进行形式化分析,验证了其在机密性、一致性和活性等方面的安全属性,证明该方案能有效提升无人机在LTE网络中的通信安全性与隐私保护能力。

pink的博客 61

PE 通过导入表注入 Dll

导入表注入,当程序被加载时,系统会根据程序导入表信息来加载需要用到的dll,导入表注入的原理就是修改程序的导入表,将自己的dll添加到程序的导入表中,这样程序运行时可以将自己的DLL加载到程序的进程空间。...

多一份贡献,多一份环保 1293

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

R语言caret拟合模型:train函数构建xgBoost Dart模型、模型调优、自定义设置trainControl函数和tuneLength参数

statistics+insight+vista+power 530

《逆向工程》通过修改PE注入DLL

文章目录通过修改PE加载DLL修改导入表查看IDT空间是否足够移动IDT 通过修改PE加载DLL TextView是一个文本查看工具,将文本文件拖入即可显示。 代码如下,注意按照32位编译,否则PEView不能分析64位IDT。 #include "windows.h" #include "stdio.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,...

Starr 1243

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

DLL系列------编程实现感染PE文件加载DLL

编程实现感染PE文件加载DLL 这篇文章是在网上看到的,貌似我找不到原文了。但是网上的排版非常乱,而且觉得此篇此篇文章对学习pe文件有很大帮助。 首先发张图让大家对PE文件有个整体认识 PE文件是Windows系统可执行文件采用的普遍格式,像我们平时接触的EXE、DLL、OCX,甚至SYS文件都是属于PE文件的范畴。很多Win32病毒都是基于感染PE文件来进行

ebxds的专栏 3201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Dll注入:修改PE文件 IAT注入

PE原理就不阐述了, 这个注入是PE感染的一种,通过添加一个新节注入,会改变PE文件的大小,将原有的导入表复制到新节中,并添加自己的导入表描述符,最后将数据目录项中指向的导入表的入口指向新节。 步骤: 1.添加一个新节;映射PE文件,判断是否可以加一个新节,找到节的尾部,矫正偏移,对齐RVA 填充新节PIMAGE_SECTION_HEADER,修改IMAGE_NT_HEADERS,...

aijuzhou1959的博客 319

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

修改导入表载入DLL

关于修改EXE文件的导入表,实际上是一个很古老的话题了(如果您是此中高手,请不要在这篇文章浪费时间了,如果您发现了其中的问题,还请多多指教).一些PE相关的软件,也都实现了这样的功能,例如Stud_PE.    Stud_PE通过添加一个新节并将导入表连同添加的内容一并复制到新节的方法来实现对DLL的导入.    使用这样的方法只要是PE格式的EXE文件,都可以实现导入DLL的功能,但此方法,实现

白日梦 7124

注入技术--修改pe文件导入表进行注入

1.修改导入表,即添加一个新的导入表描述符及其iat,int. 这样系统加载该pe文件时将自动加载添加的dll,从而实现dll注入 2.思路: 可以手工修改,但是复杂程度一点也不比写代码低,而且低效. 通过代码实现可以一劳永逸. 新增一个节来存储新的导入表. 其实也可以在原来的pe文件找空隙插入进去,但是又很难实现通用,因为不同的pe文件空隙位置大小不同.容易出错 新增的导入表描述符通过序...

weixin_30849403的博客 604

python之pefile模块(解析PE)

发现很多的朋友经常用到PE格式相关的开发,如解析PE文件的格式,获取相关的内容。比如常常用到的静态的病毒启发式检测模型的建立、病毒样本分类、查壳脱壳等。 搜索了一下发现论坛里面没有我要讲的这个东西,于是我在这里向大家推荐pefile这个python库。 这个是基于MIT licence的一个开源项目,你可以在上面做更多的开发。 开发包的下载地址 http://code.google.c

B_H_L的专栏 1万+

通过修改IAT来拦截API

跟进程打过一定交道之后你肯定会知道,进程在开始执行的时候会被加载到一个基地址,也就是GetModuleHandle(NULL)对应的值。在基地址后面的一定地址范围里存储有进程的映像文件(image),其中包含了很多信息,比如数据啊,代码啊什么的。在这些数据里,有一个比较重要的部分

765
上一篇: 测试需求在项目各个阶段的区别
下一篇: WindowsAPI笔记
learn112
博客等级 码龄6年 4068粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值