首页
社区
课程
招聘
[原创]某代理程序的逆向分析
发表于: 2026-10-10 19:23 746

[原创]某代理程序的逆向分析

2026-10-10 19:23
746

起因是我原来用了一款代理软件,本来可以导入配置到 clash 中还算比较方便。结果因为一些总所周知的原因,他们选择了使用了不知道什么协议,并放弃了 clash 导入配置的选项,只能使用他们提供的第三方桌面程序启动。但是他们写的第三方桌面程序只能说是灾难(Electron),不仅启动慢、控件响应问题也很严重,对窗口的支持也不好。终于我忍不了了,选择分析一下他们的流程。

electron 是前后端分离的一个程序,由 Chromium 和 Node.js 组成,采用多进程的方式运行。大致的结构如下:

图片描述

主进程大致可以看作后端,渲染大致可以看作后端。两者独立,通过 ipc 进行通信。

这里的核心是通过 ipcMain 和 ipcRender 按照 channel 收发。

想要上手分析程序,首先大概得先知道它的框架是什么吧,于是打开 die 看看是什么情况。可以看出来很明显是 electron 程序。

图片描述

可是对于分析 electron 程序我并没有什么经验,于是借助 ai 和浏览器大致了解一下 electron 打包后的结构。

根据这里的信息,我们可以知道最重要的似乎就是 resoureces 中的这个 app.asar 了,根据我搜索到的信息,electron 本质上是将 js 代码打包在我的环境中用 node 启动 webview 界面运行。

那么接下来应该做什么呢?根据我以往分析程序的经验,想要分析控件最好是附加调试一个进程,通过动态的方式定位逻辑,于是我打开了 x64dbg 尝试分析。

图片描述

不过马上遇到了一个棘手的问题,有很多同名的进程,我应该选择附加哪一个呢?虽然大致根据窗口名称能判断出是最后一个,但是抱着问问看的想法询问了一下 ai。

图片描述

通过无 --type 参数来看确定是最后一个进程无疑了。于是我选择附加进程调试,但是马上遇到了第二个问题:以往我们定位逻辑都是通过 windows api 按钮控件定位代码,那 electron 这种 webview 程序应该如何定位。事情到这里似乎有点卡住了,想要分析功能,我们就必须找到控件对应的代码,这个和安卓逆向的思路有点类似。

那有什么方法能获取控件对应的逻辑呢?我们想到了这个前端是否能够开启 devtools 帮助我们分析,于是在尝试 F12 和 Ctrl+Shift+I 没用后,搜索到了似乎可以通过附加参数 --remote-debugging-port=<端口号> 启动的方式启动 Devtools。

electron 默认启动调试后会通过这几个地址显示信息:

图片描述

给了我们 devtoolsFrontendUrl 的地址,根据这个地址能在浏览器中打开 devtools 界面。到了这里,我们终于能有方便的工具来帮助我们分析了。

接下来就需要找到按钮对应的控件函数了,在侧边的 event listener breakpoint 中找到 Mouse -> click 打下断点。

图片描述

在打下断点后,点击我们要分析的程序按钮,追踪它的流程。

图片描述

询问 ai 得知这里是 vue 包装的一层 handler 函数,所以我们单步跟踪进入。

图片描述

在这里找到了 invoker,查看 invoker.fns 就能找到我们想要的东西了。点击跟到对应的代码部分。


传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!

最后于 2026-10-10 21:33 被zhugeshi编辑 ,原因:
收藏
点赞 ・15
打赏
分享
最新回复 (4)
雪    币: 158
活跃值: (5926)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2 楼
感谢分享 
2026-10-12 13:56
0
雪    币: 5246
活跃值: (4194)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3 楼
谢谢分析
2026-10-19 21:42
0
雪    币: 5646
活跃值: (4080)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SAO
4 楼
谢谢分析
2026-10-19 22:26
0
雪    币: 14
活跃值: (925)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5 楼
2342342
2026-10-23 17:47
0
游客
登录 | 注册 方可回帖
返回