PE补丁技术

这章很多东西之前都见过,也单独总结过,比如动态补丁里说的远程代码注入,还有hijack什么的。之前整理过的这里就不细说了,大体说下思路。这里总结一些之前没总结过的东西。

资料中把补丁分为两类,静态补丁和动态补丁。然后有总结了下补丁的基本要素:进程通讯能力、良好的读写其他进程地址能力、正确识别要补丁目标进程、在其他进程地址空间执行代码的能力

进程通信:

管道通信(有名管道和匿名管道)、邮件槽、剪切板、共享内存、消息机制、socket等等具体细节概念请自行百度。

(1)动态补丁

读写进程内存:

OpenProcess()、ReadProcessMemory()、WriteProcessMemory()

也就是常用的代码注入那一套:

OpenProcess()打开目标进程,获取进程操作句柄。

VirtualAllocEx()在目标进程分配内存。

WriteProcessMemory()函数将远程代码写入。

CreateProcessMemory()在目标进程中创建远程县城并执行。

[远程线程注入记得所有引用都要拷贝进去,注意重定位问题,尽量不要使用全局变量,最好是直接在里面实现LoadLibrary和GetProcAddress或者直接把dll load到目标进程里。]

其实还有很多,比如EIP注入,消息注入什么的。之前我系统的总结过,可以到我主页上看下。

(2)整体替换PE文件:

比如通常的软件升级,或者Hijack或者是输入法注入再或者LSP注入等,都是属于这一类。

软件升级:

这个不解释了,通常的软件升级逻辑。下载升级包对应替换文件。这里有个地方可以注意,可以只替换需要替换的东西,减少流量损失,这种也用于安装上。先装上基本模块,然后后续的陆续更新,或者惰性更新。这样用户体验会相对好很多。

Hijack或者输入法注入等:

这个很好理解,A想调用B.dll,我们分析下B.dll的导出函数,然后自己实现一个假的B.dll,直接替换本来的dll,如果是想要继续注入后在调用原来的功能,可以在假的B.dll里调用原来的dll来计算值。类似与hook 和inlinehook。很简单,不多说。

对了想起个事,做这类事情的时候注意一个问题,就是Windows默认的寻找dll的路径顺序,这个有的时候比较有用。

还有就是注意宿主进程加载dll的时候是静态还是动态。静态的话在运行过程中有可能无法替换相应dll。文件会被占用的。虽然有办法强行基础文件占用,之前我在驱动里弄过这个再或者直接调用微软的相关程序强行结束掉句柄,但是并不能达到我们的效果。动态加载的可以随时替换劫持dll.

(3)部分修改PE文件:

直接修改PE相关机器码,或者把自己的机器码找个地方拷贝进去,通过需改入口地址执行我们的代码,然后再跳转回去原来的机器码,这个姿势之后的章节会细说。再或者干脆就直接把自己代码拷贝覆盖到入口地址处,同时也还可以这样,在入口处直接jmp到我们的代码,干完活在jmp回来。

程序入口

IMAGE_OPTIONAL_HEADER32.AddressOfEntryPoint

OK接下来 来一波测试,编写一个程序。代码如下:

运行则显示:

看下入口地址:

注意上面的并不是main函数入口地址,是这个:

Main函数也是被别人调起来的。通过IDA看下就知道了。OK下载我想的是直接把入口地址换成main2,注意,之前也不是main,是main之前的一些函数。看下main2的地址:

相对RVA是0x1000,OK直接改FOA0x120的地方就行:

改完之后:

OK上面的这些就是测试着玩玩,也就是说可以通过改变PE入口函数来修改相关逻辑。之后这个思路会用到。

后面还有一个内嵌机器码到记事本的程序,明天会用单独整理。

