逆向学习-Upack的PE文见头分析

重叠文件头

  MZ文件头与PE文件头重叠。

  offest 0  e_magic:magic number = 4D5A(‘MZ‘)

  offest 3C  e_lfanew:File address of new exe header

  

IMAGE_FILE_HEADER.SizeOfOptionalHeader

    修改此值,可以向文件头插入解码代码。

    增大此值,就在IMAGE_OPTIONAL_HEADER与IMAGE_SECTION_HEADER之间添加了额外空间。这个区域就被添加了解码代码。

IMAGE_OPTIONAL_HEADER.NumberOfRvaAndSizes

    指出紧接在后面的IMAGE_DATA_DIRECTORY结构体数组的元素个数。UPack会减小IDD(IMAGE_DATA_DIRECTORY)的值。忽视后几个元素。

IMAGE_SECTION_HEADER

    在这个结构体中,UPack会把自身数据记录到程序运行不需要的项目。

重叠节区

   查看节区头

   

   第一节区,第三节区重叠。原文件被压缩在第二节区。

RVA to RAW

  计算EP的文件偏移量:RAW = 1018 -1000 + 10 = 28

  但是RAW 28不是代码区域。一般而言,PTRD(PointerToRawData)的值应该是FileAlignment的整数倍,所以此处被识别为0。重新计算RAW = 1018 - 1000 + 0 = 18。

导入表

  

  前四个字节是导入表的地址(RVA),后面四个字节是导入表的大小(Size)。RAW = 271EE - 27000 + 0 = 1EE。

导入地址表

  1EE  OriginalFirstThunk(INT)  0

  1FA  Name           2

  1FE  FirstThunk(IAT)     11E8

  

  Name的RVA值为2,属于Header区域。

  

  IAT的值为11E8,RAW = 11E8 - 1000 + 0 = 1E8

  

  00000028和000000BE处分别是两个API函数。

 

原文地址:https://www.cnblogs.com/whitehawk/p/10777163.html

时间: 2024-08-04 10:58:11

逆向学习-Upack的PE文见头分析的相关文章

Andriod逆向学习笔记

本文涉及到的所有内容均来自互联网或者书籍.禁止用于其他任何商业,非商业/不正当用途. 1.准备 android sdk,java是必须的.另准备apktool和jd-gui.见这篇blog. 将apktool所在的目录加到环境变量 2.先来一个简单的,修改跳转逻辑. 先写个sample,第一个activity界面上一个输入框,一个按钮,输入“zuoshu”时点击按钮会跳转到第二个activity.输入其他内容则finish(). 将编译出来的apk放到d:\hack\Inject.apk,命令行

HTML&CSS基础学习笔记4-定义文档类型

定义HTML的文档类型 Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档. HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面.这就是 <!DOCTYPE> 的用处. <!DOCTYPE> 声明不是 HTML 标签,它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令.是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用置标语言解析器,它应该使用什么样的文档

逆向学习XXclient怎样仅仅执行一个实例

个人觉得学习分两种, 一种是当面请教和直接从书本网络中的资料学习. 其二就是看着令你惊叹的作品-顿悟. 什么?顿悟不了?那我们就一起来逆向学习吧!差点忘了,我并不打算提供Demo,这并不重要,难道你打算遇到一个同样的情景? 重在方法. 注意: 本文为了照应新手人群,对于某些内容可能会非常具体的推演. 名词解释: 一个实例:一个对象,这里指一个程序被创建后在内存中的数量.大白话就是:成功执行了几次. 事由: 今天闲来无事(忙里偷闲)执行了两次Dr_COM的宽带认证client.如咱所料, 如图:

Qt入门学习——Qt 5 帮助文档的使用

Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法. 我们使用 Qt 帮助文档,主要分为这么几步: 1)类使用的相关介绍 2)查看所用部件(类)的相应成员函数(功能,参数,返回值) 3)查看部件的信号 4)查看部件的事件(所对应的虚函数如何编写) 1)类使用的相关介绍 光标移动到类名字的地方,接着按“F1”即可跳

Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现

如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位我们想要查找的文档. 效果如下: 下面我们来看看如何设置实现这个功能. 1.打开你想要操作的文档库,点击此库的Library选项页及其Library Settings按钮 点击此Ribbon上的Library Setting按钮 2.在文档库的管理页面的Gegeral Settings栏,找到Met

逆向学习XX客户端如何只运行一个实例

个人认为学习分两种, 一种是当面请教和直接从书本网络中的资料学习. 其二就是看着令你惊叹的作品-顿悟. 什么?顿悟不了?那我们就一起来逆向学习吧!差点忘了,我并不打算提供Demo,这并不重要,难道你打算遇到一个相同的情景?重在方法. 注意: 本文为了照顾新手人群,对于某些内容可能会非常详细的推演. 名词解释: 一个实例:一个对象,这里指一个程序被创建后在内存中的数量.大白话就是:成功运行了几次. 事由: 今天闲来无事(忙里偷闲)运行了两次Dr_COM的宽带认证客户端.如咱所料, 如图: 我们知道

C++学习笔记(一):头文件和源文件

说明: 当一个源文件(a.cpp)要调用另一个源文件(b.cpp)定义的方法时,需要在a.cpp中写上这个方法的声明(只需要该方法的名称.返回值和参数,类似Java的接口): 如果每次调用其他文件的方法时都写上相同的声明就会很麻烦,而且当b.cpp的定义修改时所有调用到该文件的声明都要修改,这样工作量太大且容易出错,所以出现了头文件,我们把所有的声明都存放到头文件中,需要使用到的时候使用宏命令“#include”包含进这个.cpp文件中即可: #include:只有一个功能:把它后面所写的那个文

PROTEASER第1-第10套完整电影文字片头合集

fcpx插件ProTeaser mac版是非常实用的文字片头插件合集,能够轻松的制作酷炫的文字片头效果,超级震撼,内置多种效果预设,大片级别效果不在话下!ProTeaser下载支持自定义快速修改,支持中文/英文文字输入和修改,能对文字属性进行修改,简单几步即可完成文字片头制作.当然你还可以对插件进行手动操作,以达到更完美的效果,FCPX电影片头插件操控和使用都极为简单,希望能给你的影片增添不一样的震撼和绚丽效果,为你的工作提高效率! FCPX插件推荐:点击进入 ProTeaser下载安装教程 f

Accelerated C++学习笔记7—&lt;使用顺序容器并分析字符串&gt;

第6章  使用库算法 本章中主要教我们如何使用几个库算法来解决与处理字符串和学生成绩相关的问题. 1.分析字符串 使用一个循环来连接两幅字符图案 for(vector<string>::const_iterator it = bottom.begin(); it != bottom.end(); ++it) ret.push_back(*it);</span> 等价于 ret.insert(ret.end(), bottom.begin(), bottom.end());</