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

相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹3 天前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
kybs19913 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
Polevne3 天前
C# SFTP客户端实现文件传输
c#·ssh
samble3 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas3 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
cjp5603 天前
024 . WPF MVVM类封装优化
c#
淡海水4 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
asdzx674 天前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本