首页
社区
课程
招聘
[求助]请教,如何增加pe文件的代码段区块的尺寸?
发表于: 2006-6-30 12:19 5488

[求助]请教,如何增加pe文件的代码段区块的尺寸?

2006-6-30 12:19
5488
【求助】请教,如何增加pe文件的代码段区块的尺寸?

想做一个二进制级加花的工具,即给定一个pe文件,在其代码段区块中的每一条二进制指

令之间加花。

碰到的问题如下:

1、计算代码段中所含指令有多少条?

2、如何增加pe文件代码段区块的尺寸?

3、假设在每条指令之间加入了花指令,那么应该如何修正jmp此类跳转指令的操作数?

对于第一个问题,
     采用29A的XDE反汇编引擎(开源)就能计算出指令的条数,可能有朋友会问,为何

要计算指令条数呢?原因是,代码段剩余的对齐空间可能不足以容纳将要加入的花指令,

所以应该先计算一下指令条数,以决定应该增加多少区块空间。

对于第二个问题,
    始终想不到,也搜不到解决方法,有办法解决吗?请大家指引明路,感谢!

对于第三个问题,
    也很郁闷,jmp此类指令的操作数是一个偏移,并且以此来计算应该跳往的地址,最

后完成跳转。(这些知识也是学自《加密与解密》一书的第二章,感谢看雪)
    当每条指令间都加入花指令后,因为指令之间的偏移发生改变,所以此时,所有跳转

指令的操作数都必须修正。

……

肯定还有别的关键问题,一时想不到,请众位朋友献言献策。
若这些想法本身就是个错误,请大家批评。先感谢各位!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
2
给pe自动加花是可以做的。但是给整个代码段区块都加那就不对了,首先就没有实际意义,其次理论上说是不可行的,极有可能导致程序无法正常运行。有些编译器产生的代码和数据区分是不很严格的,如果你把数据也作为代码,后果难以想象。如果程序中含有对代码段的操作,也肯定会出错。

所以比较合适的道路是给代码段的指定部分自动加花。

至于你说的计算代码长度,用LDE就可以解决,没必要用反汇编引擎,当然,最终的工作是必须用反汇编引擎的。

基于以上所说,修改得代码量很少,也就不存在新增空间的问题了,用现有空间就可以实现。

最关键的问题在于如何确定一条指令的起始点,比如你不可能看到90就认为是Nop,看到E8就认为是call,我们要修改的地方极有可能不是一条真正指令的起始位置,不过这个问题也是可以解决的。

如果你想做这个事情,可以找CCL的作者联系一下,他没多少时间来做这个事情,但是可以指导你去做。

如果你加花仅仅为了达到修改特征码的目的,那不如去研究多态变形好了,理论和实践都比你这种加花强。
2006-6-30 13:27
0
雪    币: 254
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
感谢nbw的批评指教,仔细想了一下,正如您所言,没有实际意义。是啊,我那些想法十分幼稚,而且根本上没有操作性,全部都是空谈。

    以前在看雪找过一些多态的文章,仅仅明白基本概念,乱序、置换之类。但一动手设计起来,就无从下手,主要是基础知识太差,眼下还是去29A找一个多态引擎看看吧,再次感谢nbw的热心指教。
2006-6-30 15:54
0
游客
登录 | 注册 方可回帖
返回
//