(逆向) 让深信服 EasyConnect 不自动弹出浏览器框

Posted by

on

没有技术含量的东西。因为我校的 EasyConnect(一下简称 “EC” ) 在连接后,总是会弹出一个资源列表。因为我的 EC 部署在一个虚拟机上,只分配了 1GB 的内存,因此每次断线自动重连后,会不断打开浏览器 (Google Chrome),最终造成内存不足,系统死机。

PS:这个资源列表虽然 EC 有设置可以不自动打开,但不管怎么设置,它就是要打开,否则就没有此文了。

解决方案

我想到了两种方案。第一种是怒怼客户端。第二种是 Hook 关键 API : CreateProcess, ShellExecute 等。因为 Hook 方案没有成功(以前留下来的可用的代码失效了),遂采取第二种方案。

1.  IDA 载入 SangforCSClient.exe 进行分析

2. 推测打开浏览器无非就是通过 CreateProcess, ShellExecute 等 Win32 API 来进行,于是重点关注对这几个 API 的 Xref,最终找到并确定 0x0041A311 这个基址。

3. 在此处,0041A311 的 CreateProcess 就是创建浏览器进程的调用,因此只要将这个调用抹杀掉,让它直接返回 true。下面是 IDA 处该指令附近的伪代码:

4. OD 载入,定位基址,因为 Win32 的调用方式是 stdcall,右向左压栈,被调用方负责堆栈平衡。因为我们灭杀这个 API 调用,会造成压进去的参数没有弹出栈。所以我们必须把上面压栈部分一起消灭。

5. 因为 CreateProcess 被我们消灭掉后,PROCESS_INFORMATION 结构体中的两个句柄是空的,所以在我们强制其成功后,不需要再 CloseHandle。于是我痛快地消灭它们。

6. 最终实现的效果:


10 responses to “(逆向) 让深信服 EasyConnect 不自动弹出浏览器框”

  1. 请问能通过注册表修改,禁止EasyConnect自动创建桌面快捷方式吗?

    1. 应该也需要逆向改主程序。改注册表不清楚。我们这边EC不会自动创建快捷方式

  2. taskkill+计划任务是不是更简单一些?

    1. 愚以为,定期杀浏览器始终不是一种优雅的行为。

      1. 嗯嗯,我也是虚拟机里就跑一个easyconnect和一个v2ray提供代理服务,别的机器里clash做透明路由。我们这儿的easyconnect会推更新,我就懒得去折腾这玩意儿了,而且深信服这堆说不清道不明的东西弄不好一改还出点啥事…

Leave a Reply

Your email address will not be published. Required fields are marked *