【RM教學 2.0】 使用原生sdk保護你的專案 - 1

閱讀時間約 5 分鐘
這一篇文章裡面將會告訴你如何用原生的sdk 對你的專案程式碼/圖片進行保護。 (建議已經升級1.6版本的作者才使用) 這篇教學有點繁雜,所以不說廢話了,看完這篇可以得到以下效果
  • 學到如何保護程式碼,不讓其他人看光你的檔案
  • 學會如何利用簡單技巧防止別人反編譯你的圖片(下一篇才會教,但你要先看懂這篇)
說明: 這篇文章將會利用原生nwjs的SDK工具,將程式碼進行編譯。編譯後的程式碼與圖片基本上可以得到一定程度的保護。
(此範例適用MV1.6版, 1.5版主要差再sdk的版本要使用0.22版本,其餘皆相同。)
參考文章: AceOfAces RMMVCoolTool

事前準備

首先來下載主要使用的工具 nwjs SDK 0.29.0 (RMMV 1.6的核心nwjs為 0.29)點我
nwjs-v0.29.0-win-x64.zip / nwjs-sdk-v0.29.0-win-x64.zip 這兩者都會用到,請把它抓下來並且解壓縮,這也是最主要用來加密的工具
接著是Resource Hacker,這個工具主要是用來修改執行檔的icon 連結

STEP 1: 輸出專案

這部分就不多做說明了,輸出專案之後我們可以看到目錄結構長這樣

STEP 2-1: 進入nwjs-sdk-v0.29.0-win-x64資料夾

這邊要進入加密了,所以請跟好每個步驟! 請注意這邊是進入解壓縮後的SDK資料夾
#請確認有看到nwjc.exe這個檔案的資料夾才是正確的喔

STEP 2-2: 建立js資料夾

這個步驟不是必要的,但是不懂的朋友們可以照著步驟做就好!

STEP 2-3: 把專案中js底下的檔案複製到sdk的js目錄中

這個步驟主要是把你想要加密的程式碼複製進來,本次教學則是 把所有都加密,只加密圖片的部分在後續會說明到。

STEP 2-4: 修改rpg_manager.js

