首页
社区
课程
招聘
[原创]向节表空白区添加代码
发表于: 2018-5-17 16:58 6517

[原创]向节表空白区添加代码

2018-5-17 16:58
6517

菜鸟一只,最近一直在学PE,刚学的往节表空白区添加代码,就想水个贴,然后算是总结一下,大牛就别看了,太菜……

    用的软件是WinHex,OD,Petools,跟vs2013,感染的软件是本地的记事本notepad.exe

    这是很简单的一个感染,在打开程序之前加上弹窗。先执行我们的弹窗,之后再执行软件自身的代码。

     步骤如下:  


    1,用OD随便打开一个软件,BP MessageBoxA,去断点窗口,查看MessageBox的地址,我的地址是77d507ea ,而MessageBox需要四个参数,在反汇编窗口可以看到它的硬编码为6A 00 6A 00 6A 00 6A 00 E8 Address;

    2,E8 ,E9 是硬编码的 Call 和JMP,程序在硬盘中存储的方式。这是我写的一个获取这两个硬编码的测试代码:

但是这个地方E8 之后的地址并不是准确的跳转地址,含有一定的计算关系,计算公式为:

X = 想要跳转的地址 - E8运行时的地址+5;

    3,这个时候就可以用WinHex在代码区的空白处添加代码。  首先用PEtools打开notepad,查看第一个节表的信息,跟SectionAlignment和FileAlignment的大小(因为最后改的代码的地址必须是ImageBuffer的时候的地址,所以一定要看文件对齐跟内存对齐),找到第一个节表也就是代码区节表的信息找到VirtualSize跟PointerTORawData来确定代码区的尾部,看下代码区剩余的空间大小是不是可以添加我们的代码。

    准备工作做完可以开始添加代码,根据第一步构造的ShellCode 我们添加的代码的格式为:

6A 00 6A 00 6A 00 6A 00 E8 __ __ __ __  E9 __ __  __ __空白处是需要我们计算的地址 E9的原因是返回原始的OEP 不能影响程序本来的执行顺序。

    现在开始计算地址,因为需要在的是运行状态的达到我们感染的目的,所以地址必须是按照运行状态的计算,首先计算E8 之后的Address  而这个时候E8的地址是需要计算出程序在ImageBuffer中的地址:  

计算方式为:   E8运行状态的地址 =  E8此时地址+ImageBase + SectionAlignment-FileAlignment

之后根据公式 X = 想要跳转的地址 - E8的地址+5;

计算出来 在我的电脑上是76 D4 80 8D

既E8 8D 80 D4 76。现在再计算E9 以后的地址,同样是根据公式   X = 想要跳转的地址 - E8的地址+5;

为  E9运行状态的地址 =  E9此时地址+ImageBase + SectionAlignment-FileAlignment

此时的X就是 X= 原始的 OEP - E9运行时 的地址+5这个地方的目的是执行完之后调到原始OEP


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 3
支持
分享
最新回复 (8)
雪    币: 106
活跃值: (569)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为你认真学习又乐于分享的态度点个赞
2018-5-17 21:58
0
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
3
适合新人,赞!
2018-5-21 18:05
0
雪    币: 2694
活跃值: (80)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
2018-6-18 08:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主。那个fva转rva不应该是:
文件中的地址  -  节区在文件中的偏移(PointerToRawData)+    该节的虚拟地址(VirtualAddress)+  imagebase  吗?
2018-6-22 22:00
0
雪    币: 2046
活跃值: (265)
能力值: ( LV7,RANK:104 )
在线值:
发帖
回帖
粉丝
6
gentTao 楼主。那个fva转rva不应该是: 文件中的地址 - 节区在文件中的偏移(PointerToRawData)+ 该节的虚拟地址(VirtualAddress)+ imagebase 吗?
对呀,
2018-8-19 12:45
0
雪    币: 2926
活跃值: (1407)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
xtayaitak 为你认真学习又乐于分享的态度点个赞
点赞,做的很棒,@xtayaitak你也做的很棒,这个时候最需要别人鼓励,在一点一点成就中培养出强烈的兴趣
2018-8-20 23:03
0
雪    币: 60
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
E8此时地址+ImageBase + SectionAlignment-FileAlignment,e8此时地址是在文件中打开的那个地址么
2019-4-8 21:48
0
雪    币: 60
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
为什么我e9那个x算出来负数了。。。。。
2019-4-9 15:44
0
游客
登录 | 注册 方可回帖
返回
//