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

若在日常工作中加密操作的使用频率较高,每次启动程序并执行选择 DLL 文件等操作均会显得较为繁琐。在此,分享一种可提升操作效率的方法:通过命令行方式调用脚本,即可实现 DLL 或 Exe 文件的批量加密处理。具体操作如下:

下载NetReactor:下载链接(链接: https://pan.baidu.com/s/1B3oHvFZ83vzrYUmjne-foQ?pwd=1234)

复制下面脚本:

cpp 复制代码
# 设置 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 系统可能会限制脚本的运行,可以通过以下命令启用脚本执行:

cpp 复制代码
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

如果还不行,试试将 DOTNET_REACTOR 安装目录添加到系统环境变量,或者写全路径也可以。

相关推荐
Jackson@ML1 小时前
用Visual Studio Code最新版开发C#应用程序
ide·vscode·c#
天马37981 小时前
.net 8.0 System.InvalidOperationException:“Session has not been configured
.net
她说彩礼65万2 小时前
C# 代理模式
开发语言·c#·代理模式
张人玉5 小时前
TCP 的三次握手和四次挥手
网络·tcp/ip·c#
曹牧5 小时前
C#:三元运算符
开发语言·c#
m0_748248028 小时前
C++与C#布尔类型深度解析:从语言设计到跨平台互操作
c++·stm32·c#
LeonDL1689 小时前
【通用视觉框架】基于C#+VisionPro开发的视觉框架软件,全套源码,开箱即用
人工智能·c#·visionpro·通用视觉框架·机器视觉框架·视觉框架软件·机器视觉软件
-可乐加冰吗9 小时前
SuperMap iObjects .NET 11i 二次开发(十七)—— 叠加分析之擦除
windows·.net
一抓掉一大把10 小时前
RuoYi .net-实现商城秒杀下单(redis,rabbitmq)
redis·mysql·c#·rabbitmq·.net