找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16202|回复: 5

[文件操作] [已解决]如何用批处理替换PE文件中的字符串?

[复制链接]
发表于 2010-7-21 13:40:08 | 显示全部楼层 |阅读模式
例如我想用批处理把一个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 编辑 ]
发表于 2010-7-21 14:06:59 | 显示全部楼层
2进制文件不能这样改吧.
 楼主| 发表于 2010-7-21 14:12:08 | 显示全部楼层
那应该怎么办才能改啊
发表于 2010-7-21 22:38:10 | 显示全部楼层
纯P不能改

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

还有替换的字符串长度最好比原来的短或一样长字符结束后后面一定要跟一个字节0(不是字符是数据)
发表于 2010-7-21 23:03:20 | 显示全部楼层
如果PE文件较小{估计可能不大}
可以用com2debug之类的脚本转换成16进制
批量替换后在生成会PE文件
但是效率很差,建议用winhex手动替换
 楼主| 发表于 2010-7-22 00:19:18 | 显示全部楼层
好吧  只能这样了
多谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:37 , Processed in 0.028373 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表