新增节添加代码【滴水逆向三期46笔记】

简介: 新增节添加代码【滴水逆向三期46笔记】

在之前的学习中,我们已经了解了在节空白区添加代码,但是有些情况节是没有空白区的,那么我们要怎么来添加我们的shellcode呢?我们可以通过新增节来添加shellcode:

一.新增节思路:

那么我们要怎么新增节呢?在这里给出基本思路:

我们要新增节,那么必须新增一个节表,我们该怎么新增一个节表?

首先,我们需要判断是否有足够的空间来新增节:

SizeOfHeaders-(DOS头大小+DOSstub大小+PE标记+标准PE头大小+可选PE头大小+所有节表大小)>=两个节表大小(80)

这里为什么要留出两个节大小呢?因为机器会做判断,在所有节结束后机器会判断后面40个字节数据是否为零,为零的话机器才会认为所有节结束。

那么如果这里剩余的大小不足两个节表大小怎么办呢?

如果不足两个节表大小,那么我们还能够通过以下的方法来让所有节表后空闲的大小够80个字节:

我们知道DOSstub中的数据都是垃圾数据,那么我们可以将DOSstub中的数据全部删除然后将PE标记,标准PE头,可选PE头全部前移(其他数据不要前移),移动到DOSstub的位置,然后修改DOS头中的e_lfanew字段,让他指向新的PE标记位置,这样在原有节表后就会空闲出大片区域供我们新增节。注意我们新增节后的40个数据应全为0.

二.新增节具体实现:

1.判断是否有足够的空闲区供我们新增节

2.新增节表

3.将新怎解表后的40个数据全改为0

4.修改NumberOfSection的大小(如果新增一个节的话就是+1)

5.修改SizeOfImage的大小

6.修改节表信息(name等)

7.最后记得修改节属性,如果是可以执行的shellcode,那么需要修改为可执行。

本篇文章介绍的是手动新增节,以后在写出新增节的程序时,我会在csdn中发出源代码供大家参考。

本篇文章为本人听课后写的随笔,完全展示我个人理解,如果有理解错误之处,希望大家指出,我会非常虚心地学习,希望我们能共同进步!

相关文章
|
7月前
|
C++
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】
新增节添加ShellCode【滴水逆向三期46作业源码】
新增节添加ShellCode【滴水逆向三期46作业源码】
|
存储 编译器
FileBuffer转ImageBuffer【滴水逆向三期43笔记】
FileBuffer转ImageBuffer【滴水逆向三期43笔记】
|
Java 程序员 开发者
只用一行代码,你能玩出什么花样?
只用一行代码,你能玩出什么花样?
100 1
|
存储 编译器
IAT表入门简析【滴水逆向三期52笔记】
IAT表入门简析【滴水逆向三期52笔记】
FileBfufer转ImageBuffer【滴水逆向三期43作业源码】
FileBfufer转ImageBuffer【滴水逆向三期43作业源码】
|
数据库
第一遍阅读之《信息系统开发与管理》(二战)
第二次学习信息系统开发与管理,第一感觉是:必过! 信息系统开发与管理距离我们软件的具体开发很近,在我们生物专业学习过程中,有一门课程叫做《食品仪器分析》,其中有一章节的内容讲的大概是建立一个工厂的过程是怎么样的。这其中的方法和我们的《信息系统开发与管理》的内容有异曲同工之妙,我们要建立的是一个工厂,但是摆脱不了和周围事物的联系。
|
区块链 开发者
Jogger慢跑者跑鞋零撸模式系统开发详细规则/逻辑分析/案例详情/项目方案/源码部署
  DApp是指以区块链为底层技术平台的分布式应用程序,它使得开发者可以构建去中心化和自主运行的应用程序,并通过链上的合约机制实现代码不可更改性和事务透明性。
|
前端开发 C语言
带你读书之“红宝书”:第十章 函数④
带你读书之“红宝书”:第十章 函数④
86 0
带你读书之“红宝书”:第十章 函数④
|
JavaScript 前端开发 C语言
带你读书之“红宝书”:第十章 函数③
带你读书之“红宝书”:第十章 函数③
110 0
带你读书之“红宝书”:第十章 函数③