紅芯對chromium,矚目對zoom。扒扒矚目客戶端。

0x00 前提

一直以來,人們普遍懷疑矚目等“國產“雲會議系統在界面,功能上有剽竊國外的Zoom.us的嫌疑,但無證據。本文從矚目的Ubuntu客戶端入手,詳細證明了矚目的Zoom血統。

0x01 原因

疫情之下,學校要進行雲教學,要安裝矚目客戶端。打開官網,興奮地發現矚目居然有Linux版本,即所謂自主知識產權的Ubuntu Kylin 版本。於是在嘗試安裝的同時探索了矚目客戶端。

0x02 環境

我使用的是 Manjaro Linux 19.0, Kernel 5.5, XFCE 4.14 惠普ZBook 15 (intel 集成顯卡). 官網安裝包zhumu_2.5.360133.0226_amd64.deb

0x03 安裝

Manjaro 是基於ArchLinux的,所以先把Debian系的DEB安裝包debtap一下。

debtap zhumu_2.5.360133.0226_amd64.deb

得到了ArchLinux的.tar.xz 安裝包,然後直接pacman。

sudo pacman -U zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz

然而,這個包依賴於這個東東。

~/Documents/packages/TXZ » sudo pacman -U zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz                                      felix@felix-zbook
[sudo] password for felix: 
loading packages...
resolving dependencies...
:: There are 6 providers available for opencl-nvidia:
:: Repository extra
   1) opencl-nvidia-340xx  2) opencl-nvidia-390xx  3) opencl-nvidia-418xx  4) opencl-nvidia-430xx  5) opencl-nvidia-435xx
   6) opencl-nvidia-440xx

Enter a number (default=1): 

胡鬧!我英特爾的顯卡要裝Nvidia的OpenCL和utils!
我當時就真的瞎選了一個裝上了,還裝了Nvidia的Cuda,結果,所有的Qt程序全打不開了!。於是趕緊卸載了這些Nvidia,一切恢復正常。

0x04 探索

無奈之下,試試在不安裝Nvidia驅動的情況下手動安裝矚目吧……
先解開tar包。

tar xvf zhumu-2.5.360133.0226-1-x86_64.pkg.tar.xz  

裏面opt,usr 兩個文件夾,先進usr看看。

~/Documents/packages/TXZ » tree ./usr                                                                                    felix@felix-zbook
./usr
├── bin
│   └── zhumu -> /opt/zhumu/ZhumuLauncher
└── share
    ├── applications
    │   └── Zhumu.desktop
    ├── doc
    │   └── zhumu
    │       └── changelog.gz
    ├── mime
    │   └── packages
    │       └── zhumu.xml
    └── pixmaps
        ├── application-x-zhumu.png
        └── Zhumu.png

8 directories, 6 files

這個usr 小巧得tree 都這麼簡單。./usr/bin 裏的矚目客戶端是一個指向/opt/zhumu/ZhumuLauncher的符號鏈接。剩下的是一些桌面文件,changelog,mime types, 圖標之類。
那就去看看/opt/。ls一下發現居然有這麼多Qt的文件。我們GTK果然更簡單純潔(Qt大佬勿噴)。ls如下:

