在逆向Electron程序时,当遇到控制台打不开,往往是因为以下几个原因:
1)程序监听了控制台的打开事件,当发现控制台打开,则立刻将其关闭;
2)程序在用BrowserWindow创建窗口时,配置了webPreferences中的devTools为false;
3)程序在打包时,去除了Electron的控制台功能模块。
如果是第一种(通常是使用的是devtools-opened事件),可以通过解绑事件或移除相关代码的方式绕过;
如果是第二种,可以尝试顺着程序入口文件寻找窗口的devTools配置项,并修改它;
如果是第三种,通过添加修改JS脚本是无能为力的。那怎么检测一个程序是不是属于该情况呢?
检测的思路是:先抛开原程序,先将入口文件指向到一个新建文件上,新建文件里创建一个带控制台的窗口,然后通过观察程序运行后是否可以看到控制台来做判断。
1)解压app.asar后,在app文件夹中新建一个js文件并写入以下代码:
const{app,BrowserWindow}=require("electron");
//创建窗口
functioncreateWindow(){
letmainWindow=newBrowserWindow({
title:"测试",
width:,
height:,
offscreen:true,
show:true,
titleBarStyle:"customButtonsOnHover",
backgroundColor:"#fff",
acceptFirstMouse:true,//是否允许单击页面来激活窗口
allowRunningInsecureContent:true,//允许一个