能力值:
( LV8,RANK:130 )
|
-
-
2 楼
初步认为楼主很彪悍
|
能力值:
(RANK:350 )
|
-
-
3 楼
感谢你反馈的这些bug,有些bug估计是Hying想偷懒,如用'rsr.'来判断是不是资源区块。
第三版外壳编写部分,是直接将这章搬过去,所不同的是,将原来的asm直接翻译成VC来描写主程序编写,估计相应的bug还是存在。
|
能力值:
( LV13,RANK:380 )
|
-
-
4 楼
不可靠!
《色戒》: 女人不可靠
《苹果》: 男人不可靠
《投名状》:兄弟也不可靠
《集结号》:组织更不可靠
《windows》
所有节名通通不可靠,要看节的属性或数据目录
CODE, DATA, BSS,这些节名不可靠,要看节的属性
TLS, RSRC节名不可靠,要看数据目录中相关表项
VirtualSize不可靠, SizeOfRawData总可靠
计算VirtualSize,最好用(Next VirtualAddress - Current VirtualAddress)
---------------------引用
“”“我试着将'CODE','DATA'区块表的Misc.VirtualSize清零,程序仍然可以正确加载,因为这时有用的是SizeOfRawData 字段的值.但是只靠SizeOfRawData字段也是不可靠的,因为对于'BSS','.tls'区块来说,SizeOfRawData字段值为0,而这时Misc.VirtualSize便起到重要的作用了.所以仅仅只靠这两个字段中的一个是不够的,要配合起来使用,如:
---------------------引用
VirtualSize之所以能清零,是因为loader在验证程序是否合法时,当VirtualSize小于SizeOfRawData时,VirtualSize取SizeOfRawData,在你的程序中,碰巧,SizeOfRawData满足下面的公式。
不管怎么样,在对齐后,VirtualSize必须等于Current VirtualAddress - Next VirtualAddress,否则出现错误提示对话框。
这也解释了你得出的结论之一:SizeOfRawData取零时,VirtualSize可靠。
|
能力值:
( LV12,RANK:290 )
|
-
-
5 楼
谢谢tnttools的指点,也期待第三版...
|
能力值:
( LV9,RANK:490 )
|
-
-
6 楼
楼主很强大。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
LZ很厉害,学习了
|
|
|