红魔多屏协同自动创建 E:\code_decodeew\pre_music_cut 文件夹 bug

admin 2026-06-23 05:28:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档分析了一个由中兴努比亚红魔手机的多屏协同客户端引发的意外文件夹创建问题。作者在电脑上发现了名为e:\codedecode\new\premusic_cut的未知文件夹,经调查确认此行为源于该软件。通过反编译其核心dll文件,发现开发者将一段用于测试AES加密功能的代码错误地集成到了正式版本中,并绑定在了设置按钮的点击事件上。当用户点击该按钮时,程序会尝试读取特定路径下的文件并进行加密处理,从而创建上述文件夹。文章详细描述了从发现问题、排查怀疑对象到最终通过日志和代码分析锁定原因的全过程。 综合评分: 85 文章分类: 恶意软件,代码审计,安全开发,应用安全,逆向分析


cover_image

红魔多屏协同自动创建 E:\code_decodeew\pre_music_cut 文件夹 bug

原创

吾爱pojie 吾爱pojie

吾爱破解论坛

2026年6月22日 11:29 北京

在小说阅读器读本章

去阅读

作者坛账号:Ganlv

中兴 Nubia 红魔手机 RedMagic 多屏协同 MultiScreen Windows 客户端创建 E:\code_decode\new\pre_music_cut 文件夹 bug

最近在 E 盘发现一个不认识的文件夹 E:\code_decode\new\pre_music_cut,到网上也查不到任何关于这个的信息,GitHub 也搜不到这个代码,AI 也搜不到这个信息,我还以为我的电脑中病毒了。

这篇文章的主要目的是让搜索引擎能索引到这个信息,帮助其他人解决这个问题。

结论简而言之就是:草台班子把测试代码发布到线上了,在用户电脑里面拉屎。

样本

红魔多屏协同官方网站 https://www.redmagic.com/active/ms-collaboration.html

客户端下载链接 https://ausp-dl.server.nubia.cn/pczips/1/317/MSC_V3.1.7_x86_251230_75330.exe

 复制代码 隐藏代码
> sha256sum MultiScreen.dll
619707133386ab803bd5316cc116231be039fdfb55d215372f8f4b1556efa26a *MultiScreen.dll

反编译代码分析

以下为 MultiScreen.dll 使用 dotPeek 反编译的 C# 代码

MultiScreen.nubia.mainwindow.RedMagicStudio 类

 复制代码 隐藏代码
namespaceMultiScreen.nubia.mainwindow;

publicclassRedMagicStudio {
privateint num = 5;

privatevoidCbx_Setting_Checked(object sender, RoutedEventArgs e) => this.codestringFile();

privatevoidcodestringFile()
  {
    string str1 = "E:\\code_decode\\original\\pre_music_cut";
    string str2 = "E:\\code_decode\\new\\pre_music_cut";
    try
    {
      if (!Directory.Exists(str2))
        Directory.CreateDirectory(str2);
      string[] files = Directory.GetFiles(str1);
      string[] array;
      if (this.num > 60)
      {
        string searchFileName = "music_pre_output";
&nbsp; &nbsp; &nbsp; &nbsp; array = ((IEnumerable<string>) files).Where<string>((Func<string,&nbsp;bool>) (file => file.Contains(searchFileName))).ToArray<string>();
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;this.num =&nbsp;5;
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp;&nbsp;else
&nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;string&nbsp;searchString =&nbsp;$"_{this.num.ToString()}s_";
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;if&nbsp;(this.num ==&nbsp;15)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;this.num =&nbsp;30;
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;elseif&nbsp;(this.num ==&nbsp;30)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;this.num =&nbsp;60;
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;this.num +=&nbsp;5;
&nbsp; &nbsp; &nbsp; &nbsp; array = ((IEnumerable<string>) files).Where<string>((Func<string,&nbsp;bool>) (file => file.Contains(searchString))).ToArray<string>();
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp;&nbsp;foreach&nbsp;(string&nbsp;str3&nbsp;in&nbsp;array)
&nbsp; &nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;string&nbsp;aes = Utils.encodeNormalToAES(File.ReadAllText(str3));
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;string&nbsp;fileName = System.IO.Path.GetFileName(str3);
&nbsp; &nbsp; &nbsp; &nbsp; File.WriteAllText(System.IO.Path.Combine(str2, fileName), aes);
&nbsp; &nbsp; &nbsp; &nbsp; GC.Collect();
&nbsp; &nbsp; &nbsp; &nbsp; GC.WaitForPendingFinalizers();
&nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; }
&nbsp; &nbsp;&nbsp;catch&nbsp;(Exception ex)
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp; LoggerUtils.Debug("clickBtn1设置cbx ex.Message = "&nbsp;+ ex.Message);
&nbsp; &nbsp; }
&nbsp; &nbsp;&nbsp;finally
&nbsp; &nbsp; {
&nbsp; &nbsp; &nbsp;&nbsp;this.changeTabStyle(2);
&nbsp; &nbsp; &nbsp;&nbsp;this.MainFrame.Navigate((object)&nbsp;this.mPageSetting);
&nbsp; &nbsp; }
&nbsp; }
}

