Basics

As I mentioned I’ll be adding the pictures of any queries users ask me to the next day wiki, so here it is,

Let’s take an app : I’ve taken Benime Whiteboard Video Maker Video and methods credits: Mr. Craazy

When you’ll download the app from apkpure or any website you’ll see it’s in an extension .apks or .zip or .xapk formats simply these are as a archive or bundle format to make size of output less. To convert them we need to convert it into .apk format for which we use Antisplit-G2 or SAI

Here used AntiSplit:

Watch the video

After converting to apk now we are about start our work 😜:

Now from the search option search for DoodleMainActivity

Now you’ll be thinking similar to those tutorials i’m going to skip it and will let it up to you to know how I came to this conclusion to search only DoodleMainActivity 😂

Well don’t worry I’m not going to do that:

First let’s know about static field in Java:

aha! 😜 So there is a static field in this class, that means R:Z is being used to store some value and what does Z represents in smali?(of course boolean) so it only can store two values i.e., either true or false

[!NOTE] It’s to be noted that every time you see static fields in classes of app doesn’t mean that it’s right, and you start editing with that and began complaining about not working, but you still followed my method in another app LoL 🤣. We have to analyze that class to see if the in-app purchases are related to that field or not, only then start editing them.

Now let’s understand through line one of G(Ljava/lang/Boolean;)V we can understand that first it’s creating boolean to register p1 to store bool value in it then through if-eqz checking if value of p1 results 0 (false) or 1 (true) and if the value results in 0 then it’ll go to :cond_13 i.e., line 237 where you can see then it’ll make p1 value 0 and use the field bool R:Z which we see earlier here… from above image we can also see if it’s false it’ll skip the result and will not execute the below codes of if-eqz, to run then we’ll move these codes inside the condition as:

then we’ll return the value as return-void because register v0 value is being stored to p1:

← Smali vs Java Registers [local] →