最为简单的补充pe依赖文件的基于findstr.exe的TXT文本比较方法适合给pe补充缺失文件
最为简单的补充pe依赖文件的基于findstr.exe的TXT文本比较方法适合给pe补充缺失文件pe基本就是文件和注册表的配合组合,尤其是system32里的dll文件。
有时候我们会发现别人制作的pe有自己没有的系统功能,一般都是自己的pe里system32里的缺少必要的依赖文件。这时候需要对比别人pe补充system32里的依赖文件。
经试验发现最为简单的补充pe依赖文件的基于findstr.exe的TXT文本比较方法如下:
假设你把自己pe里的system32下的文件名称列表(其中大部分是XXX.dll这种)是1.txt,然后你手上有别人pe里的system32下的文件名称列表2.txt
只要打开cmd窗口输入findstr /rv /g:1.TXT 2.TXT>buchong.txt
回车后就能产生自己pe的1.txt需要补充的依赖文件名称列表buchong.txt了。
本帖最后由 sairen139 于 2024-1-11 21:55 编辑
要在批处理中使用find或findstr命令查找文本文件里的汉字,必须将处理文件保存为ANSI编码
如果不想用到findstr等exe,直接利用批处理的数组法如下:
@echo off
setlocal enabledelayedexpansion
REM 读取1.txt和2.txt文件内容到数组
for /f "delims=" %%a in (1.txt) do (
set "line=%%a"
set "file1[!line!]=1"
)
for /f "delims=" %%b in (2.txt) do (
set "line=%%b"
if not defined file1[!line!] (
echo !line!>>buchong.txt
)
)
逐句分析解说以上的批处理bat如下:这段批处理脚本的功能是将两个文件1.txt和2.txt的内容读取到数组中,然后检查2.txt中的每一行是否在1.txt中,如果不在则将其追加到buchong.txt文件中。
[*]@echo off 是关闭命令回显,这样在运行脚本时不会显示每一行命令。
[*]setlocal enabledelayedexpansion启用延迟变量扩展,这允许在代码块中使用 ! 来访问变量。
[*]for /f "delims=" %%a in (1.txt) do 从1.txt文件中逐行读取内容,并将每一行内容存储在变量 line 中。
[*]set "file1[!line!]=1" 将1.txt中的每一行内容作为数组 file1 的索引,并将其值设置为1。
[*]for /f "delims=" %%b in (2.txt) do 从2.txt文件中逐行读取内容,并将每一行内容存储在变量 line 中。
[*]if not defined file1[!line!] 检查 file1 数组中是否存在2.txt中的当前行,如果不存在,则执行下一步。
[*]echo !line!>>buchong.txt 将2.txt中的当前行追加到buchong.txt文件中。
觉得有一点高深 赞
我的方法比较笨,用excel的vlookup来对比筛选 原来是这样:
1.txt————自己pe里的system32下的文件名称列表
2.txt————别人pe里的system32下的文件名称列表
buchong.txt————需要补充的依赖文件名称列表 楼上的可行,手动处理 谢谢分享 牛 直接用对比软件不就结了。
开源的有WinMerge 补充了文件还有需要注册表的。 比对法确实不错 谢谢分享 谢谢分享
页:
[1]