pe文件之手工构建节表(段表)和节的具体内容

news2024/11/23 1:06:07

一、实验目的

        通过使用winHex手动 在原来的文件中 追加节(.text代码节、.rdata引入函数节、.data数据节),然后利用stud_pe添加节表的name,大小等信息,对一个pe文件进行修复,从而了解一个pe文件的具体构成

二、实验步骤:

1.调试分析程序,找出错误原因。

2.从所给信息中分析出数据应该在哪个段及在PE文件中的位置,添加至文件。

3.修复其他涉及到段结构的部分,调试程序,使之正常运行

 

三、具体操作:

1.首先使用winhex 和 stud_pe找出问题所在:

(1)首先,直接打开程序和用OD打开程序都失败了

(2)然后,用stud_pe打开文件,发现number of sections 为0,这个肯定有问题,节的数目至少得有3个吧,然后,打开dataDerictory,全0,这就问题大了

(3)之后,用winHex打开,文件的总共大小为0-3FF,而文件的对齐为200H,所以,只有pe头部分和节表,节的具体内容根本没有

2.具体分析clues.txt中的3个节分别是rdata,text还是data:在winhex中分别进行打开创建,然后分析对应的ascii的内容:

(1)这个很明显是.data节的内容

 (2)这个很明显是.rdata节的内容:

(3)最后那个节必然就是.text节的内容了,不信的话,可以用OD试一试,翻译这个2进制的汇编含义:

操作,用OD随便打开一个程序比如winhex.exe,然后在一个全0的位置点击鼠标右键二进制,编辑,直接copy进去,点ok之后,就可以在对应的位置看到汇编代码了,很明显的push,call等语句好吗

 

3、重点来了,使用winhex对节内容进行填充!

(1)分析3个段表的位置:

程序的入口地址为1000(RVA),ImageBase为400000,sectionsAlignment为1000,FileAlignment为200.

Clues.txt中是每个段表中的信息,每个段表中的内容都小于文件对齐大小0x200和段内存对齐的大小0x1000.所以在pe结构中,文件的结构布局应该是:

PE头(文件分布 0-3FF)内存分布40000-41000

SECTION1(文件分布400-5FF)内存分布   41000-42000

SECTION2(文件分布600-7FF)   内存分布   42000-43000

SECTION3(文件分布800-9FF)   内存分布   43000-44000

pe头加载到内存后的VA为1000.而程序的入口地址也为1000,说明代码段应该是第一个段表。

(2)开始使用winHex进行填充:

 第一部分:1024字节的代码区

 

第二部分——1024字节的rdata引入函数区:

第三部分:1024字节的data数据区:

 

4.最后一步,就是在stud_pe软件中添加这3个节的 对应的节表的内容!:

 (1)比如,填写第一个.text代码节表,

virtualsize 和 rawsize 都是指有效的字节数目

rawoffset就是200字节对齐的文件位置

virtualoffset就是1000字节对齐的内存位置

最后属性自己选右边即可

(2)效果:

 

 5.进一步使用ollydebug对现实的字符串进行改正:

通过对这个00403007进行窗口跟随,发现这个字符串就是lab

所以,通过修改汇编为0040300D,数据才会变成下面这个 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/891719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费AI学习网站(二)

国内绘画midjourney网站 http://aijiaolian.chat优质提示词分解教学 https://q3iylvv7qj.feishu.cn/docx/UGMzdPVGjo1fHcxu1kjcuXFcnff?fromfrom_copylink设计图AI实战,如何用AI提高83%的出图效率?https://q3iylvv7qj.feishu.cn/docx/Fsxxd3MncowFUix5…

同步请求和异步请求

同步请求和异步请求是在网络编程中常用的两种通信模式,它们有以下区别: 同步请求: 在发送一个请求后,程序会一直等待服务器返回响应,期间无法进行其他操作。请求发出后,程序会阻塞在请求处,直…

深入剖析:如何通过API优化云计算架构?快来看!

在当今数字化时代,云计算已经成为企业实现创新、提高效率和降低成本的核心策略之一。而在构建和管理云计算架构时,API(应用程序编程接口)的作用变得愈发重要。本文将深入探讨如何通过API优化云计算架构,实现更高效、灵…

深入探索 Java 8 新特性:Lambda 表达式

深入探索 Java 8 新特性:Lambda 表达式 ​ 在软件开发领域,不断的进步和创新是推动技术发展的关键。Java 8 作为一个重要的版本,引入了许多令人兴奋的新特性,其中最受瞩目的之一就是 Lambda 表达式。Lambda 表达式的引入使得 Jav…

