PE结构(小甲鱼)学习笔记

admin 2024年12月5日21:20:39评论7 views字数 913阅读3分2秒阅读模式

PE文件内容被分割为不同的区段(Section),每一区段中可能包含代码或数据。

.text 是在编译或汇编结束时产生的一种块,它的内容全是指令代码; .rdata 是运行期只读数据;.data 是初始化的数据块;.idata 包含其它外来DLL的函数及数据信息,即导入表;.rsrc 包含模块的全部资源,如图标、菜单、位图、对话框等。

#使用区段名只是方便人们使用,而对操作系统来说是无关紧要的,因此可将上面区段名任意更改而不会影响PE文件执行

输入表/导入表 import

PE结构(小甲鱼)学习笔记

地址为0x2A000

PE结构(小甲鱼)学习笔记

跟进找到原始地址0x28000

PE结构(小甲鱼)学习笔记

在010editor中找到相应

PE结构(小甲鱼)学习笔记

根据RVA算出偏移地址

RVA 0x2a15c - 0x2a000 = 0x15cRaw 0x28000 + 0x15c = 0x2815c
PE结构(小甲鱼)学习笔记
RVA0x02a2dcRaw0x282dc定位到函数名称位置
PE结构(小甲鱼)学习笔记

再找FirstThunk:偏移为 Raw 地址的 +0x10

PE结构(小甲鱼)学习笔记
RVA0x02a2acRAW0x28000 + 0x2ac = 0x282ac
PE结构(小甲鱼)学习笔记

0x02a2dc 与前面的 RVA对应

导出表 export

找到export导出表rva地址 0x18f90

PE结构(小甲鱼)学习笔记

跟进对应相应的原始地址 0x5800

计算RVA起始地址 和 偏移量 0x17000 0x1f90(0x18f90-0x17000)

PE结构(小甲鱼)学习笔记

根据计算出的地址找到导出表的目录 0x5800 + 0x1f90 = 0x7790

PE结构(小甲鱼)学习笔记

可以根据下面的索引找到对应的项和值

name: 18fccbase: 1NumberOfFunctions: 2NumberOfNames: 2AddressOfFunctions: 18fb8AddressOfNames: 18fc0AddressOfNameOrdinals: 18fc8

AddressOfNameOrdinals - export rva (偏移量)

0x18fc8 - 0x18f90 =0x38

0x7790 + 0x38 = 0x77c8 为第一项的定位

PE结构(小甲鱼)学习笔记

00 + base = 1 ,再计算到 AddressOfFunctions 的偏移为 0x10

add的地址为 11253

PE结构(小甲鱼)学习笔记

往下顺位为 subtract 的导向

PE结构(小甲鱼)学习笔记

subtract 的地址为11082

PE结构(小甲鱼)学习笔记

验证结果

PE结构(小甲鱼)学习笔记

知识星球

PE结构(小甲鱼)学习笔记

原文始发于微信公众号(CatalyzeSec):PE结构(小甲鱼)学习笔记

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月5日21:20:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PE结构(小甲鱼)学习笔记https://cn-sec.com/archives/3468722.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息