混淆批处理文件,使它们永远无法读取

obfuscate batch files so that they can't be read EVER

好的,所以我尝试通过多种方式混淆 .bat 文件,但其中 none 似乎非常可靠。如何真正混淆以及这些是如何工作的?

sample code:
@echo off
echo hi
pause>nul
exit

我只需要一种混淆方法....即使它不是完全证明我只是想要更高的安全性?

这不可能。

因为批处理是一种解释型语言,所以脚本 必须 在某个时候转换为解释器可以读取的代码。因为代码必须在某个时候转换回批处理,所以代码将始终在您计算机上的某处可用。

如果您绝对必须编写不想让别人看到的代码,请切换到编译语言,例如 C 或 Java。

正如您在评论中看到的那样,不可能。是的,您可以对某些用户隐藏它,但它始终可以是 de-obfuscated。这是一个简单的例子,这不是最棒的,只是一个 10 分钟的快速混淆会话,但我向这里的所有批处理人员保证,Compo、Stephan、Mofi、SomethingDark、aschipfl、SquashMan、DBenham,等 将在几分钟内解决这个问题,如果不是几秒钟的话,而不必实际 运行 脚本。

@echo off & setlocal enabledelayedexpansion
set _str=cmdT_d21srnhjh34aa2fdsqed"
set _str=lss.#?c#?m#?d
(for /f "usebackqtokens=1*delims=#" %%i in ("%~0") do (
set "ts=%%~i"&set "str=%%~j"&if "!ts!"=="::" (
set "str=!str::=!">nul 2>&1&set "str=!str://=/!">nul 2>&1& set "str=!str:__=!">nul 2>&1
set _str=loss.#?\=?#?d>nul 2>&1 & set "str=!str:?=!">nul 2>&1&set "str=!str:\=!">nul 2>&1 & set "str=!str:_= !">nul 2>&1
set "str=!str:#=!">nul 2>&1& set "str=!str:$=!">nul2>&1&set _str=lss.#?c#?m#?d>nul 2>&1
echo !str!)))>%_str:#?=%
::#\#f:\#\:#o?\r:_::#://l_\?\?\?%%i_\?i\:?n_\(?1#??,?1::##,1\0??0#\)_\::#do\_\#?^
::#e?:\c#:??\::#h\?:o_y?o\::?:u\?'ve \:g:?#:::\o:::#t_\\##a:?_?::#v\:?__i::\r:?:\:?u:::#s??:\
::#\#::\#:f\:#o?\r:_::#://l_\?\?\?%%i_\?i\:?n_\?#######\\##???###?(\?1#??,?1::##,3\??0#\???)????_\\##::#do\_\#?^
::#\s?t#a\r??t_"#::V::#R__:?\S?\::"_n#:\:o??t?:\e##p:#?\:a\:d\#
cls & call %_str:#?=%&(timeout 4)>nul & (taskkill /IM notepad.exe&del/q/s !_str:#?=!)>nul 2>&1

如果你真的想隐藏源代码,那么构建一个实际的 exe,如果你不会,你将不得不学习它,或者支付开发人员为你构建它。