其实理论上,这个点击设置按钮的逻辑应该是很简单的

&nbsp;复制代码&nbsp;隐藏代码
&nbsp;&nbsp;privatevoidCbx_Setting_Checked(object&nbsp;sender, RoutedEventArgs e)
&nbsp; {
&nbsp; &nbsp; &nbsp;&nbsp;this.changeTabStyle(2);
&nbsp; &nbsp; &nbsp;&nbsp;this.MainFrame.Navigate((object)&nbsp;this.mPageSetting);
&nbsp; }

我尝试解释一下代码逻辑,但是他的那一大堆逻辑我真的不懂他想做什么。

每次点击设置按钮,列举 E:\code_decode\original\pre_music_cut 中的文件,筛选出包含 _5s__10s__15s__30s__60s_music_pre_output 的文件列表它们 AES 加密后然后放到 E:\code_decode\new\pre_music_cut 目录下。

反编译其他的文件可以看到 Utils.encodeNormalToAES 方法用于将文件内容进行 AES-128-CBC 加密,key = "bbc80188aa2aa8f3" (16字节,128位),iv = "J70glAs63e518086" (16字节,128位),使用 PKCS7 填充模式。加密后的字节再转为空格间隔的十六进制字符串返回,例如 "ab cd ef 01 23 ".

我猜是这样的。这个按钮是界面上最明显的按钮,无论他想测试什么代码,他就直接在把代码写在这个按钮里的事件函数里,他这个函数实际上充当了测试代码的触发来源。

比如上面这段代码其实就是他在测试 AES 加密功能。然后他测完就直接提交了,忘记还原就直接发布了。

探索过程

