|
322楼

楼主 |
发表于 2022-9-7 13:11:48
|
只看该作者
广东省广州市
本帖最后由 htpidk 于 2022-9-7 18:48 编辑
前面我给你演示的明明是易语言和VC6写的程序代码段属性可以随便改,即使没有可执行属性一样可以运行,不信你可以测试,为什么你会说修改了代码段属性会触发DEP呢,我可以明确的说易语言和VC6写的程序只要没有故意去修改PE头里的DllCharacteristics来支持级别1的硬件DEP和故意设置支持级别2的硬件DEP,随便修改代码段属性百分之一千都不会触发DEP。所以易语言和VC6默认编译链接出来的程序即使修改了代码段属性没有可执行属性了程序也是一样可以运行,这样通过代码段属性来获取代码段大小是不是就是0了,这样我是不是就是加密了个寂寞一个字节的数据都没加密到,还有我怎么可能会不知道数据段资源段也可以压缩或解密(以前用MFC写过类似UPX的压缩壳,所有的区段都被我压缩放到一个区段里),关键是我DEMO里我只想加密代码段啊,如果程序区段属性都被修改过都有了可执行属性那我岂不是把程序所有数据都加密了一遍?这样和我的初衷不符啊,我只想加密代码段,所以如果通过区段属性来获取代码段大小,对于刻意修改过的程序,要么程序所有区段的数据都加密,运行时再解密会影响效率,这根本不是我想要的,要么程序没有一个区段有可执行属性,获取的代码段大小为0就加密了个寂寞。虽然说不至于崩溃,但同样不是我想要的,也是不兼容。
最后还有PE头里的sizeofcode指的是代码段的文件对齐后的大小,它并不是内存里的大小,所以只要是编译器编译出来的原始程序,不故意修改就不存在什么对齐后的大小要比原来的大,因为它本来就已经是对齐后的大小,在MSDN上可以查到
|
|