Electron應(yīng)用的代碼通常在resources/
目錄下的app/
目錄敞曹,可能被打包成app.asar
文件(或者命名為core.asar
)铃绒。在沒有對(duì)app.asar
包進(jìn)行額外保護(hù)的情況下,可直接解壓app.asar
文件到app/
目錄仑鸥。
解壓縮asar文件
npm install -g asar
解壓: asar extract asar文件 解壓文件夾
壓縮: asar pack 文件夾 asar文件
Electron會(huì)優(yōu)先加載app/
目錄,而非app.asar
。所以解壓后直接修改app/
目錄下的代碼沸柔,就可以簡(jiǎn)單地添加console.log
或fs.appendFileSync
輸出些信息了。另外铲敛,當(dāng)package.json
文件(通常在resources/app/
目錄下)里的main
字段寫的是app.asar/index.js
時(shí)褐澎,就會(huì)優(yōu)先加載app.asar
文件,需改成app/index.js
伐蒋。
設(shè)置HTTP(S)代理
運(yùn)行程序時(shí)指定--proxy-server
參數(shù):xxx.exe --proxy-server=127.0.0.1:8080
(可能無效)
或
在package.json
文件的main
字段指定的入口文件添加代碼:
const {app} = require('electron')
app.commandLine.appendSwitch('proxy-server', '127.0.0.1:8080') // 相當(dāng)于 --proxy-server=127.0.0.1:8080
調(diào)試主進(jìn)程
運(yùn)行程序時(shí)指定inpect
參數(shù):xxx.exe --inspect=5858
乱凿,讓Electron在5858端口監(jiān)聽調(diào)試協(xié)議顽素,或者執(zhí)行xxx.exe --inspect-brk=5858
,讓程序在第一行代碼上暫停執(zhí)行等待調(diào)試器連接徒蟆。然后打開chrome瀏覽器訪問chrome://inspect
進(jìn)行連接胁出、調(diào)試Electron應(yīng)用。
在打開的devtools的Sources欄的Filesystem欄段审,點(diǎn)擊+
按鈕導(dǎo)入app/
目錄下的源碼全蝶,然后下斷點(diǎn)調(diào)試。如果真能下斷點(diǎn)調(diào)試寺枉,就很方便了抑淫。不過有時(shí)會(huì)因?yàn)榇a被混淆過或其它原因,導(dǎo)致斷不下來姥闪。
另一種方式:在代碼里加上debugger;
始苇,加上--inspect-brk
參數(shù)運(yùn)行程序,然后用chrome連接筐喳、調(diào)試催式,這種方式有時(shí)也是看不到源代碼,不過能單步執(zhí)行避归、打印變量荣月、看調(diào)用堆棧。
調(diào)試渲染進(jìn)程
通過DevTools來調(diào)試渲染進(jìn)程梳毙。打開DevTools的幾種方式:
看應(yīng)用的菜單欄是否已提供打開DevTools的選項(xiàng)
嘗試按快捷鍵:Windows或Linux按
Ctrl + Shift + I
哺窄,MacOS按Cmd + Opt + I
-
修改代碼文件,找到要開Devtools的
BrowserWindow
實(shí)例账锹,調(diào)用openDevTools
方法:let win = new BrowserWindow(winOptions); win.webContents.openDevTools();
查看版本號(hào)
查看應(yīng)用使用的Electron的版本號(hào):執(zhí)行process.versions.electron
查看萌业,或抓包看User-Agent
,Devtools里的數(shù)據(jù)包也有表明Electron版本號(hào)奸柬。
查看該Electron應(yīng)用的版本號(hào):在package.json
文件里查看生年,或執(zhí)行:
electron.remote.app.getVersion() // 渲染進(jìn)程里執(zhí)行
electron.app.getVersion() // 主進(jìn)程里執(zhí)行
參考
- 《Instrumenting Electron Apps for Security Testing》,翻譯版:《測(cè)試 Electron 應(yīng)用的基本指南》:介紹怎么調(diào)試鸟缕、抓包Electron應(yīng)用晶框。本文相當(dāng)于在該文章的基礎(chǔ)上做點(diǎn)補(bǔ)充