audio                  libQt5Gui.so.5.9.6           libQt5Svg.so                     libquazip.so.1
config-dump.sh         libQt5Network.so             libQt5Svg.so.5                   libquazip.so.1.0.0
dingdong1.pcm          libQt5Network.so.5           libQt5Svg.so.5.9                 libturbojpeg.so
dingdong.pcm           libQt5Network.so.5.9         libQt5Svg.so.5.9.6               libturbojpeg.so.0.1.0
Droplet.pcm            libQt5Network.so.5.9.6       libQt5WebChannel.so              platforminputcontexts
egldeviceintegrations  libQt5OpenGL.so              libQt5WebChannel.so.5            platforms
generic                libQt5OpenGL.so.5            libQt5WebChannel.so.5.9          platformthemes
getmem.sh              libQt5OpenGL.so.5.9          libQt5WebChannel.so.5.9.6        Qt
iconengines            libQt5OpenGL.so.5.9.6        libQt5WebEngineCore.so           qt.conf
icudtl.dat             libQt5Positioning.so         libQt5WebEngineCore.so.5         qtdiag
imageformats           libQt5Positioning.so.5       libQt5WebEngineCore.so.5.9       QtGraphicalEffects
leave.pcm              libQt5Positioning.so.5.9     libQt5WebEngineCore.so.5.9.6     QtQml
libfaac1.so            libQt5Positioning.so.5.9.6   libQt5WebEngine.so               QtQuick
libicudata.so          libQt5PrintSupport.so        libQt5WebEngine.so.5             QtQuick.2
libicudata.so.56       libQt5PrintSupport.so.5      libQt5WebEngine.so.5.9           QtWebChannel
libicudata.so.56.1     libQt5PrintSupport.so.5.9    libQt5WebEngine.so.5.9.6         QtWebEngine
libicui18n.so          libQt5PrintSupport.so.5.9.6  libQt5WebEngineWidgets.so        qtwebengine_devtools_resources.pak
libicui18n.so.56       libQt5Qml.so                 libQt5WebEngineWidgets.so.5      QtWebEngineProcess
libicui18n.so.56.1     libQt5Qml.so.5               libQt5WebEngineWidgets.so.5.9    qtwebengine_resources_100p.pak
libicuuc.so            libQt5Qml.so.5.9             libQt5WebEngineWidgets.so.5.9.6  qtwebengine_resources_200p.pak
libicuuc.so.56         libQt5Qml.so.5.9.6           libQt5Widgets.so                 qtwebengine_resources.pak
libicuuc.so.56.1       libQt5Quick.so               libQt5Widgets.so.5               ring.pcm
libQt5Core.so          libQt5Quick.so.5             libQt5Widgets.so.5.9             timezones
libQt5Core.so.5        libQt5Quick.so.5.9           libQt5Widgets.so.5.9.6           translations
libQt5Core.so.5.9      libQt5Quick.so.5.9.6         libQt5X11Extras.so               version.txt
libQt5Core.so.5.9.6    libQt5QuickWidgets.so        libQt5X11Extras.so.5             xcbglintegrations
libQt5DBus.so          libQt5QuickWidgets.so.5      libQt5X11Extras.so.5.9           zcacert.pem
libQt5DBus.so.5        libQt5QuickWidgets.so.5.9    libQt5X11Extras.so.5.9.6         zhumu
libQt5DBus.so.5.9      libQt5QuickWidgets.so.5.9.6  libQt5XcbQpa.so                  ZhumuLauncher
libQt5DBus.so.5.9.6    libQt5Script.so              libQt5XcbQpa.so.5                zhumulinux
libQt5Gui.so           libQt5Script.so.5            libQt5XcbQpa.so.5.9              zhumu.sh
libQt5Gui.so.5         libQt5Script.so.5.9          libQt5XcbQpa.so.5.9.6            zopen
libQt5Gui.so.5.9       libQt5Script.so.5.9.6        libquazip.so                     ZXMPPROOT.cer

有意思的文件有這幾個:

  • zhumu: 應該是核心模塊
  • ZhumuLauncher: 啓動器
  • zhumulinux: 是一個bash腳本,跟日誌有關
  • zhumu.sh: 調試器,自帶echo說明:

This is debug mode of zhumu client. Once crash, zhumu will generate core dump under this mode.
(這是矚目客戶端的調試模式。如果客戶端崩潰了,矚目會用這個模式取得core dump文件。

看來有時還會Segment fault: Core dumped!啊。
先運行一下./zhumu 試試:

./zhumu

得到了一個錯誤:

zoom started.
QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled
./zhumu: symbol lookup error: /home/felix/Documents/packages/TXZ/opt/zhumu/imageformats/libqico.so: undefined symbol: _ZdlPvm, version Qt_5

是一個OpenGL錯誤和符號錯誤。這不是重點。上面一條信息更有意義:

zoom started

名爲“矚目”核心卻是Zoom。真令人想起前幾年 紅芯瀏覽器的Chromium核心。
然後運行一下 那個launcher:

./ZhumuLauncher

輸出一堆。這裏paste一下前面的幾行:

ZhumuLauncher started.
cmd line: 
$HOME = /home/felix 
export SSB_HOME="/home/felix/.Zhumu_Cloud_Meetings"; export QSG_INFO=1; export LD_LIBRARY_PATH=/home/felix/Documents/packages/TXZ/opt/zhumu; /home/felix/Documents/packages/TXZ/opt/zhumu/zhumu "" 
zoom started.
Linux Client Version is 2.5.360133.0226
QSG_RENDER_LOOP is 
XDG_CURRENT_DESKTOP = XFCE;   GDMSESSION = xfce
Graphics Card Info:: 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
Zoom package arch is 64bit, runing OS arch is x86_64
AppIconMgr::systemDesktopName log Desktop Name: xfce 
qt.scenegraph.general: QSG: basic render loop
qt.scenegraph.general: Using sg animation driver
libpng warning: iCCP: known incorrect sRGB profile
qt.scenegraph.general: texture atlas dimensions: 1024x512

沒錯,第5行,第10行:

zoom started.
Zoom package arch is 64bit, runing OS arch is x86_64

進一步加深了矚目與zoom的血緣關係。
這個運行是正確的,看圖:
在這裏插入圖片描述
登錄,完全正常使用。
在這裏插入圖片描述

0x05 安裝(part B)

不知道你是否發現了一個事實:
我沒有安裝那些矚目依賴的Nvidia包,但是矚目卻能正常使用!

現在手動安裝。先把包裏的opt裏的zhumu文件夾複製到/opt/

cp -r ./opt/zhumu /opt/

然後用MenuLibre編輯一個desktop文件,不多敘述了。
在這裏插入圖片描述
在menu裏啓動,登錄,正常使用。

0x06 繼續探索

爲此,我下載了zoom。PS:人家本來就有Arch安裝包,根本不用debtap。
解壓。

tar xvf zoom_x86_64.pkg.tar.xz

然後對比一下文件名。

ls ./zhumuExtracted/opt/zhumu/ > 1.txt
ls ./zoomExtracted/opt/zoom/ > 2.txt
diff 1.txt 2.txt

diff 如下:

6a7
> Embedded.properties
7a9
> getbssid.sh
11a14
> json
22a26
> libmpg123.so
103a108,109
> meeting_chat_chime.pcm
> meeting_raisehand_chime.pcm
121d126
< RegisterProtocol
122a128,129
> root_cert_zpbxcacert.pem
> sip
128,131c135,138
< zhumu
< ZhumuLauncher
< zhumulinux
< zhumu.sh
---
> zoom
> ZoomLauncher
> zoomlinux
> zoom.sh
133d139
< ZXMPPROOT.cer

注意這幾項:

128,131c135,138
< zhumu
< ZhumuLauncher
< zhumulinux
< zhumu.sh
---
> zoom
> ZoomLauncher
> zoomlinux
> zoom.sh

不就是改個名嘛~~~(PS:還有把腳本的變量名改一下)

界面對比

看一組圖。
在這裏插入圖片描述登錄界面,左邊Zoom右邊矚目。(矚目把被和諧的Google和Facebook登錄選項去掉了)
在這裏插入圖片描述SSO 登錄,左邊Zoom右邊矚目。
在這裏插入圖片描述主界面,左邊Zoom右邊矚目。(PS: Schedule 圖標上的數字都是19)

在這裏插入圖片描述設置。矚目(右邊)用的好像是老版本的zoom,前幾年我用的zoom的界面和今天的矚目一模一樣。兩個設置的項目和內容是相同的,默認的秒數也都是10.

其他內容依次類推。

總結

紅芯對chromium,矚目對zoom。矚目客戶端是基於Zoom的fake copy。大致上與紅芯瀏覽器與chromium的關係相似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章