Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save 0xdevalias/c5bd55b50f0e2da9d0c685163535d4c6 to your computer and use it in GitHub Desktop.

Select an option

Save 0xdevalias/c5bd55b50f0e2da9d0c685163535d4c6 to your computer and use it in GitHub Desktop.
Some notes on reverse engineering the Mobalytics Desktop app and its Overwolf-based distribution model, from older Electron builds to the newer Overwolf extension installer, including how Overwolf tags installers, resolves extension metadata, and downloads `app.opk` packages.

Reverse Engineering Overwolf Extensions / Mobalytics League of Legends Desktop Companion

Some notes on reverse engineering the Mobalytics Desktop app and its Overwolf-based distribution model, from older Electron builds to the newer Overwolf extension installer, including how Overwolf tags installers, resolves extension metadata, and downloads app.opk packages.

Table of Contents

Notes

Overwolf:

Extra notes / gotchas about Overwolf exploration:

  • The extracted $PLUGINSDIR payload does not contain the Mobalytics extension ID.

    • rg kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho $PLUGINSDIR found nothing.
    • The ID is embedded/tagged in the original downloaded installer EXE near the end:
      • Sel=1&Extension=kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho&Name=Mobalytics%20Desktop&UtmSource=app&UtmMedium=owaa&...
    • So extracting the NSIS installer loses the most obvious evidence of how OWInstaller.exe knows the selected app.
  • In the installer web UI, the app ID comes from native code:

    • Commands.getSelectedAppId() returns window.external.information.ExtensionId
    • The HTML/JS UI delegates actual install/download work to window.external.control.execute(...).
    • The web UI is mostly installer UI/state management, not the package resolver.
  • https://content.overwolf.com/Installer/promo/<extensionId>/index.html is only promo/progress UI.

    • It is not the extension package source.
    • The real package source is the appsdl.overwolf.com/.../app.opk URL returned by install/clean / catalog metadata.
  • partnerId and channel do not appear to be required to resolve this specific app package.

    • Even placeholder values still returned the Mobalytics dock entry when extensionId=... was present.
  • OWStoreExtentions.json.gz is spelled that way by Overwolf (Extentions, typo included).

    • It is a global extension catalog, not just Mobalytics.
    • For Mobalytics it confirmed:
      • UID: kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho
      • Version: 1.805.1
      • DownloadURL: https://appsdl.overwolf.com/prod/apps/kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho/1.805.1/app.opk
      • Type: WebApp
      • MinimalOWVersion: 0.251.2.1
  • The {0}/{1}.json(.gz) URL pattern was found in strings, but simple guesses like:

    • https://apps.overwolf.com/prod/kc/kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho.json
    • https://apps.overwolf.com/prod/kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho/kccgdmdllebbgifgafjfmcjdgmhoknfhjdnobcho.json returned 403, so its parameter mapping is still unresolved.

Overwolf dev docs:

Newer Overwolf based Mobalytics build:

Older Mobalytics electron build:

See Also

My Other Related Deepdive Gist's and Projects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment