本文记录联软 UniAccess 注入的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 导致 NSIS 安装包启动进程失效,启动进程直接结束问题。且给出 NSIS 安装包脚本的规避方法
特别感谢 lsj 定位到此问题,我只是帮助他记录问题的工具人
联软 UniAccess 是一款监控电脑设备的应用,在很多公司都会使用。遇到此问题时最佳做法是卸载,如何卸载请参阅以下博客
- 卸载联软UniAccess,删除UniAccess Agent记录 - Never_Await_Victory - 博客园
- 最新彻底删除联软uniaccessAgent_zhangxl2000的博客-CSDN博客_uniaccessagenttray.exe
- 卸载 UniAccessAgent 软件_ITPUB博客
如果无法卸载或好奇联软 UniAccess 是如何投毒的,请继续阅读本文
我的 NSIS 脚本是使用以下代码进行启动进程的
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 启动进程失效
nsExec::Exec '"${PATH_MAIN}\lindexi.exe" install'
如上面代码,将 ${PATH_MAIN}\lindexi.exe
使用引号来解决 ${PATH_MAIN}
是存在空格的 D:\Program Files (x86)\lindexi
路径导致联软 UniAccess 这个垃圾无法启动进程
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/%E8%AE%B0%E8%81%94%E8%BD%AF-UniAccess-%E5%AF%BC%E8%87%B4-NSIS-%E5%AE%89%E8%A3%85%E5%8C%85%E5%90%AF%E5%8A%A8%E8%BF%9B%E7%A8%8B%E5%A4%B1%E6%95%88.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
无盈利,不卖课,做纯粹的技术博客
以下是广告时间
推荐关注 Edi.Wang 的公众号
欢迎进入 Eleven 老师组建的 .NET 社区
以上广告全是友情推广,无盈利