检测Electron程序是否打包了控制台模块

在逆向Electron程序时,当遇到控制台打不开,往往是因为以下几个原因:
1)程序监听了控制台的打开事件,当发现控制台打开,则立刻将其关闭;
2)程序在用BrowserWindow创建窗口时,配置了webPreferences中的devTools为false;
3)程序在打包时,去除了Electron的控制台功能模块。

如果是第一种(通常是使用的是devtools-opened事件),可以通过解绑事件或移除相关代码的方式绕过;
如果是第二种,可以尝试顺着程序入口文件寻找窗口的devTools配置项,并修改它;
如果是第三种,通过添加修改JS脚本是无能为力的。那怎么检测一个程序是不是属于该情况呢?

        检测的思路是:先抛开原程序,先将入口文件指向到一个新建文件上,新建文件里创建一个带控制台的窗口,然后通过观察程序运行后是否可以看到控制台来做判断。
        1)解压app.asar后,在app文件夹中新建一个js文件并写入以下代码:

const { app, BrowserWindow } = require("electron");
//创建窗口
function createWindow () {
  let mainWindow = new BrowserWindow({
    title: "测试",
    width: 670,
    height: 420,
    offscreen: true,
    show: true,
    titleBarStyle: "customButtonsOnHover",
    backgroundColor: "#fff",
    acceptFirstMouse: true, //是否允许单击页面来激活窗口
    allowRunningInsecureContent: true,//允许一个 https 页面运行 http url 里的资源
    webPreferences: {
      devTools: true, //是否允许打开调试模式
      webSecurity: false,//禁用安全策略
      allowDisplayingInsecureContent: true,//允许一个使用 https的界面来展示由 http URLs 传过来的资源
      allowRunningInsecureContent: true, //允许一个 https 页面运行 http url 里的资源
      nodeIntegration: true//5.x以上版本,默认无法在渲染进程引入node模块,需要这里设置为true
    }
  });
  mainWindow.loadURL('about:blank');
  // 完成第一次绘制后显示
  mainWindow.on('ready-to-show', () => {
    mainWindow.webContents.openDevTools();
  })
  // 窗口关闭
  mainWindow.on('closed', function () {
      mainWindow = null
  });
}

// 主进程准备好以后创建窗口
app.on('ready', () => {
    createWindow();
});


        2)打开app文件夹中的package.json文件,将入口(main)指向新建的js文件;
        3)启动程序,看打开的窗口是否有控制台,若有,则说明程序内打包了控制台模块,若无,则说明没有打包。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半吊子伯爵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值