背景
又到了年末,在一片祥和聲中,總想找點游戲,消遣下時光。
不過玩了這么多年游戲了,總是有一個做腳本的心愿,這次抽時間研究了下手游的安全機制。
使用GameSentry工具,對手游進行一定程度的分析。
GameSentry介紹
項目地址:https://github.com/GrowthEase/GameSentry
GameSentry:主要通過分析游戲協議內容、游戲函數邏輯和對應的地址、部分代碼熱更、自動化 Hook 等功能達到降低深層次安全測試門檻的目的。
可以簡化內存測試、協議測試過程中對于 APK 逆向、Hook 編寫、腳本修改、腳本 dump 的繁雜操作,大大降低測試人員的上手門檻和逆向工作。
而從實踐效果上看,GameSentry 的設計思路是從攻擊者的角度對游戲進行逆向分析和破解,主動發現和挖掘系統中的弱點、技術缺陷和安全漏洞,并進行缺陷放大和風險性評估,提前暴露游戲潛在安全風險,讓安全團隊可以在危害發生前就著手準備漏洞修復方案,可以最大程度降低事后外掛危害與外掛打擊成本。
安裝
按照該流程安裝https://github.com/GrowthEase/GameSentry/blob/main/doc/InstructionsForUse.md
npm config set registry https://registry.npm.taobao.org
windows 系統如果報錯的話,手動安裝 Visual Studio https://visualstudio.microsoft.com/zh-hans/
需要安裝 Desktop development with C++以及node環境
也可以嘗試以下命令:
npm install --g --production windows-build-tools
遇到npm install的報錯問題
npm ERR! code 1
npm ERR! path D:\frame_test\GameSentry\node_modules\frida
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c prebuild-install || node-gyp rebuild
npm ERR! prebuild-install warn install Request timed out
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.3.0
npm ERR! gyp info using node@18.13.0 | win32 | x64
npm ERR! gyp info find Python using Python version 3.10.9 found at "D:\language\python310\python.exe"
npm ERR! gyp info find VS using VS2022 (17.4.33213.308) found at:
npm ERR! gyp info find VS "D:\Microsoft Visual Studio\2022\Community"
npm ERR! gyp info find VS run with --verbose for detailed information
npm ERR! gyp info spawn D:\language\python310\python.exe
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args 'D:\\language\\node-v18.13.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
npm ERR! gyp info spawn args 'binding.gyp',
npm ERR! gyp info spawn args '-f',
npm ERR! gyp info spawn args 'msvs',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'D:\\frame_test\\GameSentry\\node_modules\\frida\\build\\config.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'D:\\language\\node-v18.13.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
npm ERR! gyp info spawn args '-I',
npm ERR! gyp info spawn args 'C:\\Users\\90458\\AppData\\Local\\node-gyp\\Cache\\18.13.0\\include\\node\\common.gypi',npm ERR! gyp info spawn args '-Dlibrary=shared_library',
npm ERR! gyp info spawn args '-Dvisibility=default',
npm ERR! gyp info spawn args '-Dnode_root_dir=C:\\Users\\90458\\AppData\\Local\\node-gyp\\Cache\\18.13.0',
npm ERR! gyp info spawn args '-Dnode_gyp_dir=D:\\language\\node-v18.13.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp',
npm ERR! gyp info spawn args '-Dnode_lib_file=C:\\\\Users\\\\90458\\\\AppData\\\\Local\\\\node-gyp\\\\Cache\\\\18.13.0\\\\<(target_arch)\\\\node.lib',
npm ERR! gyp info spawn args '-Dmodule_root_dir=D:\\frame_test\\GameSentry\\node_modules\\frida',
npm ERR! gyp info spawn args '-Dnode_engine=v8',
npm ERR! gyp info spawn args '--depth=.',
npm ERR! gyp info spawn args '--no-parallel',
npm ERR! gyp info spawn args '--generator-output',
npm ERR! gyp info spawn args 'D:\\frame_test\\GameSentry\\node_modules\\frida\\build',
npm ERR! gyp info spawn args '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp: binding.gyp not found (cwd: D:\frame_test\GameSentry\node_modules\frida) while trying to load binding.gyp
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
npm ERR! gyp ERR! stack at ChildProcess.onCpExit (D:\language\node-v18.13.0-win-x64\node_modules\npm\node_modules\node-gyp\lib\configure.js:325:16)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Windows_NT 10.0.22621
npm ERR! gyp ERR! command "D:\\language\\node-v18.13.0-win-x64\\node.exe" "D:\\language\\node-v18.13.0-win-x64\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd D:\frame_test\GameSentry\node_modules\frida
npm ERR! gyp ERR! node -v v18.13.0
npm ERR! gyp ERR! node-gyp -v v9.3.0
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\90458\AppData\Local\npm-cache\_logs\2023-01-18T01_29_56_743Z-debug-0.log
該問題描述,編譯 frida/binding.gyp出現問題
issue說是網絡問題,但是我切換到代理,還是不行,
我嘗試更換nodejs版本,從v18.13.0換到v10.9.0,還是不行
嘗試單獨安裝frida
npm install frida -g cnpm --registry=https://registry.npm.taobao.org
再整體安裝
npm install -g cnpm --registry=https://registry.npm.taobao.org
再
npm install
然后
node index.js
成功啟動了服務
實踐
打開內存展示,發現包里有反調試之類的殼。
建議找一個未加固的app學習,或者自己調試自己的程序。
或者用mt管理器查看沒有殼,嘗試修改frida特征去試下。
注意
該框架不支持模擬器,手機需要root,建議使用未做保護的apk