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. python爬虫(正则取数据)读取表格内的基金代码后爬取基金最新净值,同时写到对应的表格中,基于最近一次购买净值计算出涨跌幅(名字有点长)

    最近基金跌的真够猛,虽说是定投,但大幅度下跌,有时候适当的增加定投数也是降低平均成本的一种方式 每天去看去算太费时间,写了个爬虫,让他自动抓数据后自动计算出来吧 实现逻辑: 1.创建了一个excel表 ...

  2. web之面试常问问题:如何实现水平垂直居中?

    前提准备,在HTML页面中定义一个div,div中内容自定义. <div class="box sc">致我们呼啸而过的青春</div> 样式: div.b ...

  3. java mvc 及其缓存

    使用Spring框架的好处是什么? - 轻量:Spring 是轻量的,基本的版本大约2MB. - 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. ...

  4. unbutu系统扩展磁盘大小

    建议下载一个可视化工具,这样的话就更不容易出错 sudo apt install gparted 在终端中运行这条命令就可安装可视化工具 fdisk -l 在终端中输入这条命令来查看自己系统所挂载的磁 ...

  5. 《逆向工程核心原理》——通过调试方式hook Api

    1.附加目标进程, 2.CREATE_PROCESS_DEBUG_EVENT附加事件中将目标api处设置为0xcc(INT 3断点) 3.EXCEPTION_DEBUG_EVENT异常事件中,首先判断 ...

  6. springMVC:校验框架:多规则校验,嵌套校验,分组校验;ssm整合技术

    知识点梳理 课堂讲义 学习目标 能够阐述表单验证的分类和区别 能够运用表单验证的常用注解 能够编写表单验证的示例 能够编写SSM整合的应用案例 能够总结SSM整合的步骤 1 校验框架 1.1 入门-视 ...

  7. Docker的深入浅出

    定义: Docker是一个虚拟环境容器,可以将你的开发环境.代码.配置文件等一并打包到这个容器中,并发布和应用到任意平台中. 原理: docker底层使用了LXC来实现,LXC将linux进程沙盒化, ...

  8. Tkinter系列教程01—引言和安装Tk—Python GUI编程

    目录 Tkinter教程系列01--引言和安装Tk 引言 什么是Tkinter 安装 Tk 为 Windows 安装 Tk 验证是否安装正确 为 GNU/Linux 安装 Tk 使用 Linux 的包 ...

  9. vue 快速入门 系列 —— 侦测数据的变化 - [vue 源码分析]

    其他章节请看: vue 快速入门 系列 侦测数据的变化 - [vue 源码分析] 本文将 vue 中与数据侦测相关的源码摘了出来,配合上文(侦测数据的变化 - [基本实现]) 一起来分析一下 vue ...

  10. Elasticsearch集群升级指引

    目录 背景 第一部分 版本升级指引 第二部分 升级方法和具体步骤 总结 参考文献及资料 背景 Elasticsearch集群的版本升级是一项重要的集群维护工作.本篇文章参考官方文档,将详细介绍相关细节 ...