若在日常工作中加密操作的使用频率较高,每次启动程序并执行选择 DLL 文件等操作均会显得较为繁琐。在此,分享一种可提升操作效率的方法:通过命令行方式调用脚本,即可实现 DLL 或 Exe 文件的批量加密处理。具体操作如下:
下载NetReactor:下载链接(链接: https://pan.baidu.com/s/1B3oHvFZ83vzrYUmjne-foQ?pwd=1234)
复制下面脚本:
# 设置 dotNET_Reactor 的路径
$dotnetReactorPath = "D:\Program Files (x86)\Eziriz\.NET Reactor\dotNET_Reactor.exe"
# 检查 dotNET_Reactor 是否存在
if (-Not (Test-Path -Path $dotnetReactorPath)) {
Write-Error "dotNET_Reactor.exe not found at: $dotnetReactorPath"
exit 1
}
# 定义需要处理的 DLL 文件所在目录
$inputDirectory = "D:\Protected\sourceDll" # 替换为你的 DLL 文件所在目录
$outputDirectory = "D:\Protected\ProtectedDLL" # 替换为目标输出目录
# 检查目标输出目录是否存在,如果不存在则创建
if (-Not (Test-Path -Path $outputDirectory)) {
New-Item -ItemType Directory -Path $outputDirectory | Out-Null
}
# 定义加密函数
function Encrypt-Dll {
param(
[string]$dllPath,
[string]$outputPath
)
& $dotnetReactorPath -file "$dllPath" -targetfile "$outputPath" -necrobit 1 -control_flow_obfuscation 1
if ($?) {
Write-Host "Encryption successful for $dllPath"
} else {
Write-Error "Encryption failed for $dllPath"
}
}
# 递归获取输入目录及其子目录下的所有 DLL 文件
$dllFiles = Get-ChildItem -Path $inputDirectory -Filter "*.dll" -Recurse
# 对每个 DLL 文件进行加密处理
foreach ($file in $dllFiles) {
$dllFullPath = $file.FullName
# 获取文件在输入目录中的相对路径
$relativePath = $dllFullPath.Substring($inputDirectory.Length + 1)
# 构建目标路径
$outputFilePath = Join-Path -Path $outputDirectory -ChildPath ("Protected_" + $relativePath)
# 获取目标文件的目录路径
$outputDir = Split-Path -Path $outputFilePath -Parent
# 检查目标目录是否存在,如果不存在则创建
if (-Not (Test-Path -Path $outputDir)) {
New-Item -ItemType Directory -Path $outputDir | Out-Null
}
Encrypt-Dll -dllPath $dllFullPath -outputPath $outputFilePath
}
Write-Host "Batch encryption process completed."
使用步骤
修改脚本中的路径:
将 $inputDirectory
替换为包含你的 .dll
文件的目录路径。
将 $outputDirectory
替换为你希望保存加密后的 .dll
文件的目录路径。
确保这两个路径在你的系统中是有效的。
保存脚本:
将上述代码保存为一个 .ps1
文件,例如 EncryptDlls.ps1
。
运行脚本:
打开 PowerShell。
切换到脚本所在的目录,例如:
cd D:\Path\To\Your\Scripts
运行脚本:
.\EncryptDlls.ps1
注意事项
确保你的 PowerShell 环境允许运行脚本。默认情况下,Windows 系统可能会限制脚本的运行,可以通过以下命令启用脚本执行:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
如果还不行,试试将 DOTNET_REACTOR 安装目录添加到系统环境变量,或者写全路径也可以。