我正在运行三个批处理文件 1 - main.bak
(隐藏) 2 - open.bat
(显示) 3 - hide.bat
(显示)
open.bat 包含,
attrib -s -h main.bak
ren main.bak main.bat
call main.bat
main.bak 或 main.bat 包含,
@echo off
start hide.bat
cls
echo hi
pause
echo Welcome
pause
hide.bat 包含,
ren main.bat main.bak
attrib +s +h main.bak
exit
现在的问题是,当我运行open.bat
它重命名并取消隐藏并运行main.bat
并显示输出时,
Hi
press any key to continue...
(显示hi
它已经开始运行hide.bat
,但它重命名并隐藏了该main.bat
文件。)
所以现在,我的输出文件卡在Hi
并且没有显示Welcome
我这样做的主要目的是向其他人隐藏我在 main.bat 中的批处理编程来源。
任何帮助都值得感激。提前感谢你们。请帮忙。我想向其他人隐藏我的来源(右键单击»编辑)
答案1
不幸的是,如果脚本在 Windows 机器上是原生格式,则无法阻止这种情况。不过,你可以使用转换或包装方法来隐藏代码到一个程度。
你最好的选择很容易就是F2KO 软件 Bat 到 Exe 转换器(免费软件)将批处理脚本转换为可执行二进制文件。您的另一个选择是使用压缩包(审判/价格各不相同)将脚本包装在音效存档。
注意:Bat To Exe 内置有 UPX 加壳程序,但是 UPX 相当不安全且过时。
为了保护代码,我使用软件包(价格不一)来混淆我的脚本。有一个免费的替代方案,叫做皮特,但不太安全。有经验的黑客使用调试器可以轻松找到 OEP 来解开混淆。 ASPack是更安全但并非无懈可击。
使用可执行模块的额外好处是,您可以为程序添加自定义图标和版本信息。在某些情况下,将脚本转换为可执行格式可能会休息它!对于你的情况,我会使用 Bat To Exe Converter 并将 设置Working directory
为Current directory
。
请注意,包装脚本、JAR 等并不能保护你的代码即使您混淆或压缩了提取模块。这是因为模块将内容提取到%TEMP%
(或其他位置)。最终用户所要做的就是运行任务管理器来跟踪脚本的来源!