Challenge Description
Welp, time to do it again.
Unable to install? That is a part of the challenge, try to overcome it.
Author: Trailbl4z3r & Monaruku
hint: Tbh this is not a natively built app, more like something just wrapped into an app
Solution
Since it’s an APK file, Lets start with jadx-gui
for static analysis. In terms of static analysis, it’s always best to check out AndroidManifest.xml
first.
Based on the code, there’s only one activity which is systems.altimit.rpgmakermv.WebPlayerActivity
. Double click and see the activity code. There’s a lot of function in the WebPlayerActivity
but I’ll be focusing on onCreate
function first as that it is the starting point for all activities.
According to the code, it is trying to construct the game by getting the value of id.application.rpgmakermv.R.string.mv_project_index
. I then tried to have a look and search for the strings values. By using the global search feature in jadx-gui
, I managed to get the strings value.
Now that I know the value is //android_asset/www/index.html
, my first thought is checking out for the files using the global search feature.
While the index.html
does not have a lot of code, I noticed that it’s using main.js
. I then look for it and have a look in it.
Looking into main.js
, there’s a lot of code and several script as well. I then look into each of it and see which is interesting.
Looking into rmmz_managers.js
, I noticed that database file that are stored as json file. I then look into Actors.json
as it seems like the game character’s database file.
Since this is a json file, I think that I could modify the json file and repack the apk to make the me win easily. Since I have limited information at the moment, I tried to run the apk and see how the game works.
Here’s how the main page looks like, which is similar to the index.html
. I then started to play around to get more information.
Here’s my current stat and equipment. I then look into the Actors.json
to compare and identify which value I should modify. I noticed that the equip
is the current weapon and body that the character has. The weapon database file is Weapons.json
.
The id of the weapon is same as the number provided in equip
in Actors.json
. My next thought was to increase the damage of the weapon Dragon Blade
since I could just edit the json file and repack it. While I have no idea, the params
definitely consist the damage of the weapon. I then randomly edit every params
into high value. To do so, I’ll need to unpack first.
|
|
After unpack the APK file, search for Weapons.json
and modfiy the params
value of Dragon Blade
to 999. After modifying it, repack it.
|
|
After repacking the APK, remember to sign it. To do so, create a keystore.
|
|
After the keystore is created, sign the APK file.
After that, Just run the game and hope everything is working.
As shown in image, I managed to change the weapon stats by modifying the params
value. Now that my stats are high, I could easily win the game.
After I win each boss, I’ll get a partial flag.
- Flag 1
- Flag 2
- Flag 3
- Flag 4
- This part of flag appear in the map after winning boss 4
- Flag 5
- After winning the boss, you will need to talk to a dude and it will give you
23 7 13 25
which is order of the alphabeltwgmy
. - Then a QR will be provided.
4f51785}
- After winning the boss, you will need to talk to a dude and it will give you
Things I learned from this challenge
- reading code using static analysis
- patching the APK
- Cheat the game to win