Board logo

标题: [文件操作] [已解决]如何用批处理替换PE文件中的字符串? [打印本页]

作者: cyxy214    时间: 2010-7-21 13:40     标题: [已解决]如何用批处理替换PE文件中的字符串?

例如我想用批处理把一个a.exe文件中的字符串zifuchuan1替换为zifuchuan2
我的思路是用type命令把exe转为文本 再用for进行截取   set进行替换  代码如下
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.   for /f "usebackq tokens=*" %%i in (`type a.exe`) do(
  4.     set change=%%i
  5.     set change=!change:zifuchuan1=zifuchuan2!
  6.     echo !change! >a.txt
  7.     del a.exe
  8.     ren a.txt a.exe
  9. )
  10. endlocal
  11. pause
复制代码
问题在于echo %%1打印出的结果和type出的结果不一样  这说明for没能正确截取文件内容  整个文件都变了,不能达到目的
这是哪的问题  如何解决

[ 本帖最后由 cyxy214 于 2010-7-22 00:19 编辑 ]
作者: TX_kakashi    时间: 2010-7-21 14:06

2进制文件不能这样改吧.
作者: cyxy214    时间: 2010-7-21 14:12

那应该怎么办才能改啊
作者: taiji    时间: 2010-7-21 22:38

纯P不能改

用第三方工具或者网上找个PE资源修改工具或hex工具

还有替换的字符串长度最好比原来的短或一样长字符结束后后面一定要跟一个字节0(不是字符是数据)
作者: sl543001    时间: 2010-7-21 23:03

如果PE文件较小{估计可能不大}
可以用com2debug之类的脚本转换成16进制
批量替换后在生成会PE文件
但是效率很差,建议用winhex手动替换
作者: cyxy214    时间: 2010-7-22 00:19

好吧  只能这样了
多谢了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2