首页
社区
课程
招聘
高手们帮忙看下*.exe不是有效win32程序的问题
发表于: 2009-12-5 18:41 3399

高手们帮忙看下*.exe不是有效win32程序的问题

2009-12-5 18:41
3399
自己学着写一个PE文件感染的程序,功能很简单,增加一个节表,增加一个节区,把感染代码拷贝到新节区。PE文件头中,我仅仅修改了被感染的exe文件的IMAGE_NT_HEADERS结构中的AddressOfEntryPoint,SizeOfImage和NumberOfSections三个参数。完成参数修改,增加节表,节区后的exe文件不能被windows执行,显示*.exe不是有效win32程序。用PE查看器查看PE头的相关参数,感觉都很正常。我不知道PE文件头的哪些结构没有被正确设置,还望高手们指点一二。
感染后的exe文件,见附件,

[注意]APP应用上架合规检测服务,协助应用顺利上架!

上传的附件:
收藏
免费
支持
分享
最新回复 (6)
雪    币: 177
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tbc
2
修改了一下,但没敢打开。
不知道行不行。
上传的附件:
2009-12-5 20:19
0
雪    币: 2513
活跃值: (640)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
节表里节的虚拟大小设置有问题
2009-12-5 20:20
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
F了楼主,你自己用WinHex看下该EXE文件。最后一个区块居然没有对齐。
不同意3楼的说法。相反,应该是节表里的SizeOfRawData(该块在磁盘上所占的大小)显示最后一个区块在磁盘上有600h的空间。但是实际上只有5D9h的空间。(后面的00没有填充)
楼主请在(1600h+5D9h处)开始填充(600h-5D9h)字节的00。即让最后一个区块磁盘大小为600h.

最后一个区块的代码肯定不是楼主写的,不过应该不是病毒(如果让我写,那些明文的API函数名绝对会被加密)。
2009-12-5 22:38
0
雪    币: 444
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2楼,你把所有区块的的VirtualSize改为1000h(<=SizeOfRawData),这个没什么意义。

以最后一个区块为例,VirtualSize能取5D9h到1000h之间的任意一个值。这中间有什么区别吗,没仔细想过,求高手指教。
2009-12-5 23:08
0
雪    币: 75
活跃值: (843)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
感谢楼上的几位朋友,的确是新增加的节后面没有用0填充,导致SizeOfRawData与实际的不符。但若像tbc把sizeofRawdata改成5d9,不填充,同样也行。
不过按照SizeOfRawData的定义:指出节在磁盘文件中所占的大小,这个数值等于VirtualSize字段的值按照FileAlignment的值对齐后的大小
我还是采用怀特迈恩 的方法。
2009-12-7 14:27
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
应该解决问题了
2009-12-7 20:08
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册
// // 统计代码