程實(shí)現(xiàn)全解)
【免費(fèi)下載鏈接】discord-quest-completerA Windows desktop application to complete quests on Discord without installing the full actual games.項(xiàng)目地址https://gitcode.com/gh_mirrors/di/discord-quest-completer點(diǎn)擊查看免費(fèi)下載Discord Quest Completer 是一款面向 Windows 的桌面應(yīng)用核心玩法很取巧不安裝動(dòng)輒幾十 GB 的真實(shí)游戲只靠一個(gè)體積極小幾 MB 甚至更小的假游戲進(jìn)程就能讓 Discord 識(shí)別出你正在玩某款游戲從而完成那些需要15 分鐘游戲時(shí)長(zhǎng)的 Discord Quest任務(wù)。本文帶你拆解它最硬核的部分——如何把代表游戲的可執(zhí)行文件從 250KB 一路瘦身到 136KB以及背后的 Windows 進(jìn)程偽裝原理。一、不裝游戲也能刷任務(wù)它解決了什么痛點(diǎn)Discord 會(huì)定期放出Quest任務(wù)活動(dòng)其中不少要求你先游玩某款已認(rèn)證的游戲并累計(jì)一定時(shí)長(zhǎng)才能領(lǐng)取獎(jiǎng)勵(lì)??涩F(xiàn)實(shí)是 游戲太大動(dòng)輒幾十上百 GB硬盤裝不下 帶寬有限下載太慢? 不想裝游戲的反作弊anti-cheat或它根本跑不動(dòng)你的電腦 只是想掛個(gè)游戲狀態(tài)給別人看。Discord Quest Completer 正是為此而生它用極小的成本模擬出某款游戲正在運(yùn)行的狀態(tài)讓你省下空間和流量照樣參與任務(wù)。這些使用場(chǎng)景在項(xiàng)目里也有明確說(shuō)明可參考 README.md 的Use Cases章節(jié)。它只支持Discord 已認(rèn)證Verified、且能被自動(dòng)檢測(cè)到的游戲。游戲清單來(lái)自 Discord 的 detectable 接口前端會(huì)把它緩存到 src/assets/gamelist.json。二、Discord 如何認(rèn)出你在玩哪款游戲理解原理前先要知道 Discord 檢測(cè)游戲的機(jī)制。Discord 通過(guò)Rich Presence / Registered Games來(lái)識(shí)別游戲它的判斷邏輯其實(shí)并不神秘看進(jìn)程名檢查有沒有一個(gè)名字與真實(shí)游戲主程序完全一致的進(jìn)程正在運(yùn)行看位置有時(shí)還要求該進(jìn)程位于游戲本該在的安裝目錄里。換句話說(shuō)Discord 關(guān)心的是有沒有一個(gè)叫xxx.exe的進(jìn)程在跑而不太管這個(gè)進(jìn)程是不是幾 GB 的真游戲。 這就是本項(xiàng)目的突破口——只要能造出一個(gè)名字對(duì)、位置對(duì)、一直在運(yùn)行的極小進(jìn)程就能騙過(guò)檢測(cè)。這套復(fù)制模板 → 改名 → 啟動(dòng)的核心邏輯都寫在 src-tauri/src/lib.rs 里。三、一個(gè)模板復(fù)制成任意游戲假游戲進(jìn)程的誕生Discord Quest Completer 并沒有為每款游戲各寫一個(gè)程序而是用了**一個(gè)萬(wàn)能模板 復(fù)制改名** 的套路準(zhǔn)備模板打包時(shí)把編譯好的超小進(jìn)程二進(jìn)制src-win.exe塞進(jìn)應(yīng)用的 resources運(yùn)行時(shí)路徑形如data/src-win.exe見 src-tauri/src/lib.rs 的runner_resource_name。建目錄按games/游戲AppID/子路徑/的真實(shí)安裝結(jié)構(gòu)創(chuàng)建文件夾game_folder_path。復(fù)制改名把模板復(fù)制過(guò)去并改名為真實(shí)游戲的主程序文件名create_fake_game。啟動(dòng)以--title 游戲名參數(shù)啟動(dòng)它讓它顯示游戲名并保持運(yùn)行run_background_process。停止用taskkill /F /IM 進(jìn)程名結(jié)束進(jìn)程stop_process。這個(gè)萬(wàn)能模板啟動(dòng)后會(huì)彈出一個(gè)顯示游戲名的小窗口并掛一個(gè)系統(tǒng)托盤圖標(biāo)——因?yàn)椴糠钟螒?Discord 需要檢測(cè)到有可見窗口。它的完整 Windows 實(shí)現(xiàn)就在 src-win/src/main.cpp。前端按鈕的Play / Stop / Install and Play狀態(tài)切換邏輯在 src/components/GameExecutables.vue。四、從 250KB 到 136KB 的極致瘦身三種方案怎么取舍整個(gè)項(xiàng)目的靈魂 KPI只有一個(gè)字——小。作者的目標(biāo)是讓每個(gè)平臺(tái)的假進(jìn)程控制在 100KB 上下。圍繞這個(gè)目標(biāo)項(xiàng)目實(shí)測(cè)了三條路線數(shù)據(jù)來(lái)自 README.md方案體積依賴運(yùn)行時(shí)取舍結(jié)論C# / .NET~7KB需要用戶裝 .NET 4.7 運(yùn)行時(shí)最小但給用戶加負(fù)擔(dān) ?Rust windowscrate~136KB無(wú)自包含小巧且不依賴外部 ?C WinAPI當(dāng)前落地~250KB無(wú)自包含兼容性好目前隨包發(fā)布7KB 的 C# 方案體積極致卻要求終端用戶額外安裝 .NET 運(yùn)行時(shí)——這與開箱即用的理念相悖所以被放棄136KB 的 Rust 方案用windowscrate 直接調(diào) Win32 API 建窗口自包含、無(wú)需任何運(yùn)行時(shí)是更小且不依賴的理想方向??當(dāng)前倉(cāng)庫(kù)真正打包使用的是 C WinAPI 版本約 250KB因?yàn)樗鼰o(wú)需任何運(yùn)行時(shí)、兼容性最穩(wěn)代碼見 src-win/src/main.cpp。所以標(biāo)題里的從 250KB 到 136KB正是這條在不逼用戶裝運(yùn)行時(shí)的前提下把自包含進(jìn)程做得盡量小的瘦身路徑。五、拆解 Windows 假進(jìn)程構(gòu)建配方與瘦身技巧為什么一個(gè) C 程序能被壓到只剩幾百 KB答案藏在構(gòu)建配方里。它由三部分協(xié)同完成1. 用 Rust 的極致壓縮編譯配置項(xiàng)目用 Rust 的 release profile 來(lái)驅(qū)動(dòng)整條編譯鏈關(guān)鍵參數(shù)見 src-win/Cargo.tomlopt-level z—— 以最小體積為目標(biāo)優(yōu)化lto true—— 鏈接時(shí)優(yōu)化跨編譯單元?jiǎng)h掉死代碼codegen-units 1—— 單單元生成最大化優(yōu)化空間panic abortstrip true—— 去掉錯(cuò)誤處理與符號(hào)表進(jìn)一步瘦身。2. 在 build.rs 里塞入省空間鏈接參數(shù)src-win/build.rs 通過(guò)cc編譯 C 源碼并注入了一系列鏈接器開關(guān)/NODEFAULTLIB不鏈接默認(rèn) C 運(yùn)行時(shí)省下大量體積/ENTRY:mainEntryPoint手動(dòng)指定入口為 C 里的mainEntryPoint/SUBSYSTEM:WINDOWS無(wú)控制臺(tái)窗口/GS-關(guān)閉緩沖區(qū)安全檢查減體積/ALIGN:16與/FILEALIGN:16對(duì)齊到 16 字節(jié)進(jìn)一步壓縮文件。3. C 源碼本身也摳到極致src-win/src/main.cpp 的實(shí)現(xiàn)有幾個(gè)典型的瘦身手法動(dòng)態(tài)加載 API用LoadLibraryWGetProcAddress運(yùn)行時(shí)才取user32、shell32、gdi32的函數(shù)避免靜態(tài)鏈接開銷手寫memset用一段十幾字節(jié)的小函數(shù)替代 CRT 版本main.cpp自己解析--title參數(shù)不依賴標(biāo)準(zhǔn)庫(kù)的字符串處理直接從GetCommandLineW()里取游戲名main.cpp。而 src-win/src/main.rs 本身只有一行#![no_main]#![no_std]和一個(gè)空panic_handler真正邏輯全在 C 里Rust 僅充當(dāng)編譯配置外殼。平臺(tái)模板統(tǒng)一由 scripts/sync-runner.mjs 驅(qū)動(dòng)編譯各平臺(tái) runner 再?gòu)?fù)制到資源目錄Windows 對(duì)應(yīng)pnpm build:runner:win pnpm copy:runner:win。六、從搜索到開玩完整使用流程把上面的機(jī)制串起來(lái)普通用戶的操作路徑其實(shí)非常簡(jiǎn)單搜索游戲應(yīng)用啟動(dòng)時(shí)從 Discord detectable 接口拉取可檢測(cè)游戲清單fetch_gamelist_from_discord前端用 Fuse.js 做模糊搜索src/pages/HomeView.vue?加入列表把想刷的游戲加到待辦列表??點(diǎn) Play若該可執(zhí)行文件未安裝先觸發(fā)install_and_play——即復(fù)制模板create_fake_game再啟動(dòng)run_background_process見 installAndPlay??計(jì)時(shí)假進(jìn)程常駐Discord 檢測(cè)到后狀態(tài)顯示為正在玩 X任務(wù)時(shí)長(zhǎng)按需累計(jì)常見為 15 分鐘??點(diǎn) Stop調(diào)用stop_process結(jié)束進(jìn)程。小提示假進(jìn)程會(huì)持續(xù)占用游戲名玩完記得 Stop避免長(zhǎng)時(shí)間掛著。七、運(yùn)行目錄長(zhǎng)這樣安裝、維護(hù)與卸載應(yīng)用會(huì)在自己所在目錄下生成假游戲文件。因此務(wù)必把它放在你有寫入/執(zhí)行權(quán)限的目錄別放C:\Program Files\這類需提權(quán)的目錄否則可能無(wú)法創(chuàng)建文件見 README.md 的安裝說(shuō)明。解壓后的目錄結(jié)構(gòu)大致如下discord-quest-completer/ ├── discord-quest-completer.exe # 主程序 ├── data/ │ └── src-win.exe # 假游戲進(jìn)程模板 └── games/ └── game-id/ # 按游戲 AppID 存放的假游戲日常維護(hù)玩久了games/下會(huì)積累不少文件夾手動(dòng)刪掉不用的即可卸載更是簡(jiǎn)單粗暴——?jiǎng)h掉整個(gè)應(yīng)用目錄就完事。八、支持平臺(tái)與技術(shù)棧一覽維度說(shuō)明主平臺(tái)Windows 11Windows 10 理論可用未重點(diǎn)測(cè)試Linux / macOS暫未支持——核心原因是假進(jìn)程尚未在各平臺(tái)都?jí)旱阶銐蛐〖夹g(shù)棧 Rust后端 Vue.js前端 Tauri桌面框架渲染依賴需 WebView2Win11 自帶更早系統(tǒng)需手動(dòng)安裝技術(shù)棧與依賴聲明可分別在 src-tauri/Cargo.toml 和 package.json 中查看。寫在最后Discord Quest Completer 的巧妙之處在于它沒有硬懟游戲本身而是精準(zhǔn)抓住了Discord 靠進(jìn)程名識(shí)別游戲這一檢測(cè)機(jī)制再用一個(gè)被極致壓縮過(guò)的自包含小進(jìn)程去滿足它。從 250KB 的 C 版本到 136KB 的 Rust 版本再到 7KB 卻有門檻的 C# 版本這條瘦身之路本質(zhì)上是在**體積與零依賴**之間反復(fù)權(quán)衡。??合規(guī)提醒本項(xiàng)目定位為學(xué)習(xí)與個(gè)人用途。使用此類模擬工具可能涉及 Discord 服務(wù)條款、游戲發(fā)行商與廣告主的權(quán)益后果需自行承擔(dān)請(qǐng)自行權(quán)衡風(fēng)險(xiǎn)。想深入源碼可直接克隆倉(cāng)庫(kù)后按平臺(tái)編譯對(duì)應(yīng) runnergit clone https://gitcode.com/gh_mirrors/di/discord-quest-completer cd discord-quest-completer pnpm install pnpm build:runner:win pnpm copy:runner:win pnpm tauri dev贊分享【免費(fèi)下載鏈接】discord-quest-completerA Windows desktop application to complete quests on Discord without installing the full actual games.項(xiàng)目地址https://gitcode.com/gh_mirrors/di/discord-quest-completer點(diǎn)擊查看免費(fèi)下載相關(guān)推薦Gaze-LLE 完全指南從安裝到預(yù)測(cè)的 5 步快速上手教程Gaze LLE 完全指南從安裝到預(yù)測(cè)的 5 步快速上手教程 想要快速掌握計(jì)算機(jī)視覺中的注視目標(biāo)估計(jì)技術(shù)嗎Gaze LLEGaze Target EstiRust二進(jìn)制瘦身秘籍從MB到KB的極致優(yōu)化指南Rust二進(jìn)制瘦身秘籍從MB到KB的極致優(yōu)化指南 min sized rust項(xiàng)目專注于展示如何最小化Rust二進(jìn)制文件大小。默認(rèn)情況下Rust優(yōu)化執(zhí)行速度示例工程極致精簡(jiǎn)ArduinoJson二進(jìn)制瘦身全攻略極致精簡(jiǎn)ArduinoJson二進(jìn)制瘦身全攻略 ArduinoJson是一款專為Arduino和嵌入式C設(shè)計(jì)的高效JSON庫(kù)以其簡(jiǎn)潔的API和出色的性能物聯(lián)網(wǎng)嵌入式創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考