修改pe文件头中的Win32VersionValue值,有的程序可以正常启动,有的有问题。

czb 2008-10-19 05:37:11
各位大侠:
我用一个小程序,计算EXE文件的CRC32值,然后把计算出来的CRC32值写到这个EXE文件PE头中的Win32VersionValue字段。经过修改后的EXE文件,有的可以正常运行;有的报错“应用程序正常初始化(0xc00000fd)失败。请单击“确定”,终止应用程序。”;有的闪了一下就自动关闭了。
程序应该是没有错误的,因为我拿二进制工具比较过修改之前和之后,程序就修改了Win32VersionValue,而且我用pexplorer查看修改过后的文件,pexplorer也认得我修改过后的Win32VersionValue值。如果用UltraEdit,把文件头中的Win32VersionValue改回0值,程序又可以正常使用了。

我的操作系统是XP SP3。请大家指点。
...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinhuli 2011-12-15
  • 打赏
  • 举报
回复
很多地方可以写的,在image_file_header里面,有很多无用的结构,,比如timedatestemp
czb 2008-10-21
  • 打赏
  • 举报
回复
再次向aca_jingru等大侠请教:

如何获取一个节(SECTION)的真实大小?用IMAGE_SECTION_HEADER中的VirtualSize吗?因为只有知道了节的偏移,再加上节的真实大小,才能获得节后面的间隙。

看别人的资料介绍说,有的链接器在VirtualSize字段处填入尺寸、有的链接器填入地址、有的链接器填入0。我用vc2005编译器,倒是发现VirtualSize被写成了节的真实大小。
czb 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aca_jingru 的回复:]
区域间隙吧,因为文件要对齐,找个空白地方,说的不对还请指出。。
另外我翻看了一下看雪精华,好像是有篇文章把crc校验写真Win32VersionValue里,不过规范上写的是保留,必须为0
[/Quote]

又想了下,你说的可能可以,不过比较麻烦。
czb 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aca_jingru 的回复:]
区域间隙吧,因为文件要对齐,找个空白地方,说的不对还请指出。。
另外我翻看了一下看雪精华,好像是有篇文章把crc校验写真Win32VersionValue里,不过规范上写的是保留,必须为0
[/Quote]

写区域间隙肯定不对的吧?因为你把CRC校验值写到区域间隙中去,则整个文件的CRC值又变了,成了一个死循环。
过去的我 2008-10-19
  • 打赏
  • 举报
回复
区域间隙吧,因为文件要对齐,找个空白地方,说的不对还请指出。。
另外我翻看了一下看雪精华,好像是有篇文章把crc校验写真Win32VersionValue里,不过规范上写的是保留,必须为0
czb 2008-10-19
  • 打赏
  • 举报
回复
那请教aca_jingru,要是Win32VersionValue不能用,那哪个字段可以用呢?我要计算EXE文件CRC32的值,简单的防止别人修改我的EXE文件。
过去的我 2008-10-19
  • 打赏
  • 举报
回复
这个域在pecoff规范上, 必须为0
更新说明: 2017-02-04(yaya) Ls command: Empty Folder returns false. 2016-12-08(yaya) 修正lz4、vhd不显示解压缩进度指示。增加lzma解压缩进度指示。 2016-11-09(不点) 0x8205 bit 5 = 1: 使checkkey闲置循环停止指令。 2016-04-13(yaya) 支持动画菜单 setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素) 菜单项0的路径文件名 类型: 位0:高亮指定颜色 位1:高亮颜色翻转 位2:高亮显示线框 位7:背景透明(最好使用黑色背景) 文件名: *n.??? 格式 n=00-99 高亮颜色由 color HIGHLIGHT=0xrrggbb 指定。 字符可以使用任意字型、字高、颜色,可以辅以图标。 2016-03-25(yaya) 菜单字符可以使用不同字型。 例如:"七" 使用不同字型,将 .hex 文件中的 unicode 码 “4e03” 修改为 “0080”, 将菜单中的 "七" 修改为 “\X0080”。 2016-03-23(yaya) 增强 echo 函数功能。 例如:echo -e \x18 显示 UTF-8 字符 0x18。 echo -e \X2191 显示 unicode 字符 0x2191。 2016-03-15(yaya) 1.增加动画控制热键 F2:播放/停止。 2.增加动画控制位 0x835b,位0:0/1=停止/播放。 3.增加精简字库模式:--simp=起始0,终止0,...,起始3,终止3 中文可以使用 --simp= ,内置字库应当包含 DotSize=[font_h],['simp'] 例如:font --font-high=24 --simp= /24_24.hex DotSize=24,simp 不使用热键: 可以加载 32*32 unifont 全字库 使用热键: 可以加载 24*24 unifont 全字库 使用精简字库: 可以加载 46*46 汉字全字库 使用精简字库及热键:可以加载 40*40 汉字全字库 4.不再支持 bin 格式字库。 2016-03-03(yaya) 1.增加图像背景色设置方法。 splashimage --fill-color=[0xrrggbb] 作用之一,作为小图像的背景。 作用之二,直接作为菜单的背景(即不加载图像背景)。此时只设置字体的前景色即可。 2.增加动画菜单。 splashimage --animated=[type]=[delay]=[last_num]=[x]=[y] START_FILE 类型[type]:bit 0-3: 播放次数 bit 4: 永远重复 bit 7: 透明背景 type=00:禁止播放 播放n次:序列图像各显示n次,时间独占。可作为启动前导、序幕。 永远重复:序列图像无限循环,时间与菜单共享。可作为菜单里的动画。 背景透明:即抠像。要求4角像素为背景色。 背景色最好为白色或黑色,这样可以去除一些灰色杂波。若是彩色背景,则应当非常干净。 提醒:请以16进制方式输入。否则易错。 延迟[delay]:序列图像之间的延迟。单位是滴答,即1/18.2秒。 序列数[last_num]:序列图像总数(2位数,从1开始计数)。 偏移[x]、[y]:图像偏移,单位像素。 起始图像文件 START_FILE 命名规则:*n.??? n: 1-9 或 01-99 或 001-999。 3.增加固定图像的背景色可以透明。 splashimage [--offset=[type]=[x]=[y]] FILE 类型[type]:bit 7: 透明背景 2016-02-14(yaya) setmenu 函数增加菜单项目背景短/满参数(默认短) 2016-01-19(yaya) splashimage 函数增加图像起始偏移(默认0) 2015-08-20(yaya) 1.支持非

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