Windows PE 第十三章 PE补丁技术的更多相关文章

  1. Windows Pe 第三章 PE头文件(中)

    这一章的上半部分大体介绍了下PE文件头,下半部分是详细介绍里面的内容,这一章一定要多读几遍,好好记记基础概念和知识,方便之后的学习. 简单回忆一下: 3.4  PE文件头部解析 3.4.1 DOS M ...

  2. Windows Pe 第三章 PE头文件(上)

    第三章  PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...

  3. Windows Pe 第三章 PE头文件(下)

    3.5  数据结构字段详解 3.5.1  PE头IMAGE_NT_HEADER的字段 1.IMAGE_NT_HEADER.Signature +0000h,双字.PE文件标识,被定义为00004550 ...

  4. Windows Pe 第三章 PE头文件-EX-相关编程-1(PE头内容获取)

    获取pE头相关的内容,就是类似如下内容 原理:比较简单,直接读取PE到内存,然后直接强转就行了. #include <windows.h> #include <stdio.h> ...

  5. Windows Pe 第三章 PE头文件-EX-相关编程-2(RVA_FOA转换)

    RVA-FOA之间转换 1.首先PE头加载到内存之后是和文件头内容一样的,就算是偏移不同,一个是磁盘扇区大小(400H)另一个是内存页大小(1000H),但是因为两个都是开头位置,所以相同. 2.看下 ...

  6. 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)

    0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...

  7. Windows PE 第十二章 PE变形技术

    PE变形技术 这章东西太多,太细了.这里我只记录了一些重点概念.为后面学习做铺垫. PE变形:改变PE结构之后,PE加载器依然可以成功加载运行我们的程序. 一 变形常用技术: 结构重叠技术.空间调整技 ...

  8. Reverse Core 第二部分 - 13章 - PE文件格式

    @date: 2016/11/24 @author: dlive ​ PE (portable executable) ,它是微软在Unix平台的COFF(Common Object File For ...

  9. Windows下反(反)调试技术汇总

    反调试技术,恶意代码用它识别是否被调试,或者让调试器失效.恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间.为了阻止调试器的分析,当 ...

随机推荐

  1. 漏洞复现-CVE-2018-15473-ssh用户枚举漏洞

          0x00 实验环境 攻击机:Win 10 0x01 影响版本 OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机 0x02 漏洞复现 针 ...

  2. 计算机二级Python学习笔记(一):温度转换

    今天通过一个温度转换的十行代码,理解了一些Python的基本元素. 所谓温度转换,就是摄氏度和华氏度的转换,要求输入摄氏度,可以输出华氏度,反之一样能实现.代码如下: #TempConvert.py ...

  3. Python开发环境从零搭建-02-代码编辑器Sublime

    想要从零开始搭建一个Python的开发环境说容易也容易 说难也能难倒一片开发人员,在接下来的一系列视频中,会详细的讲解如何一步步搭建python的开发环境 本文章是搭建环境的第2篇 讲解的内容是:安装 ...

  4. Python基础【while循环】

    Python基础[while循环] 1.while循环: 格式 while 条件: ...... print(......) 注意,在while语句也可以嵌套else,但是else不执行循环,执行后直 ...

  5. android分析之Parcel

    将数据打包,跨进程传输(通过Binder).看看这货究竟是啥玩意: Parcel.java : public final class Parcel { private static final boo ...

  6. C# 通过ServiceStack 操作Redis——List类型的使用及示例

    Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销, /// <summary> /// Redis list的实现为一个双向链表 ...

  7. 使用 Velero 跨云平台迁移集群资源到 TKE

    概述 Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份.还原和迁移集群资源,关于如 ...

  8. 13、Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not present.

    pip-script.py文件缺失问题 问题: Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not ...

  9. SpringCloud(六)分布式事务

    在分布式系统中,分布式事务基本上是绕不开的, 分布式事务是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上 .其实就可以简单理解成在分布式系统中实现事务 ...

  10. Istio安全-证书管理(实操一)

    Istio安全-证书管理 目录 Istio安全-证书管理 插入现有CA证书 插入现有证书和密钥 部署Istio 配置示例services 校验证书 卸载 Istio的DNS证书管理 DNS证书的提供和 ...