我有计划每天运行的批处理脚本。有些脚本带有密码。我想保护批处理脚本不被未经授权的人读取或打开。
我的问题是:保护批处理文件有什么好方法?是否有免费或开源工具可以编译批处理文件?
答案1
您可以使用 NTFS ACL 保护文件,防止未经授权的用户执行这些文件。根据定义,有权执行这些文件的用户可以读取密码(如果您选择对密码进行模糊处理,则以模糊处理的形式读取)。执行权限意味着读取权限。如果脚本可以对密码进行去模糊处理,那么用户也可以。
假设你试图保护密码不被允许执行脚本的用户获取,那么你所说的是不可能的。你实际上是在说:
我们需要向用户提供密码,以便他们可以使用某些软件,但我们不希望用户知道密码是什么。
根据定义,用户必须能够恢复密码才能使用它们。您对密码进行的任何混淆或编码都只是“减速带”,以便坚定的用户找出密码是什么。
只要这个脚本的执行上下文是你有把密码交给他们。不管你是否试图混淆密码都是你自己的事,但你还是要把密码交给他们。
答案2
我会使用类似 BATCH2EXE 的东西并“编译”批处理文件,这样他们就无法修改它。:-)
市面上有好几种这样的服务。有些是免费的,有些则要花点钱。
在 Google 上搜索“batch2exe”或“bat2exe”你就会明白我的意思。
这些年来我断断续续使用过各种各样的产品。
答案3
混淆批处理文件的一种快速简便的方法是在十六进制代码的开头添加字符串“FF FE 0D 0A”(使用免费的十六进制编辑器)。恶意软件作者经常使用这种方法,它欺骗 Notepad 或 Notepad++ 等文本编辑程序以 Unicode 格式打开文件(而实际上它是 ASCII 格式),从而导致乱码。但是,如果运行批处理文件,它将由 cmd.exe 而不是 notepad.exe 处理,从而运行混淆的代码(Windows cmd 将把所有内容读取为 ASCII)。
这不会阻止任何真正想了解幕后情况的人,但会阻止任何不太精通逆向工程的人。希望这能有所帮助。
答案4
据我所知,并非如此,“编译”批处理文件并不能阻止有决心的人对生成的可执行文件进行逆向工程并获取密码。
我会考虑使用 NTFS 中的 ACL 来解决这个问题。