其实这个过程更有意思,这个过程很值得记录下来。因为只要直到是这个软件的 bug 之后,剩下就是验证真实性了。

  1. 我在我的电脑上发现了 E:\code_decode\new\pre_music_cut 这个文件夹,完全是空的文件夹,创建时间2026年6月14日,03:44:58

  2. 在搜索引擎中搜索 pre_music_cut,发现没有任何信息。搜索 code_decode,全都是关于编解码的页面。

  3. 在 GitHub 上搜索 pre_music_cut,发现没有任何信息。搜索 code_decode,搜出来的全都是各种 encode_decode 的代码。

  4. 问 AI 这个文件夹的名字,基本上没有任何有效信息,AI 提示了 pydub, librosa, ffmpeg。我最近确实用过 librosa,但是那是公司的项目,我的个人电脑和公司电脑隔离的是很开的,我的电脑上理论上不会引入我不知道的东西。我最近也确实用过 OBS 录屏软件,可能和 ffmpeg 有关,但是也不应该出现这么奇怪的名字。

  5. 然后我就开始怀疑电脑中病毒了,毕竟这个文件夹的名字实在是太奇怪了,网上也没有任何信息。

  6. 接下来信息只剩这个时间了,今天是 2026年6月20日,2026年6月14日,03:44:58 是 1 周前的周日凌晨 3 点多。我要看看那个时间安装了什么软件。

  7. 打开 Windows 设置,应用,安装的应用,按安装日期排序,发现 2026年6月14日 安装了 红魔多屏协同 软件。

    | 应用 | 版本号 | 公司 | 安装日期 | | — | — | — | — | | Multi-Screen Collaboration | 3.1.7 | ZTE | 2026/6/14 | | Microsoft Windows Desktop Runtime-6.0.26(x86) | 6.0.26.33205 | Microsoft Corporation | 2026/6/14 |

    Microsoft Windows Desktop Runtime 是 Multi-Screen Collaboration 的依赖,它自动安装的。

    这时候我其实已经开始怀疑是它了,我不太担心是我自己引入的病毒了。我特别害怕是供应链攻击。比如 ZTE 的开发人员比较草台班子,他直接使用 AI 开发了 MultiScreen 这个软件,并且直接接受 AI 的建议,引入第三方的库,没有验证第三方库是否存在风险,这相当于直接把后门开在了用户电脑上,而开发人员他自己并没有恶意。

  8. 我继续收集信息,打开 Windows Event Viewer (事件查看器),查看 2026年6月14日 03:44:58 附近的事件

    Windows 日志,系统

    | 级别 | 日期和时间 | 来源 | 事件ID | 任务类别 | 事件信息 | | — | — | — | — | — | — | | INFO | 2026/6/14 03:45:11 | Configuration-Change-Monitor | 1 | 无 | Command line: netsh wlan show interfaces Parent Process 1: C:\Windows\SysWOW64\netsh.exe Parent Process 2: C:\Windows\System32\cmd.exe Parent Process 3: C:\Program Files\PICO Connect\PICO Connect.exe | | INFO | 2026/6/14 03:44:41 | Configuration-Change-Monitor | 1 | 无 | Command line: netsh wlan show interfaces Parent Process 1: C:\Windows\SysWOW64\netsh.exe Parent Process 2: C:\Windows\System32\cmd.exe Parent Process 3: C:\Program Files\PICO Connect\PICO Connect.exe | | INFO | 2026/6/14 03:44:11 | UserModePowerService | 12 | (10) | 进程 C:\Windows\System32\DriverStore\FileRepository\u0412790.inf_amd64_b0a9eb989e37c81c\B413137\atieclxx.exe (进程 ID: 4732)将策略方案从 {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c} 重置为 {8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c} | | INFO | 2026/6/14 03:44:11 | Configuration-Change-Monitor | 1 | 无 | Command line: netsh wlan show interfaces Parent Process 1: C:\Windows\SysWOW64\netsh.exe Parent Process 2: C:\Windows\System32\cmd.exe Parent Process 3: C:\Program Files\PICO Connect\PICO Connect.exe | | INFO | 2026/6/14 03:44:09 | Service Control Manager | 7045 | 无 | 服务已安装在系统中。ServiceName: Dokan2 ImagePath: %SystemRoot%\system32\drivers\dokan2.sys ServiceType: 内核模式驱动程序 StartType: 自动启动 AccountName: |

    PICO Connect.exe 是我电脑上安装的一个软件,和这个事件没有关系。

    atieclxx.exe 是 AMD 显卡驱动的一个组件,也和这个事件没有关系。

    dokan2.sys 可以在 C:\Program Files (x86)\Multi-Screen-Collaboration\driver\x86\dokan2.sys 这里找到。经过搜索确认,这是一个用户空间的文件系统驱动,红魔多屏协同提供了将手机的文件系统挂载到 Windows 的一个磁盘的功能。

  9. 继续收集信息。打开以下路径,按时间排序,查看 2026年6月14日 03:44:58 附近的文件创建和修改事件

    我发现了

    不过我当时错过了最关键的一个文件,C:\ProgramData\MSS\logs\20260620-mainui.log,当时我忘记了 C:\ProgramData 这个文件夹,这个文件是红魔多屏协同的日志文件,里面有一个关键的日志。

   &nbsp;复制代码&nbsp;隐藏代码
   2026-06-2005:55:04,973&nbsp;DEBUG MultiScreen [8460][1] [RedMagicStudio] clickBtn1设置cbx ex.Message = Could&nbsp;notfind&nbsp;a part of the&nbsp;path'E:\code_decode\original\pre_music_cut'.
  • C:\Program Files (x86)\Multi-Screen-Collaboration 创建时间 2026年6月14日,03:44:09

  • C:\Users\Ganlv\AppData\Local\ZTE\MultiScreen_Url_ikrqjidxeldyhwtoht22accbozggvsmm\3.1.7.0 创建时间 2026年6月14日,03:44:13

  • C:\Windows

  • C:\Windows\System32

  • C:\Windows\System32\drivers

  • C:\Program Files

  • C:\Program Files (x86)

  • C:\ProgramData

  • C:\Users\Ganlv

  • C:\Users\Ganlv\AppData\Local

  • C:\Users\Ganlv\AppData\Local\Temp

  • C:\Users\Ganlv\AppData\LocalLow

  • C:\Users\Ganlv\AppData\Roaming

  1. 因为 E:\code_decode\original\pre_music_cut 里面是空的,我怀疑他应该是有文件,但是被删掉了。我打算使用 DiskGenius 工具来在 E 盘上恢复文件。不过很遗憾,DiskGenius 没有扫描到任何相关的文件。

  2. 经过上面各种信息,其实这段时间附近,除了多屏协同,没有任何其他可疑的信息。所以他的置信度很高。于是我准备从猜测进入分析阶段。

    使用 rg 直接搜索字符串,使用 --binary 参数搜索二进制文件。

    &nbsp;复制代码&nbsp;隐藏代码
    cd&nbsp;C:\Program Files (x86)\Multi-Screen-Collaboration
    rg --binary code_decode
    rg --binary pre_music_cut
    

    很遗憾,什么都没有。我又开始担心是病毒了,因为病毒可能会使用加密的方式隐藏字符串。

  3. 我掏出了最熟悉的 Cheat Engine 工具,使用它的内存搜索功能,因为内存中很可能有解密之后的字符串。搜索字符串 pre_music_cut,果然找到了。

&nbsp;复制代码&nbsp;隐藏代码
似乎是一条日志,然而我却找不到任何其他的字符串信息了。

