-
-
[原创] electron开发、打包与逆向分析
-
发表于: 2021-12-22 15:18 11942
-
electron开发、打包与逆向分析
npm配置源
1 2 3 4 | npm config set registry https: / / registry.npm.taobao.org / / 配置后可通过下面命令来验证是否成功 npm config ls |
参考:https://www.cnblogs.com/zixuan00/p/11197532.html
electron-quick-start
参考:https://www.cnblogs.com/luzhanshi/p/10967996.html
1 2 3 4 5 6 7 8 | # Clone this repository git clone https: / / github.com / electron / electron - quick - start # Go into the repository cd electron - quick - start # Install dependencies npm install # Run the app npm start |
即使配置了国内源,在执行npm install的时候还是很容易因为网络问题中断,要多试几次。
electron加调试
参考:https://newsn.net/say/electron-devtools.html
开发dev状态下使用快捷键打开electron开发者工具
1 2 | win下的快捷键是:ctrl + shift + i mac下的快捷键是:alt + 花 + i |
通过代码打开DevTools
1 2 3 4 5 6 | mainWindow.webContents.openDevTools({mode: "detach" }) {mode: "right" } 界面右侧打开devtools {mode: "left" } 界面左侧打开devtools {mode: "bottom" } 界面底部打开devtools,没有top {mode: "detatch" } 分离状态打开devtools,不可合并 {mode: "undocked" } 分离状态打开devtools,可以合到界面 |
mainWindow.webContents.closeDevTools() 关闭DevTools
注意
这个开发者工具devtools在正式打包过的release中,也是可以打开的,只不过快捷键似乎是不生效的。如果想在release中使用开发者工具的话,需要想办法执行mainWindow.webContents.openDevTools()
electron打包
用 asar 打包 App 源代码
1 2 | npm install - g asar asar pack electron - quick - start app.asar |
打包可执行文件
1 2 3 4 5 6 7 8 9 10 | npm i electron - builder - g electron - packager electron - quick - start ElectronDemo - - platform = win32 - - arch = x64 - - icon = computer.ico - - out = . / out - - app - version = 0.0 . 1 - - overwrite - - ignore = node_modules 使用app.asar替换app源码 cd electron - quick - start rm - rf .github .gitignore node_modules cd .. / asar pack electron - quick - start app.asar 使用 app.asar 替换 ElectronDemo - win32 - x64\resources\app 双击ElectronDemo.exe可以弹出界面,正常运行 |
逆向分析
解压app.asar
1 | asar e app.asar app |
改代码
1 2 3 | vim main.js 在createWindow里放开 mainWindow.webContents.openDevTools() |
重新打包
1 2 3 4 | asar pack app app.asar 其实修改代码后,直接rm app.asar,不用重新打包,也是可以测试代码效果的。 即可以放开调试,也可以直接改代码,开心! |
其他说明
1. 问:electron-quick-start 中菜单栏的代码源自哪里,如何关闭菜单栏?
1 2 3 4 5 | 答:源自 electron - quick - start\node_modules\electron\dist\electron.exe 内置的ts代码。 在 createWindow 函数里关闭菜单 mainWindow.setMenu(null) |
2.无窗口栏、全屏、窗口透明
1 | BrowserWindow({height: 960 ,useContentSize:! 0 ,width: 1440 ,frame:! 1 ,fullscreen:! 0 ,transparent:! 0 }) |
3.python执行js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1. import execjs print (execjs. eval ( "a = new Array(1, 2, 3)" )) 运行结果: [ 1 , 2 , 3 ] 2. class JsCode(Base): def __init__( self ): self .ctx = execjs. compile ( self .readFileText( "JsCode.js" )) def encode64( self , msg): return self .ctx.call( "encode64" , msg) 3. node JsCode.js 使用 node.js 执行时,console.log 相当于 print |
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2021-12-28 22:27
被Jtian编辑
,原因:
赞赏
他的文章
看原图
赞赏
雪币:
留言: