[UE 4.18] UnrealPak 加密應用

前言:

 一般使用UE4打包(Package Project)的時候,為了避免整個Game Content資料夾嶄露無遺,有被輕易盜走資源的疑慮,我們通常都會習慣在Packging設定裡勾選"Use Pak File"這個選項,讓整個專案資源打包成一個.pak檔,那其實只做這個動作是不夠的,仍有被抽取資源的風險,因此我們需要對pak檔再加密多一層保護。

 在UE4.19版本,官方已經很好的把功能都整合到Project Settings裡,但若想在之前的版本處理,其實UE已經有提供了方法,只是要利用命令列參數的方式來實現,本文將介紹最入門的加密方式,僅需要修改專案設定與新增一份用於加密的ini檔。

詳見 Project - Crypto [UE 4.19]

實作:

 要實現Pak加密我們需要使用UnrealPak這支官方程式,在編輯器裡做打包的時候,他其實會默默的幫我們執行這支程式來將資源封裝成pak檔,UnrealPak主要可實現三大功能,打包、簽名與加密,本文只聚焦探討加密的部分。

// UnrealPak.exe位置
[EngineDIR]\Engine\Binaries\Win64\UnrealPak.exe

// 若欲了解邏輯與查看完整函數應用,原碼位置 (需下載source code,從Epic Games Launcher下載引擎沒有這檔案)
[EngineDIR]\Engine\Source\Programs\UnrealPak\Private\UnrealPak.cpp

// Package Project 歷經階段
BUILD COMMAND --- 建置階段,如果有編譯錯誤會在這階段報錯
COOK COMMAND --- 烘焙階段,把專案中使用到的資源整理起來
STAGE COMMAND --- 舞台階段,UnrealPak在此階段處理
PACKAGE COMMAND --- 封裝階段,Log未記載內容,尚未得知處理細節
ARCHIVE COMMAND --- 歸檔階段,Log未記載內容,尚未得知處理細節

#1 增加 UnrealPak 加密選項設定

Project Settings -> Project-Packaging
勾選 'Encrypt ini files inside pak files'
勾選 'Encrypt the pak index, making it unusable without the required key'

#2 新增 加密進階設定

// UE在打包的時候會自動偵測檔案並套用
新增 DefaultEncryption.ini 在 [ProjectDIR]\Config\

[Core.Encryption]
EncryptPak=True
aes.key=Cpq7QNB4uAe2M5EvKPHNWc8PgpuUxhbp // 最小32字元

// 密碼產生器小工具
https://www.ez2o.com/App/Coder/RandomPassword

設定完以上步驟,再按一般打包流程,打包出來的pak檔就是已經透過AES加密過的囉!

參考資料:

UnrealPak的使用笔记

UnrealPak功能介绍(包含打包签名加密)

這個網誌中的熱門文章

Windows10 版本1607後可啟用支援長路徑檔名 (Maximum Path Length Limitation)

標準使用者如何執行需系統管理者權限的程式