Bat文件混淆加密-利用十六进制混编进行Bat加密
具有 .BAT 文件扩展名的文件是 Windows 批处理文件。它是一个纯文本文件,包含用于重复任务或逐个运行脚本组的各种命令。
所有类型的软件都将 BAT 文件用于各种目的,例如复制或删除文件、运行应用程序以及关闭进程。
那么我们看看Bat文件如进行混淆加密吧~
混淆前后对比
原理
其实bat文件本质上就是一个文本文件,我们只需要修改十六进制的文件头信息让其进制数据在读取时产生乱码,但是在windows中bat文件在文件中拼接 & 后跟上自己的代码是可以正常执行的 但是切记 代码中尽量不要出现中文字符
为此小编编写了一份加密的bat供各位老铁参考
下载地址:点我下载
我还是贴一下源码吧
@echo off
chcp 65001 >nul
set "input_file=%~1"
set "output_file=%~n1-output.bat"
set "handle_name=%~n1-handle.bat"
:: 参数校验
if not exist "%input_file%" (
echo 文件不存在: %input_file%
exit /b 1
)
:: 执行复制
copy /Y "%input_file%" "%handle_name%" >nul 2>&1
set "header=©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®©®© &"
set "headeroo=←[2J@&"
:: 使用 PowerShell 直接插入头部
powershell -Command "$content=Get-Content '%handle_name%' -Raw; [IO.File]::WriteAllText('%handle_name%', '%header%' +$content)"
:: 通过 PowerShell 处理二进制
powershell -Command "$data=[System.IO.File]::ReadAllBytes('%handle_name%'); if ($data.Length -ge 2) { $data[0]=0xFF; $data[1]=0xFE;$data[3]=0xFF; $data[4]=0xFE}; [System.IO.File]::WriteAllBytes('%output_file%', $data)"
使用教程
你可以打开bat查看源码
使用很简单 将你要加密的bat文件拖到加密的文件bat上,随后会生成如下二个文件
1.xxx-handle.bat 拼接处理后的bat文件
2.xxx-output.bat 混淆后的文件
其中xxx-output.bat是混淆后的文件
希望本篇文章对你的开发有所帮助~
发表评论