這個步驟主要是把原本讀取 plugins/*.js的地方修改為讀取 .bin檔案

STEP 2-5: 製作加密用的批次檔

請先nwjc同一層目錄建立toBin.txt檔案來編輯。 我們主要使用nwjc來建立加密的檔案 他的基本語法如下
nwjc 轉換的檔案名稱.js 要輸出的檔案名稱.bin
利用此語法可以將js編譯成bin檔,因此我們在toBin.txt中先進行撰寫 此範例圖片,我們把基本要轉換的js檔案都填入
plugins資料夾底下則看你有多少js需要進行轉換,請依照自己使用 的狀況填寫

STEP 2-6:修改toBin.txt為toBin.bat

這個步驟就是要實際進行轉換了,修改檔名後雙點兩下 toBin.bat
bat檔案執行中
執行完畢,你會發現每個js都有對應的bin檔

STEP 3: 複製專案主要檔案到 nwjs-v0.29.0-win-x64中

還記得最開始我們有下載nwjs-v0.29.0-win嗎? 記得先將他解壓縮,然後把輸出專案中的 www資料夾package.json 複製到此資料夾中

STEP 4: 把轉換的js檔案都換成bin檔

這個階段,我們將有轉換成的bin檔的js檔案都替換到
nwjs-v0.29.0-win/www/js
替換完基本上你就看不到js檔案才對喔!

STEP 5: 修改nwjs-v0.29.0-win-x64/www/index.html

最後,把index.html中所有讀取js的檔案改為 nw.Window.get().evalNWBin(null, 'www/js/對應的檔案.bin');
範例index下載 (請依照自己是不是有額外load腳本做修改)

STEP 6: 基本程式碼加密完成!

基本上專案加密這樣就完成了,當然你可以把nwjs-v0.29.0-win-x64修改成自己的專案名稱,要執行遊戲的時候只要點擊 nw.exe即可進行遊戲了!
(nw.exe 可以直接修改檔案名稱,可以正常執行)

STEP 7: 修改遊戲執行ICON

因為使用原生的nwjs檔案,所以執行檔是預設的圖片
如果想要把ICON改成符合自己遊戲的icon 可以參考這篇教學
順便附上ResourceHacker的官方下載點
再附上線上將icon轉成ico的工具
本篇文章參考
nwjs 官方文檔 http://docs.nwjs.io/en/latest/For%20Users/Advanced/Protect%20JavaScript%20Source%20Code/
aceofaces_mod rmmv cook tool 教學 https://forums.rpgmakerweb.com/index.php?members/aceofaces_mod.46244/&page=2
由於篇幅關係,防止別人破解圖片教學,我們移動到下一篇!!(被揍 (基本上要懂這一篇才會看得懂如何防圖片破解)
為什麼會看到廣告
    記錄了包含開發日誌以及參展的種種心得
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    因為steamWork 實在太難用了….所以這次的系列想邊紀錄使用方式跟流程, 如果有錯誤之處還請多指教w   
    從原生PIXIjs 的試寫來理解RM MV的一些架構與程式     這次看到的範例是pixijs官方網站上的 Container Pivot  pivot 到google 翻譯上是樞紐的意思。  這次的效果是要讓PIXI.Sprite在畫面上旋轉。  首先在上次的程式碼中追加了兩行,新增了一張叫做E
    從原生PIXIjs 的試寫來理解RM MV的一些架構與程式    參照了pixijs的原生網站,先從範例開始建立與學習。  首先先建立 index.php 並建立 assets 資料夾  index 主要只用來include js的部份    這邊我直接引用cdnjs上的pixi.min.js來使
    hihi!大家好我又來了,前陣子在巴哈版上看到有玩家提問如何做出半身圖的對話效果,才留意到雖然是基本功能,但對初學玩家來說也會不知道如何做出來,那這次就來分享一下使用圖片來達到AVG模式效果的方法,順便分享粽子自製的小插件~  這次的教學主要會告訴大家如何使用圖片來達到AVG效果,而粽子提供的插件則
    因為steamWork 實在太難用了….所以這次的系列想邊紀錄使用方式跟流程, 如果有錯誤之處還請多指教w   
    從原生PIXIjs 的試寫來理解RM MV的一些架構與程式     這次看到的範例是pixijs官方網站上的 Container Pivot  pivot 到google 翻譯上是樞紐的意思。  這次的效果是要讓PIXI.Sprite在畫面上旋轉。  首先在上次的程式碼中追加了兩行,新增了一張叫做E
    從原生PIXIjs 的試寫來理解RM MV的一些架構與程式    參照了pixijs的原生網站,先從範例開始建立與學習。  首先先建立 index.php 並建立 assets 資料夾  index 主要只用來include js的部份    這邊我直接引用cdnjs上的pixi.min.js來使
    hihi!大家好我又來了,前陣子在巴哈版上看到有玩家提問如何做出半身圖的對話效果,才留意到雖然是基本功能,但對初學玩家來說也會不知道如何做出來,那這次就來分享一下使用圖片來達到AVG模式效果的方法,順便分享粽子自製的小插件~  這次的教學主要會告訴大家如何使用圖片來達到AVG效果,而粽子提供的插件則
    你可能也想看
    Google News 追蹤
    Thumbnail
    徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
    Thumbnail
    隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
    Thumbnail
    這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
    Thumbnail
    這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
    Thumbnail
    本章節的目的是介紹Java中的套件使用,包括如何引用第三方套件和自定義模組,如何創建和使用自定義套件,以及介紹一些常見的Java標準庫套件。這些內容將幫助讀者更好地理解和使用Java的套件系統。
    Thumbnail
    此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
    分享下最近製作 RM 上用到的一些 MZ 事件腳本 // 設定此事件的自開關 A 為 OFF $gameSelfSwitches.setValue('A', false) // 設定第 1 個地圖的第 3 個事件的自開關 A 為 OFF $gameSelfSwitches.setValue([1
    Thumbnail
    套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
    Thumbnail
    ※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
    Thumbnail
    本章講述了C#開發中的程序集,命名空間和 NuGet 包管理器。程序集是 .NET 應用的基礎,命名空間用於組織和預防命名衝突,而 NuGet 用於管理 .NET 的外部庫和依賴項。
    Thumbnail
    Renpy教學,詳細介紹在遊戲開發中如何在Renpy裡隱藏對話框,包括自動隱藏、撥放動畫時隱藏、顯示CG時隱藏文字框以及讓玩家自行隱藏文字框。希望能夠幫助到遊戲開發者。
    今天的文章要來和大家介紹同步存檔 (上傳 / 下載存檔) 範例: 範例圖 這個功能呢在最新版的 Renpy (Renpy 8) 是自帶的功能 所以在建立一個新專案後可以試著啟動專案,在默認的存檔 / 讀檔畫面就可以直接看到這個功能了 默認同步 你可以在 screen.rp
    Thumbnail
    徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
    Thumbnail
    隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
    Thumbnail
    這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
    Thumbnail
    這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
    Thumbnail
    本章節的目的是介紹Java中的套件使用,包括如何引用第三方套件和自定義模組,如何創建和使用自定義套件,以及介紹一些常見的Java標準庫套件。這些內容將幫助讀者更好地理解和使用Java的套件系統。
    Thumbnail
    此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
    分享下最近製作 RM 上用到的一些 MZ 事件腳本 // 設定此事件的自開關 A 為 OFF $gameSelfSwitches.setValue('A', false) // 設定第 1 個地圖的第 3 個事件的自開關 A 為 OFF $gameSelfSwitches.setValue([1
    Thumbnail
    套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
    Thumbnail
    ※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
    Thumbnail
    本章講述了C#開發中的程序集,命名空間和 NuGet 包管理器。程序集是 .NET 應用的基礎,命名空間用於組織和預防命名衝突,而 NuGet 用於管理 .NET 的外部庫和依賴項。
    Thumbnail
    Renpy教學,詳細介紹在遊戲開發中如何在Renpy裡隱藏對話框,包括自動隱藏、撥放動畫時隱藏、顯示CG時隱藏文字框以及讓玩家自行隱藏文字框。希望能夠幫助到遊戲開發者。
    今天的文章要來和大家介紹同步存檔 (上傳 / 下載存檔) 範例: 範例圖 這個功能呢在最新版的 Renpy (Renpy 8) 是自帶的功能 所以在建立一個新專案後可以試著啟動專案,在默認的存檔 / 讀檔畫面就可以直接看到這個功能了 默認同步 你可以在 screen.rp