前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记联软 UniAccess 导致 NSIS 安装包启动进程失效

记联软 UniAccess 导致 NSIS 安装包启动进程失效

作者头像
林德熙
发布2023-04-07 09:01:44
2.3K0
发布2023-04-07 09:01:44
举报
文章被收录于专栏:林德熙的博客

本文记录联软 UniAccess 注入的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 导致 NSIS 安装包启动进程失效,启动进程直接结束问题。且给出 NSIS 安装包脚本的规避方法

特别感谢 lsj 定位到此问题,我只是帮助他记录问题的工具人

联软 UniAccess 是一款监控电脑设备的应用,在很多公司都会使用。遇到此问题时最佳做法是卸载,如何卸载请参阅以下博客

如果无法卸载或好奇联软 UniAccess 是如何投毒的,请继续阅读本文

我的 NSIS 脚本是使用以下代码进行启动进程的

代码语言:javascript
复制
nsExec::Exec "${PATH_MAIN}\lindexi.exe install"

这里的 ${PATH_MAIN} 在运行的时候大概是 D:\Program Files (x86)\lindexi 文件夹路径

预期以上安装包代码将会启动 lindexi.exe 应用,然而通过 ProcessMonitor 却发现启动的路径似乎不对

如上图,可以看到先在安装包里创建出了 D:\Program Files (x86)\lindexi\lindexi.exe 文件,接下来预期的就是安装包将启动此进程。然而通过 ProcessMonitor 看到是 QueryOpen 了 D:\Program 文件

右击看是调用 D:\Program 文件的堆栈,如下图

从图片可以看到,从 nsExec.dll 里面居然进入了 MozartBreathCore.dll 里面,证明就是被联软 UniAccess 的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 注入。然而联软 UniAccess 比较垃圾,没有好好处理好路径空格文件,于是就访问成了 D:\Program 文件

而且联软 UniAccess 更垃圾的是发现文件不存在就啥都不干,让安装包继续使用,安装包以为完成了进程启动,记录的日志也都是完成启动进程

其实以上的 NSIS 脚本还是有一刀的,那就是传入的参数是没有给带空格的路径加上引号。不过在 Win32 的 CreateProcess 方法可以很好处理此问题,会自动识别路径空格。因此安装包在没有联软 UniAccess 情况下可以很好进行安装

既然知道了联软 UniAccess 投毒了,而且是路径空格问题,就可以额外照顾一下联软 UniAccess 这个垃圾。修改 NSIS 脚本,给路径带上引号,解决路径空格导致联软 UniAccess 启动进程失效

代码语言:javascript
复制
nsExec::Exec '"${PATH_MAIN}\lindexi.exe" install'

如上面代码,将 {PATH_MAIN}\lindexi.exe 使用引号来解决 {PATH_MAIN} 是存在空格的 D:\Program Files (x86)\lindexi 路径导致联软 UniAccess 这个垃圾无法启动进程

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档