码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-04-27 00:40:21      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:导入   元素   new   9.png   cto   section   ESS   函数   ack   

重叠文件头

  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函数。

 

 

 

 

 

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

标签:导入   元素   new   9.png   cto   section   ESS   函数   ack   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!