[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]如何用批处理替换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 编辑 ]

2进制文件不能这样改吧.

TOP

那应该怎么办才能改啊

TOP

纯P不能改

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

还有替换的字符串长度最好比原来的短或一样长字符结束后后面一定要跟一个字节0(不是字符是数据)

TOP

如果PE文件较小{估计可能不大}
可以用com2debug之类的脚本转换成16进制
批量替换后在生成会PE文件
但是效率很差,建议用winhex手动替换
SYBN QQ:354324773

TOP

好吧  只能这样了
多谢了

TOP

返回列表