WhatsApp: how to make it work on KaiOS 2.5 and earlier firmware versions
NOTE, this guide is for users with KaiOS versions lower than or equal to 2.5. It has been tested on Nokia 8110 4G up to firmware version 11, but with the addition of more recent APIs which should also concern the modification of the system partition for the correct functioning of the application. In this case, see the extreme guide on updating the APIs (API update).
From the official website of WhatsApp you can read the FAQ in which the minimum requirement for KaiOS is version 2.5.1, but it is not so, we know it well! New versions of WhatsApp can be adapted for old firmware versions such as thecustom ROM GerdaOS (based on a v13 firmware for Nokia 8110 4G).
This guide should work for any version of WhatsApp downloadable from the KaiStore. For more devices and for old v12 and earlier, more apps wont work properly because the /system/kaios folder that contains the APIs needed. Often should be enough to change that. Learn more on the related extreme guide:
At the end of this old jailbreak video you can see WhatsApp installed on Nokia 8110 4G with a custom system ROM v1200.17.10 with firmware and API v13.00.17.01 (just like on GerdaOS).
The version used in the video came from a Jio phone, so it has been adapted to work on several phones (such as the Nokia 8110 4G). In this community we were the first to use WhatsApp, anticipating the official release of this application by as much as five months (December 2018 - May 2019), not to mention the studies carried out on it to try to unlock it in Europe and in the rest of the world.
Patching guide
by Luxferre
NOTE, the steps are shown for Linux/Mac, for Windows you could use Cygwin/MSYS or WSL2 environment to use the same commands, or just replace them with their Win32 counterparts.
For the current state of off-the-shelf app, patching process is as follows [you need a stock-flashed phone with WA installed (for 8110 - with v15 and above), a target phone and adb]:
1) Gain the temporary root on the stock.
2) Create a directory and enter it, and then create another directory called application, for instance:
mkdir -p ~/wa-patch && cd ~/wa-patch && mkdir application
3) Pull the contents of the WA application already installed on the rooted stock:
adb pull /data/local/webapps/kaios.whatsapp.net/application.zip application/application.zip
4) Unpack the contents and remove the archive itself:
cd application && unzip application.zip && rm application.zip
5) Remove META-INF directory (this is very important, otherwise signatures will not match):
rm -rf META-INF
6) Find the line that looks like this in the page.js file (starts with if(!window.Intl)):
if(!window.Intl)throw f(856),new Error("os unsupported (Intl is missing)");
7) Replace this line with this:
if(!window.Intl)window.Intl=window.mozIntl;
Save the file.
7.1) (Optionally) remove the next statement after Intl-related (contains planned app expiration date) from the same page.js that looks like this:
if(Date.now()>=1569023999e3)throw f(414),new Error("expired app");
(in this case it's pointing to expire at September 21 2019)
Save the file.
8) If you want to, you may already deploy the patched version via old Firefox/PaleMoon/NewMoon WebIDE or XPCShell onto the target. If you wish to create the GerdaPkg/OmniSD-compatible package, proceed to the next step.
9) Staying within application directory, repack the application.zip:
zip -9r --exclude=*.git* --exclude=*.DS_Store* --exclude=README.md ../application.zip .
10) Go to the level above and create metadata.json:
cd .. && echo {\"version\": 1, \"manifestURL\": \"app://kaios.whatsapp.net/manifest.webapp\"} > metadata.json
11) Staying in the level above, pack the GerdaPkg package:
zip -9 whatsapp.gpkg.zip application.zip metadata.json
Now you can transfer, install and test the ready package (whatsapp.gpkg.zip) on the GerdaOS/v13 target.
Stay tuned to Google Groups to get the latest patched versions:
1) Get a root access on your phone, for example using a temporary backdoor as it is showed in this forum;
2) Whatsapp messages are stored in the whatsapp directory placed in /data/local/storage/default;
3) Copy your whatsapp directory, which name is 1059+f+app+++kaios.whatsapp.net THE NUMBER AT THE BEGINNING IS VARIABLE;
4) Remove and reinstall the app;
5) Go back in the /data/local/storage/default folder, check what's the name of the new whatsapp installation (ex: 1073+f+app+++kaios.whatsapp.net) and then copy your backup in place of the new folder by changing its name.