如何使用.Net Reactor 批量加密 DLL

发布于:2025-05-30 ⋅ 阅读:(17) ⋅ 点赞:(0)

若在日常工作中加密操作的使用频率较高,每次启动程序并执行选择 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 安装目录添加到系统环境变量,或者写全路径也可以。


网站公告

今日签到

点亮在社区的每一天
去签到