Search code examples
user-interfaceframeworksreverse-engineering

How can I figure out which framework was used for build desktop application's (Zoom) UI?


I would like to know which framework was used to build Zoom(windows & mac)'s UI.

Is that possible somehow? Would decompiling help?

Zoom's desktop application


Solution

  • You can download Zoom's Linux client and choose Other Linux OS from the drop down menu. Then run the following command in a Linux terminal:

    $ tar -xf zoom_x86_64.tar.xz
    

    The execution of the command results in a directory called zoom being created and when you list it's contents using this command:

    $ ls zoom
    

    You get the following output:

    audio                  libQt5DBus.so.5                 libQt5QuickTemplates2.so.5.12.9  libturbojpeg.so
    dingdong1.pcm          libQt5DBus.so.5.12              libQt5QuickWidgets.so            meeting_chat_chime.pcm
    dingdong.pcm           libQt5DBus.so.5.12.9            libQt5QuickWidgets.so.5          meeting_raisehand_chime.pcm
    double_beep.pcm        libQt5Gui.so                    libQt5QuickWidgets.so.5.12       platforminputcontexts
    Droplet.pcm            libQt5Gui.so.5                  libQt5QuickWidgets.so.5.12.9     platforms
    egldeviceintegrations  libQt5Gui.so.5.12               libQt5Script.so                  platformthemes
    Embedded.properties    libQt5Gui.so.5.12.9             libQt5Script.so.5                Qt
    generic                libQt5Network.so                libQt5Script.so.5.12             qt.conf
    getbssid.sh            libQt5Network.so.5              libQt5Script.so.5.12.9           QtGraphicalEffects
    getmem.sh              libQt5Network.so.5.12           libQt5Svg.so                     QtQml
    iconengines            libQt5Network.so.5.12.9         libQt5Svg.so.5                   QtQuick
    imageformats           libQt5OpenGL.so                 libQt5Svg.so.5.12                QtQuick.2
    json                   libQt5OpenGL.so.5               libQt5Svg.so.5.12.9              QtWayland
    leave.pcm              libQt5OpenGL.so.5.12            libQt5WaylandClient.so           record_start.pcm
    libfdkaac2.so          libQt5OpenGL.so.5.12.9          libQt5WaylandClient.so.5         record_stop.pcm
    libicudata.so          libQt5Qml.so                    libQt5WaylandClient.so.5.12      ring.pcm
    libicudata.so.56       libQt5Qml.so.5                  libQt5WaylandClient.so.5.12.9    ringtone
    libicudata.so.56.1     libQt5Qml.so.5.12               libQt5Widgets.so                 sip
    libicui18n.so          libQt5Qml.so.5.12.9             libQt5Widgets.so.5               timezones
    libicui18n.so.56       libQt5QuickControls2.so         libQt5Widgets.so.5.12            translations
    libicui18n.so.56.1     libQt5QuickControls2.so.5       libQt5Widgets.so.5.12.9          version.txt
    libicuuc.so            libQt5QuickControls2.so.5.12    libQt5X11Extras.so               wayland-decoration-client
    libicuuc.so.56         libQt5QuickControls2.so.5.12.9  libQt5X11Extras.so.5             wayland-graphics-integration-client
    libicuuc.so.56.1       libQt5Quick.so                  libQt5X11Extras.so.5.12          wayland-graphics-integration-server
    libmpg123.so           libQt5Quick.so.5                libQt5X11Extras.so.5.12.9        wayland-shell-integration
    libQt5Core.so          libQt5Quick.so.5.12             libQt5XcbQpa.so                  wr_ding.pcm
    libQt5Core.so.5        libQt5Quick.so.5.12.9           libQt5XcbQpa.so.5                xcbglintegrations
    libQt5Core.so.5.12     libQt5QuickTemplates2.so        libQt5XcbQpa.so.5.12             zoom
    libQt5Core.so.5.12.9   libQt5QuickTemplates2.so.5      libQt5XcbQpa.so.5.12.9           ZoomLauncher
    libQt5DBus.so          libQt5QuickTemplates2.so.5.12   libquazip.so                     zopen
    

    As you can see, a lot of the filenames start with libQt5 or Qt, so I would assume, that the framework used to develop the Linux desktop client is the Qt Framework. And because the Linux client and the Windows client share the same user interface, they are probably both using Qt.