如何使用.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 安装目录添加到系统环境变量,或者写全路径也可以。

相关推荐
Hare_bai22 分钟前
WPF的交互核心:命令系统(ICommand)
ui·c#·wpf·交互·xaml
Eiceblue1 小时前
C# 将HTML文档、HTML字符串转换为图片
visualstudio·c#·xhtml
进阶的小木桩15 小时前
C# 导出word 插入公式问题
开发语言·c#·word
天天代码码天天17 小时前
PP-OCRv5 C++封装DLL C#调用源码分享
开发语言·c++·c#·ocr
江沉晚呤时17 小时前
深入了解 C# 异步编程库 AsyncEx
java·前端·数据库·c#·.netcore
快乐飒男17 小时前
c#基础08(数组)
c#
Hare_bai17 小时前
WPF的UI交互基石:数据绑定基础
ui·c#·wpf·交互·xaml
归途醉染18 小时前
C# Costura.Fody 排除多个指定dll
开发语言·c#
CopyLower18 小时前
设计一个支持100,000 QPS的评论中台系统架构:技术实践与实现指南
系统架构·c#·linq
vvilkim18 小时前
C# 数组与字符串:全面解析与应用实践
开发语言·算法·c#