最近在学习PE文件感染,我了解到的常用的方法有两种:1)新建节2)利用PE文件中空隙,见缝插针
这样做能达到目的,但是新增了节或者让有些节带有不该带的属性,很容易被察觉.于是我想能不能人为更改.text节的大小和.rdata节的大小,然后把代码和数据插入进去.这样既不会新增节,也不会让节带有不该带的属性,只是增加了文件长度.但这样做会让所有节的位置发生变化,程序里所有对变量的引用地址将全部失效,使得插入后的程序根本无法运行.不过这个问题依然是可以解决的,附件的代码貌似能解决这一问题.

注:附件的代码仅仅是个雏形,它更改了.text段的大小,对IAT/IIT/RESOURCE DataDirectory及涉及的相关结构进行了重定位处理,未进行错误处理.它只适用部分PE文件:),但基本思路都是一样的.代码注释比较全,一看就懂,本来也很简单^_^,有不当之处还望各位批评指出
sword.asm为代码文件
sword.exe为重组PE程序
test.exe为测试PE文件

下面是测试效果:
.text代码段大小未更改之前test.exe的节区表

.text代码段大小更改后test.exe的节区表,且更改后test.exe依然能运行如风

上传的附件 sword.rar