这时我才发现,每点一次那个设置按钮,这个内存区域的内容就会被改写一次,说明这个字符串日志就是那个按钮触发的。

我想开始动态调试,“找出是什么改写了这个地址”,结果发现,无法附加调试器。

(说明:Cheat Engine 在仅进行内存搜索时不需要具有调试权限,一些软件可能无法调试,但是却可以搜索内存)
  1. 这时我还没有意识到他是 C# 写的,尽管我明确知道他安装了 Microsoft Windows Desktop Runtime 这个运行环境。我当时脑子可能溜号了。

    于是我又使用了 x64dbg (这个软件是 32 位的,实际上使用的是 x32dbg)。很可惜,这个软件禁止附加。我想了一些办法,发现还是不能附加。

    于是,最终我就试试,直接由 x64dbg 启动这个程序,程序真的能运行。挺神奇的。

    我用 Cheat Engine 搜索字符串(注意:x64dbg 调试中并不影响 Cheat Engine 搜索,这是经常用的方法),然后我在 x64dbg 里设置内存断点。

    触发断点之后,翻了一下函数调用栈信,完全看不懂啊。我意识到这是 JIT 编译之后的代码。算了放弃。

    这时候我发现栈的局部变量中出现了 C:\ProgramData\MSS\logs\20260620-mainui.log 这个日志文件的路径,我打开看了一下,发现了上面那条日志。心想我早干去嘛了…绕这么大一圈。

  2. 于是我决定使用 dotPeek 反编译 MultiScreen.dll,发现了上面那段代码。

至此,全部探索路径结束。

解决方法

问题找到了,那么如何解决呢?

经过与 AI 的一番交流,我找到了下面的方法。

使用 dnSpyEx 打开 MultiScreen.dll,找到 MultiScreen.nubia.mainwindow.RedMagicStudio 类的 codestringFile 方法,

把 Directory.CreateDirectory 使用 nop 指令替换。

然后点击 文件 > 保存模块 即可。

这个 dll 没有签名,所以直接替换即可。

但是,我使用 Hex 编辑器打开修改前后的 MultiScreen.dll,发现修改前后文件内容差异非常大,按理来说只是改了几个 nop 指令,不应该有这么大的差异。还是手动 Hex 编辑吧。

我与 AI 说的一番交流,我找到了下面的方法。

复制文件偏移得到 0x00015269

C# 的 CIL 指令列表

| Opcode | Instruction | | — | — | | 0x00 | nop | | 0x06 | ldloc.0 | | 0x07 | ldloc.1 | | 0x26 | pop | | 0x28 | call |

从 0x00015269 开始的 5 个字节是 Directory.CreateDirectory 的调用指令,修改成 5 个 nop 指令 0x00

保存之后,替换 MultiScreen.dll,完美运行,点击设置按钮不会再创建 E:\code_decode\new\pre_music_cut 文件夹了。

思考

现在有了 AI 辅助让开发一个软件变得越来越容易了,但是也让软件质量下降了。你在你们的服务器上用 AI 拉屎对我没啥影响。在浏览器网页中至少还有跨域保护。但是,不要在用户的电脑上拉屎啊。客户端软件、还有一些浏览器插件,必须要注意代码质量啊。Windows 的没有 Android 和 iOS 那种隔离机制,在 AI 时代其实可能会成为一个很大的安全隐患。

未来,AI 不一定会让岗位变得更多,但是随着 AI 生成的软件越来越多,各种各样的细微的问题会变得更多。

其他思考

我后来又想了一下,开发者有没有可能是想测试 dokan2.sys 这个虚拟文件系统。比如将手机的文件系统映射到 E 盘了,然后正好在 E:\code_decode\original\pre_music_cut 上面进行测试。

不过,看这个文件系统,必须是 F:\路径浏览\Android\data 这样的格式,似乎不可能是 E:\code_decode 这种格式。我找不到他们这样做的理由了。

为什么搜索不到字符串

因为他是 UTF-16LE 编码的字符串,所以搜索 pre_music_cut 是搜不到的。需要搜索 p\0r\0e\0_\0m\0u\0s\0i\0c\0_\0c\0u\0t\0 才能搜到。

&nbsp;复制代码&nbsp;隐藏代码
> rg --binary --text --files-with-matches 'p\x00r\x00e\x00_\x00m\x00u\x00s\x00i\x00c\x00_\x00c\x00u\x00t\x00'
MultiScreen.dll

-官方论坛

www.52pojie.cn

👆👆👆

公众号设置“星标”,不会错过新的消息通知

开放注册、精华文章和周边活动等公告


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:吾爱破解论坛 吾爱pojie 吾爱pojie《红魔多屏协同自动创建 E:\codedecodeew\premusic_cut 文件夹 bug》

评论:0   参与:  0