PE格式第五讲,手工添加节表

作者:IBinary
出处:http://www.cnblogs.com/iBinary/
版权所有,欢迎保留原文链接进行转载:)

首先我们要用汇编编写一段汇编代码,用来生成标准PE

一丶标准PE生成的汇编代码

.
.model flat, stdcall
option casemap:none include windows.inc
include user32.inc
include kernel32.inc includelib user32.lib
includelib kernel32.lib .data
g_szMsg db "Hello PE!", 0dh, 0ah, .code
START:
invoke MessageBoxA, NULL, offset g_szMsg, NULL, MB_OK
invoke ExitProcess, end START

然后可以生成一个标准PE

当然为了讲解这里使用标准PE,你也可以自己随便找个PE尝试.

二丶手工添加节表

手工添加节表,我们首先有几个步骤

/*

1.复制一个节到最后一个节下面
2.在NT头中的文件头中,修改节区数量的个数
3.修改节表中新节的虚拟地址大小 
4.修改节表中文件的对齐值
5.修改节表中新节的虚拟地址
6.修改可选头(选线头或者叫做扩展头)中的镜像大小 */
写完才发现好像比这里面多一项,自己看下吧.有图有教程.不难.

首先我们先做第一步,找到最后一个节,拷贝一份,复制到下面

1.寻找最后一个节,复制到下面

当然也可以不是最后一个,不过最后一个比较方便

使用010 Edit打开我们的Hello.exe,找到最后一个节

010有强大的模版功能,使用模版,可以直接找到最后一个节,我们可以看到,现在有3个节存在

复制最后一个节,拷贝到0220h的地方

现在已经完成了第一步了,复制节到下边

2.修改NT头中的文件头中的节区数量

修改为4,使用模版功能可以快速找到

3.修改表中虚拟地址大小

使用010的模版重新解析以下,会发现我们的节已经添加了,现在要做的就是修正偏移了.

点击我们的节,开始修正偏移即可

修改我们新添加节的虚拟地址大小

4.修改新节中的虚拟地址

上一个节的虚拟地址是从3000开始的,所以我们修改为4000h,相差一个分页即可.但是注意上图可以看出,我正要修改,还没有修改,这里我是修改了,只不过为了方便大家观看为什么修改,所以我在开始编辑的时候就截图了

5.修改文件对齐值

文件对齐值默认是512,也就是200h,所以这里不用修改,但是注意,文件对齐值在可选头中可以设置的.不过最好不要动了.

6.设置文件偏移

上一个节的文件偏移是800开始,代表了节区的地址在800的位置,那么我们新添加的就改为A00h

%200(文件对齐值)对齐,这个地方使我们的节区

7.添加文件大小

上面我们设置了文件对齐值是200h了,那么我们就要添加200h(512)个字节,在对应的文件偏移处

我们设置的文件偏移处是A00,所以拷贝512个对齐值复制到A00位置即可.

8.设置文件映射大小

我们新添加了一个节,那么映射到内存中就要多出一个分页大小,我们要设置一下

设置位置 NT头->可选头->sizeofImage(文件映射大小)

保存PE文件,我们运行,然后OD调试查看.

OD查看一下是否成功添加节

跳转到虚拟地址处查看

是我们设置的90,所以已经成功添加了一个节

作者:IBinary
出处:http://www.cnblogs.com/iBinary/
版权所有,欢迎保留原文链接进行转载:)

PE格式第五讲,手工添加节表的更多相关文章

  1. PE格式第七讲,重定位表

    PE格式第七讲,重定位表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首先, ...

  2. 破解软件系列-PE文件深入浅出之Section Table节表

    我们已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到 section table(节表)了.节表其实就是紧挨着 PE header 的一结构数组.该数组成员的数目 ...

  3. PE文件格式---节和节表

    17.1.4  节表和节 从排列位置来看,PE文件在DOS部分和PE文件头部分以后就是节表和多个不同的节(如图17.1中的③和④所示).要理解什么是节表,什么是节以及它们之间的关系,那就首先要了解Wi ...

  4. PE格式第八讲,TLS表(线程局部存储)

    PE格式第八讲,TLS表(线程局部存储) 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶复习线程相关知识 首先讲解 ...

  5. 小甲鱼PE详解之区块表(节表)和区块(节)续(PE详解05)

    这一讲我们结合实例来谈谈区块表的定义以及各个属性的含义. 首先,我们先用之前学过的一点知识在二进制文件中手动翻找区块表,这样做的好处是可以使你很快的对PE结构牢记于心.学来的东西就是能用的东西,不能用 ...

  6. PE文件格式详解,第三讲,可选头文件格式,以及节表

    PE文件格式详解,第三讲,可选头文件格式,以及节表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶可选头结构以及作 ...

  7. PE格式第四讲,数据目录表之导入表,以及IAT表

    PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...

  8. PE格式第九讲,资源表解析

    PE格式第九讲,资源表解析 一丶熟悉Windows管理文件的方法 首先,为什么标题是这个,主要是为了下边讲解资源方便,因为资源结构体很乱.如果直接拿出来讲解,那么就会很晕. 1.windows管理文件 ...

  9. 小甲鱼PE详解之区块表(节表)和区块(节)(PE详解04)

    到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到SectionTable (区块表,也成节表).(视频教程:http://fishc.com ...

随机推荐

  1. 即时作图新工具—ProcessOn【推荐】

    www.processon.com 推荐这个在线作图网站:免费登录,云端存储,面向对象,最重要的是提供了丰富模板! 在线软件的人气会越来越高,这是趋势啊~

  2. Java 多线程(一) 基础知识与概念

    多线程Multi-Thread 基础 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程 进程:执 ...

  3. 团队作业4——第一次项目冲刺(Alpha版本)2st day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 界面 1.四个用户登录界面已经完成. 2.界面内的功能完成了一小部分. 登陆部分 1.QQ授权已经申请,还未通过. 2.通过好 ...

  4. 学号:201521123116 《java程序设计》第四周学习总结

    1. 本周学习总结 2. 书面作业 Q1. 注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图)答:注释的插入:注释以/开始,以/结束类注释/**.... ...

  5. 201521123108 《Java程序设计》第4周学习总结

    1. 本章学习总结 2. 书面作业 Q1. 注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看.(截图) 答: Q2. 面向对象设计(大作业1-非常重要) 2. ...

  6. 201521123071 《JAVA程序设计》第十三周学习总结

    第13周作业-多线程 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 1.常用端口号:Web服务:80 FTP服务:21 Telnet服务:23 2.网络 ...

  7. 201521123086 《Java程序设计》第9周学习总结

    本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. (1)使用try...catch语句捕获异常(try块后可跟一个或多个catch块,注意子类异常要放在父类异常前面,否则子 ...

  8. linux下修改rm命令防止误删除

    前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. ...

  9. 纳税服务系统【抽取BaseService、条件查询】

    抽取BaseService 到目前为止,我们已经写了三个模块的开发了.我们已经抽取过了BaseAction.BaseDao,我们这次来看看我们的Service接口. UserService /** * ...

  10. 03_Ext_Viewport_Window_Dialog

    Viewport Viewport 代表整个浏览器窗口,直接渲染到document.body节点,取代页面中的所有内容.一般作为应用程序主界面. 随着浏览器显示区域的大小自动改变,一个页面中只能有一个 ...