180320 逆向-代码的二次开发(2)手工构造区块

1625-5 王子昂 总结《2018年3月20日》 【连续第535天总结】
A. 代码的二次开发(2)
B.

手工构造区块

区块间隙的空间大小是有限的,如果所需代码不多,那么上述方法方便快捷。但是如果需要添加的代码比较多的话,区块间隙就不够用了。此时必须手动添加区块。

手工构造区块必须熟悉PE格式,实际操作时一般可用工具辅助。
主要有3个工作要做:
1. 增加块头
2. 增加块头指向的数据段
3. 调整文件头中的映像尺寸

构造区块时,必须注意区块的对齐。如果不对齐,在某些系统下可能会报错。

  1. 修正块表
    块表在PE文件头之后,由一系列的IMAGE_SECTION_HEADER结构组成
    每个结构体描述一个块,结构体的顺序与块在文件中的顺序是相同的
    块表以一个空的结构体作为结束标志

想要添加一个新的区段,就需要添加一个块头
将其中的属性按需填写完成即可
注意块对齐的问题
2. 增加数据段
有了区块头,还需要为区块添加内容
在文件尾部插入0x1000h大小的数据块即可
3. 修正映像文件尺寸
因为扩大了文件的尺寸,所以必须修正SizeOfImage的值,在PE文件头中将其增加0x1000h即可

工具辅助构造区块

实际增加区块时,因为较为繁琐,所以一般使用工具来快速完成
使用LordPE打开文件,在区块的列表上,执行右键菜单中的add section header功能就可增加一个区块。勾选’autofix SizeOfImage’就可以自动修正映像尺寸的值了。不过数据段的内容还是需要自己添加

而CFF Explorer就更完善一些,可以自动增加对应的数据段

注意事项

一般软件PE头的区块表后是一段全0的空间(用以将后边的区块对齐),因此新增区块不会破坏文件
但有时也会发生区块表正好填充完对齐单位的情况,或者后面放着一些其他东西。此时就不太方便添加区块头了。
理论上来说,修正后面的偏移应该也可以,不过这工程量就有些大了233

C. 明日计划
获得函数的调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值