【Linux】Linux之间如何互传文件(详细讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

[golang gin框架] 46.Gin商城项目-微服务实战之后台Rbac客户端调用微服务权限验证以及Rbac微服务数据库抽离

一. 根据用户的权限动态显示左侧菜单微服务 1.引入 后台Rbac客户端调用微服务权限验证功能主要是: 登录后显示用户名称、根据用户的权限动态显示左侧菜单,判断当前登录用户的权限 、没有权限访问则拒绝,参考[golang gin框架] 14.Gin 商城项目-RBAC管理,该微服务功能和上一节[g…

Python有哪些优质的可视化工具

目录 1. Matplotlib 2. Seaborn 3. Plotly 4. Bokeh 5. Plotly Express 6. ggplot 7. Altair 8. Wordcloud 9. D3.js (Data-Driven Documents) 10. NetworkX 11. Pygal 12. Folium 总结 在数据分析和数据科学的领域中,可视化是一种强大而直观的方式来呈…

VTK 判断一个 点 是否在一个模型 stl 内部 vtk 点是否在内部 表面 寻找最近点

判断 一个点 ,判断是否在风格 stl 模型内部,或表面: 目录 1.方案一:使用vtkCellLocator FindClosestPoint 找到模型上距离给定点最近的一点,计算两点的距离 ,小于某一阈值 则认为此点在模型上; 2.方案二…

Esp8266学习7. 点亮JMD0.96C-1 OLED屏

Esp8266学习7. 点亮JMD0.96C-1 OLED屏 一、ESP32-C3 I2C资源简介1. 简介2. 准备工作 二、I2C协议简介1. 起始条件(Start Condition):2. 设备地址传输(Device Address Transmission):3. 从设备响应&#xff…

玩转单元测试之gtest

引言 程序开发的时候,往往需要编写一些测试样例来完成功能测试,以保证自己的代码在功能上符合预期,能考虑到一些异常边界问题等等。 gtest快速入门 1.引入gtest # 使用的是1.10版本,其他版本可根据需要选择 git clone -b v1.1…

踩坑经验:JavaScript 中的 for...of 和 for...in 循环

在 JavaScript 编程中,for...of 和 for...in 是常用的循环语法,但它们在使用时可能会引发一些意想不到的问题。本文将分享我在使用这两种循环时所遇到的坑和经验。 两者的区别: 适用对象类型: for…of:主要用于遍历可…

微信开发之一键删除好友的技术实现

简要描述: 删除联系人 请求URL: http://域名地址/delContact 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wI…

小红书运营 新号快速涨粉方法

大家好,我是网媒智星,今天跟大家分享一下小红书新号快速涨粉的方法。 新手博主在刚开始使用小红书时往往会陷入一个误区,他们热衷于发布自己认可的笔记,然后迫不及待地去查看数据,却发现没有获得赞赏和关注。 然而&…

微信小程序登录及登录态管理

一,小程序登录 小程序登录 | 微信开放文档 接口应在服务器端调用,详细说明参见服务端API。 接口说明 接口英文名 code2Session 功能描述 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使…

Android Framework 全局替换系统字体

基于Android 11 Android Framework 全局替换系统字体 第一种通过替换系统默认字体 将需要替换的字体资源放置frameworks/base/data/fonts/目录下。 将系统默认的Roboto字体替换为HarmonyOs字体。 frameworks/base/data/fonts/fonts.xml frameworks/base/data/fonts/Android.…

Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像(基于SSH镜像) 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像(…

AI抢饭碗!新闻集团将使用生成式AI,每周自动写3000篇新闻丨IDCF

作者:AIGC开放社区 8月1日,英国卫报消息,全球最大新闻媒体公司之一的新闻集团,将使用生成式AI每周自动创建3000篇澳大利亚本地新闻。 据悉,新闻集团在内部成立了一个名为“Data Local”的部门只有4名员工,…

爱校对:塑造无瑕公文的强大工具

在公文处理的世界中,每个字、每个标点都需要细心打磨,确保无一瑕疵。如何能达到这种精确无误的程度呢?让我们一起来看看强大的爱校对软件如何帮助我们塑造无瑕的公文。 首先,爱校对软件采用先进的自然语言处理和深度学习技术&…

IDA远程调试真机app

IDA远程调试真机app 第一步:启动 android_server,并修改端口 # 启动android_server ./android_server -p31928第二步:端口转发、挂起程序 # 端口转发adb forward tcp:31928 tcp:31928# 挂起程序 adb shell am start -D -n com.qianyu.antid…

shell和Python 两种方法分别画 iostat的监控图

在服务器存储的测试中,经常需要看performance的性能曲线,这样最能直接观察HDD或者SSD的性能曲线。 如下这是一个针对HDD跑Fio读写的iostat监控log,下面介绍一下分别用shell 和Python3 写画iostat图的方法 1 shell脚本 环境:linux OS gnuplot工具 第一步 :解析iosta…