[APK][Xposed] ResXploit : Theming your android the easiest way! No decompiling APKs!

Search This thread

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
This would be my second public-released xposed module...

(A duplicate thread is also posted in the Android Themes Section, so user who are only interested in themes can also see this)

I did not expect that my WisdomSky Xploit would be a big hit.
I'm just an Amateur developer who just started delving into android development 3months ago and I didn't expect that much appreciation from my work... XD

But all of these would not be made possible if not because of sir @rovo89 and sir @Tungstwenty and their Xposed Framework, right? That's why I thank them a lot...

REQUIREMENTS
Xposed framework must be pre-installed before installing this.


What does the ResXploit do?

ResXploit has two parts:
the Removable part, terminal
and the main star, engine

The terminal is where you enter the commands(I'll discuss it later). These commands will then be interpreted by the engine and then passed to Xposed framework...

Flow:
TERMINAL >> ENGINE >> XPOSED FRAMEWORK

I have provided a variety of modules:
ResXploit (Terminal + Engine) (RECOMMENDED FOR NEWBIES)
ResXploit Terminal (Terminal Only)(DEPRECATED)
ResXploit Engine (Engine Only)

You might be wondering why I made one which has both terminal and engine... and other two which are separated...
ROM Chefs, Themers and some others would understand directly why...

All the commands are interpreted by the Engine right? so that would mean that once you have entered all the desired commands, the terminal will now end up as useless... so you will just delete so no one can touch the engine...
If you are a ROM Chef or a themer, you can theme all the apps you need to theme using ResXploit and then remove the terminal, so end-user interaction of the engine is prevented after you have released your ROMs to the world.

FOR NEWBIES!
I recommend you to use the ResXploit (Terminal + Engine)...
It is very smart..
I included 99% accurate error-checking system,
line numbering system,
and also Xposed module prioritization(which is first implemented on ResXploit for better module performance).



COMMANDS
We have four basic commands in the ResXploit, the apk, drawable, string, and boolean.

apk - A prerequisite command. This command is very vital whenever you using the ResXploit. This will define the target application by using the package name of the target application. You need to include this before you enter any command or else your command will not know which application is targeted and end up in lost island. :)

Code:
[B]format[/B]: [I]apk <package name>[/I]
[B]example[/B]: apk com.android.systemui


drawable(also drw) - The most often used command. The command which will change icons/images (png drawables) of an application. You can either overlay the existing image with your favorite color or completely replaced it with a .png image from your sdcard.

Code:
[B]format1[/B]: [I]drawable <target application's drawable name> <image path, no need to include /sdcard> <transparency, 0 to 255>[/I]
[B]example1[/B]: drawable status_bar_background bg.png 255

[B]format2[/B]: [I]drawable <target application's drawable name> <HEX RGB color code> <transparency, 0 to 255>[/I]
[B]example2[/B]: drawable status_bar_background #fff00ff 255


string(also str) - This command will change string(text) values of the application. The predefined string values are usually located in res/values/strings.xml of an application, but I guess they are not visible when you view the contents of an application using Archive managers like RootExplorer. But there is a way to identify them. I will include it later.

Code:
[B]format[/B]: [I]string  <target application's string value holder name> <replacement string>[/I]
[B]example[/B]: string app_name My App


boolean(also bln) - This command will change boolean values of the application. The predefined boolean values are usually located in res/values/bools.xml of an application, but I guess they are not visible when you view the contents of an application using Archive managers like RootExplorer as well.

Code:
[B]format[/B]: [I]boolean  <target application's boolean value holder name> <replacement boolean value, either [B]true[/B] or [B]false[/B] only>[/I]
[B]example[/B]: boolean allowNumberNotifications true


Some simple examples screenshots:

drawable and string commands in action
Screenshot_2013_08_08_15_08_33.png
Screenshot_2013_08_08_15_17_21.png



ResXploit UI screenshots:
Screenshot_2013_08_10_11_38_12.png
Screenshot_2013_08_10_11_38_24.png



If you find my ResXploit module interesting,
Please hit THANKS!!! XD
:angel:



UPDATES & CHANGELOGS:

ResXploit Engine 1.0.8 - added support to framework-res(android).(latest)
ResXploit 1.0.8 - updated engine(1.0.8).(latest)

NOTICE: ResXploit is now an abandonware.
My flash drive where I stored the sources of my android projects was corrupted unexpectedly.
And also, my phone was broken. I have no device to use to re-write everything from scratch... Sorry...
 

Attachments

  • ResXploit.apk
    24.5 KB · Views: 4,023
  • ResXploitEngine.apk
    14.2 KB · Views: 1,654
  • ResXploitTerminal.apk
    22.9 KB · Views: 2,182
  • resxploit-1.0.8(latest).apk
    25.9 KB · Views: 6,519
  • resxploit-engine-only-1.0.8(latest).apk
    15 KB · Views: 1,973
Last edited:

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
Tutorial and samples

System Apps Package Names:
SystemUI - com.android.systemui
Settings - com.android.settings
Mms - com.android.mms
Contacts - com.android.contacts
Launcher - com.android.launcher
Gallery - com.android.gallery3d
File Explorer - com.android.qrdfileexplorer
Framework-res - android
Tip: If you want to find the package name of a specific application(not on the list), you can open Root Explorer(download it from googleplay) and then browse the apk you want to check, open it and choose "view". You can find AndroidMaifest.xml file inside. Open it then find the package="xxxxxxxxxxx". The words or group of words inside the quotations separated by a period is the package name of that application.

Note: ResXploit is far safer(in terms of error awareness) to use than the ResXploit terminal. If possible, only use ResXploit. In the simple tutorials below, please expect that I'm referring to ResXploit only.



Changing Statusbar background color
let's say color red...
Code:
#!/
apk com.android.systemui
drawable status_bar_background #ff0000 255

Changing Notifications Panel background color into transparent
Code:
#!/
apk com.android.systemui
drawable notification_panel_bg #000000 0

Changing Notifications Panel background with an image from sdcard
let's say that the png image is located in /sdcard/my_img.png
Code:
#!/
apk com.android.systemui
drawable notification_panel_bg my_img.png 255

You might be wondering where i'd get the target application's drawable filename?
Actually, you can just open the root explorer and view the files inside the apk of the target application. under the /res directory(folder), you can find a variety of subdirectories prefixed with [drawable, like drawable-hdpi,drawable-mdpi and so on... Basically, all images inside those folders are under the scope of drawable command in Resxploit. And if you want to target a certain image in the drawable folders, you just need to get the file name without the .png or .9.png. That's it!



Adding "comments"...
Comments in programming are human-readable additional information. If you want to put notes somewhere in your script, you can put "#" before your statement. When the terminal find a "#" before a statement, the terminal will ignore it and skip it. However if you will enter a non-command information and is not started withcl a "#", the terminal will ofcourse read it as command and then throws an error message.

Code:
#!/

# my comment. my comment. my comment  
apk com.android.systemui
drawable status_bar_background #ff0000 255

# the terminal will skip the command below
# because it started with a "#"

#drawable oh_no #ff00ff 255



Defining working directory path of your images
If you want to start theming and you already have the images you want to use stored inside a single folder, then you can tell the terminal where these images are located so you don't need to enter the path redundantly.
You can define it on the very first line of ResXploit, after the "#!/" you can add the folder name or path to the folder.

let's say we have our images put in a folder in sdcard named my_images or /sdcard/my_images, then you can define it like this.
Code:
#!/my_images

#we can start theming now
drawable hello some_image.png 255
drawable world next_image.png 255
 
Last edited:

daggerxXxsin

Senior Member
Aug 11, 2011
296
36
Manila
Very interesting. I've been interested in theming for a while now but haven't gotten my feet wet. I'll be waiting for your tutorials. Great work mate!

Sent from my Galaxy Nexus
 

Dovidhalevi

Senior Member
Jun 26, 2012
2,728
1,172
So ... a scriptable general purpose module. This is a phenomenal idea. OK still requires digging into the apk but a whole lot easier than building a new module from scratch.

Mission: Get rid of Armv7 calls the FC apps on my old clunker (also need help buying a new phone--if I had it, would have reserved the edge already!). Google Now first tries to init the "off line" voice recognition engine. Minimum, want to simply disable this call. I use overlays to prevent other such calls. Maximal, to replace with the old "on line" voice recognition engine.

Capability in this yet?
Among the booleans?

what say you
 
  • Like
Reactions: WisdomSky

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
So ... a scriptable general purpose module. This is a phenomenal idea. OK still requires digging into the apk but a whole lot easier than building a new module from scratch.

Mission: Get rid of Armv7 calls the FC apps on my old clunker (also need help buying a new phone--if I had it, would have reserved the edge already!). Google Now first tries to init the "off line" voice recognition engine. Minimum, want to simply disable this call. I use overlays to prevent other such calls. Maximal, to replace with the old "on line" voice recognition engine.

Capability in this yet?
Among the booleans?

what say you

i don'think so... because ResXploit's scope is only the res or resource directory of the apk structure...
if a boolean value is defined in the res/values/bools.xml that will actually toggle controls then it would be great... but i think, in your case it is deeply hard-coded to work like that...
 

Metallijim

Senior Member
Dec 1, 2011
1,488
1,085
Bedford
Google Pixel 7
Framework.res?

Can you theme the framework.res using this?

package name is only 'android' no com. or anything..

EDIT: Tried and it seems to go through ok, but nothing seems to change. Rebooted several times, changed an image in my keyboard, checked it was ticked in Xposed framework, setup a folder in my internal storage, checked superuser granted access, pressed high priority in settings. Don't know :confused:

Here's a debug log (uploading tomorrow, pc occupied)
 
Last edited:

Rokonacdc

Senior Member
Jul 8, 2013
187
54
Will this work for non system apps? The unlock button on the PowerAmp lock screen drives me insane because it's the only thing I can't change and I absolutely hate green.
 

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
Can you theme the framework.res using this?

package name is only 'android' no com. or anything..

EDIT: Tried and it seems to go through ok, but nothing seems to change. Rebooted several times, changed an image in my keyboard, checked it was ticked in Xposed framework, setup a folder in my internal storage, checked superuser granted access, pressed high priority in settings. Don't know :confused:

Here's a debug log (uploading tomorrow, pc occupied)


I'm so sorry for that...
in exposed, framework-res(android) uses different method...
so i forgot to implement it fo support the framework-res...
thanks for your feed back. I'll add it up and upload it later...


Will this work for non system apps? The unlock button on the PowerAmp lock screen drives me insane because it's the only thing I can't change and I absolutely hate green.

Ofcourse! it will work with non-system apps too... XD
 
Last edited:

Metallijim

Senior Member
Dec 1, 2011
1,488
1,085
Bedford
Google Pixel 7
here's a Debug

Here's my Debug log

Xperia Z 4.2.2, Images in internal storage, Xposed priority set low, all other xposed modules that I have installed disabled
 

Attachments

  • debug.log.txt
    747 bytes · Views: 25

dully79

Senior Member
Apr 29, 2010
2,844
3,395
res/drawable
droidcandy.weebly.com
Interesting, sounds like a concept similar to Ninjamorph.

A couple of quick questions:
  1. Is this able to apply folders or just single png's?
  2. Also do you need extract png's from apks in order to apply or does it extract and apply automatically?

:good:
 

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
Interesting, sounds like a concept similar to Ninjamorph.

A couple of quick questions:
  1. Is this able to apply folders or just single png's?
  2. Also do you need extract png's from apks in order to apply or does it extract and apply automatically?

:good:

Unlike ninja morph, in resxploit, there is no permanent replacing of resources happened... which means you can deactivate, share, edit easily anytime.... :)

Q: Is this able to apply folders or just single png's?
A: only single pngs... 1 drawable command = 1 png... but there is no limitation on how how many commands you can add

Q: Also do you need extract png's from apks in order to apply or does it extract and apply automatically?
A: As what I've added on the title, "No decompiling APKs"... it means, no decompiling or extracting is involved in the process as what Xposed Framework aimed. You just need to put the image to replace inside your sdcard and just add a command to tell the engine "to replace that with this"... there is no permanent replacing of resources happened here... the image is just move into the /data partition and will be just overlapped to the target resource so there will be an impression of replacing of resources
 
Last edited:

dully79

Senior Member
Apr 29, 2010
2,844
3,395
res/drawable
droidcandy.weebly.com
I didnt mean does it decompile/extract full apks. I meant can you pull an resource/image out of the apk to apply.
I know it overlays instead of permanently overwriting the original resource, similar to Icon themer and XTheme engine.

Ninjamorph/ Metamorph unzips apks into folders so you can navigate through them and choose what you want to apply.

Example:
  1. Choose target resource/image to change.
  2. Choose apk to pull resource/image from.
  3. Navigate and choose resource/image (extract if applicable) to apply.

This would be good if it also done the same. Although you could just unzip with an on board app like Zarchiver.
Basically it would make it a new and improved Ninjamorph/ Metamorph (dont tell Stericson i said that;))


No offense, but looking at it from newbies point of view, it seems like a bit of a drawn out process if you were wanting to change numerous items.
I know it's early days and I'm sure this would be greatly improved with a GUI, if you decide to add one.

Personally speaking, i think this has massive potential and could be something very special. I applaud you, i wish i had your talent.#

Thanks.
 

phanitej

Senior Member
Nov 7, 2010
618
321
Hyderabad
I tried clicking on the changelog link, it gave an error "Invalid Attachment specified. This can happen for a variety of reasons-- most likely because the thread or post you are trying to view has been moved or deleted. Please return to the forum home and browse for another similiar post."

Not sure if its the file attached to the post that is the updated one or if the actual update got deleted. Please help me here :(
 

WisdomSky

Senior Member
May 8, 2013
189
762
In your mind
facebook.com
I tried clicking on the changelog link, it gave an error "Invalid Attachment specified. This can happen for a variety of reasons-- most likely because the thread or post you are trying to view has been moved or deleted. Please return to the forum home and browse for another similiar post."

Not sure if its the file attached to the post that is the updated one or if the actual update got deleted. Please help me here :(

Oh sorry for that.. ill just upload it to a third party site and add the link...
thnx for reminding...


I didnt mean does it decompile/extract full apks. I meant can you pull an resource/image out of the apk to apply.
I know it overlays instead of permanently overwriting the original resource, similar to Icon themer and XTheme engine.

Ninjamorph/ Metamorph unzips apks into folders so you can navigate through them and choose what you want to apply.

Example:
  1. Choose target resource/image to change.
  2. Choose apk to pull resource/image from.
  3. Navigate and choose resource/image (extract if applicable) to apply.

This would be good if it also done the same. Although you could just unzip with an on board app like Zarchiver.
Basically it would make it a new and improved Ninjamorph/ Metamorph (dont tell Stericson i said that;))


No offense, but looking at it from newbies point of view, it seems like a bit of a drawn out process if you were wanting to change numerous items.
I know it's early days and I'm sure this would be greatly improved with a GUI, if you decide to add one.

Personally speaking, i think this has massive potential and could be something very special. I applaud you, i wish i had your talent.#

Thanks.

thanks for the appreciation and to your suggestions...someone did suggest to me to add GUI...

I'm still a newbie in terms of androld... there's so much to learn first before I can fully implement whats on my mind...

My phone is also not that good for development... its so slow... XD
but if everything turns out good... then maybe I should reconsider...XD
 

phanitej

Senior Member
Nov 7, 2010
618
321
Hyderabad
Oh sorry for that.. ill just upload it to a third party site and add the link...
thnx for reminding...




thanks for the appreciation and to your suggestions...someone did suggest to me to add GUI...

I'm still a newbie in terms of androld... there's so much to learn first before I can fully implement whats on my mind...

My phone is also not that good for development... its so slow... XD
but if everything turns out good... then maybe I should reconsider...XD
Which phone do you use?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 123
    This would be my second public-released xposed module...

    (A duplicate thread is also posted in the Android Themes Section, so user who are only interested in themes can also see this)

    I did not expect that my WisdomSky Xploit would be a big hit.
    I'm just an Amateur developer who just started delving into android development 3months ago and I didn't expect that much appreciation from my work... XD

    But all of these would not be made possible if not because of sir @rovo89 and sir @Tungstwenty and their Xposed Framework, right? That's why I thank them a lot...

    REQUIREMENTS
    Xposed framework must be pre-installed before installing this.


    What does the ResXploit do?

    ResXploit has two parts:
    the Removable part, terminal
    and the main star, engine

    The terminal is where you enter the commands(I'll discuss it later). These commands will then be interpreted by the engine and then passed to Xposed framework...

    Flow:
    TERMINAL >> ENGINE >> XPOSED FRAMEWORK

    I have provided a variety of modules:
    ResXploit (Terminal + Engine) (RECOMMENDED FOR NEWBIES)
    ResXploit Terminal (Terminal Only)(DEPRECATED)
    ResXploit Engine (Engine Only)

    You might be wondering why I made one which has both terminal and engine... and other two which are separated...
    ROM Chefs, Themers and some others would understand directly why...

    All the commands are interpreted by the Engine right? so that would mean that once you have entered all the desired commands, the terminal will now end up as useless... so you will just delete so no one can touch the engine...
    If you are a ROM Chef or a themer, you can theme all the apps you need to theme using ResXploit and then remove the terminal, so end-user interaction of the engine is prevented after you have released your ROMs to the world.

    FOR NEWBIES!
    I recommend you to use the ResXploit (Terminal + Engine)...
    It is very smart..
    I included 99% accurate error-checking system,
    line numbering system,
    and also Xposed module prioritization(which is first implemented on ResXploit for better module performance).



    COMMANDS
    We have four basic commands in the ResXploit, the apk, drawable, string, and boolean.

    apk - A prerequisite command. This command is very vital whenever you using the ResXploit. This will define the target application by using the package name of the target application. You need to include this before you enter any command or else your command will not know which application is targeted and end up in lost island. :)

    Code:
    [B]format[/B]: [I]apk <package name>[/I]
    [B]example[/B]: apk com.android.systemui


    drawable(also drw) - The most often used command. The command which will change icons/images (png drawables) of an application. You can either overlay the existing image with your favorite color or completely replaced it with a .png image from your sdcard.

    Code:
    [B]format1[/B]: [I]drawable <target application's drawable name> <image path, no need to include /sdcard> <transparency, 0 to 255>[/I]
    [B]example1[/B]: drawable status_bar_background bg.png 255
    
    [B]format2[/B]: [I]drawable <target application's drawable name> <HEX RGB color code> <transparency, 0 to 255>[/I]
    [B]example2[/B]: drawable status_bar_background #fff00ff 255


    string(also str) - This command will change string(text) values of the application. The predefined string values are usually located in res/values/strings.xml of an application, but I guess they are not visible when you view the contents of an application using Archive managers like RootExplorer. But there is a way to identify them. I will include it later.

    Code:
    [B]format[/B]: [I]string  <target application's string value holder name> <replacement string>[/I]
    [B]example[/B]: string app_name My App


    boolean(also bln) - This command will change boolean values of the application. The predefined boolean values are usually located in res/values/bools.xml of an application, but I guess they are not visible when you view the contents of an application using Archive managers like RootExplorer as well.

    Code:
    [B]format[/B]: [I]boolean  <target application's boolean value holder name> <replacement boolean value, either [B]true[/B] or [B]false[/B] only>[/I]
    [B]example[/B]: boolean allowNumberNotifications true


    Some simple examples screenshots:

    drawable and string commands in action
    Screenshot_2013_08_08_15_08_33.png
    Screenshot_2013_08_08_15_17_21.png



    ResXploit UI screenshots:
    Screenshot_2013_08_10_11_38_12.png
    Screenshot_2013_08_10_11_38_24.png



    If you find my ResXploit module interesting,
    Please hit THANKS!!! XD
    :angel:



    UPDATES & CHANGELOGS:

    ResXploit Engine 1.0.8 - added support to framework-res(android).(latest)
    ResXploit 1.0.8 - updated engine(1.0.8).(latest)

    NOTICE: ResXploit is now an abandonware.
    My flash drive where I stored the sources of my android projects was corrupted unexpectedly.
    And also, my phone was broken. I have no device to use to re-write everything from scratch... Sorry...
    43
    Tutorial and samples

    System Apps Package Names:
    SystemUI - com.android.systemui
    Settings - com.android.settings
    Mms - com.android.mms
    Contacts - com.android.contacts
    Launcher - com.android.launcher
    Gallery - com.android.gallery3d
    File Explorer - com.android.qrdfileexplorer
    Framework-res - android
    Tip: If you want to find the package name of a specific application(not on the list), you can open Root Explorer(download it from googleplay) and then browse the apk you want to check, open it and choose "view". You can find AndroidMaifest.xml file inside. Open it then find the package="xxxxxxxxxxx". The words or group of words inside the quotations separated by a period is the package name of that application.

    Note: ResXploit is far safer(in terms of error awareness) to use than the ResXploit terminal. If possible, only use ResXploit. In the simple tutorials below, please expect that I'm referring to ResXploit only.



    Changing Statusbar background color
    let's say color red...
    Code:
    #!/
    apk com.android.systemui
    drawable status_bar_background #ff0000 255

    Changing Notifications Panel background color into transparent
    Code:
    #!/
    apk com.android.systemui
    drawable notification_panel_bg #000000 0

    Changing Notifications Panel background with an image from sdcard
    let's say that the png image is located in /sdcard/my_img.png
    Code:
    #!/
    apk com.android.systemui
    drawable notification_panel_bg my_img.png 255

    You might be wondering where i'd get the target application's drawable filename?
    Actually, you can just open the root explorer and view the files inside the apk of the target application. under the /res directory(folder), you can find a variety of subdirectories prefixed with [drawable, like drawable-hdpi,drawable-mdpi and so on... Basically, all images inside those folders are under the scope of drawable command in Resxploit. And if you want to target a certain image in the drawable folders, you just need to get the file name without the .png or .9.png. That's it!



    Adding "comments"...
    Comments in programming are human-readable additional information. If you want to put notes somewhere in your script, you can put "#" before your statement. When the terminal find a "#" before a statement, the terminal will ignore it and skip it. However if you will enter a non-command information and is not started withcl a "#", the terminal will ofcourse read it as command and then throws an error message.

    Code:
    #!/
    
    # my comment. my comment. my comment  
    apk com.android.systemui
    drawable status_bar_background #ff0000 255
    
    # the terminal will skip the command below
    # because it started with a "#"
    
    #drawable oh_no #ff00ff 255



    Defining working directory path of your images
    If you want to start theming and you already have the images you want to use stored inside a single folder, then you can tell the terminal where these images are located so you don't need to enter the path redundantly.
    You can define it on the very first line of ResXploit, after the "#!/" you can add the folder name or path to the folder.

    let's say we have our images put in a folder in sdcard named my_images or /sdcard/my_images, then you can define it like this.
    Code:
    #!/my_images
    
    #we can start theming now
    drawable hello some_image.png 255
    drawable world next_image.png 255
    13
    ResXploit Reloaded

    Hello everyone!

    Thanks for using ResXploit!

    I would like to announce that I'm already up for a all-new ResXploit. The new ResXploit will be completely different than the older ResXploit. Instead of being interpreted by the ResXploit engine, your sources will be directly compiled into standalone Xposed module. Wouldn't that be great? It's like building your own Xposed Module without experiencing what the developers have experienced just to understand how to do things. And aside from that, there will be addition to support for some resources(maybe xml drawables and xml layouts, but still unsure). That's enough of information for now. I may not be able to finish it right away for a reason that I don't have an android phone for now. It may take more than 2 months...

    Thank you... XD
    5
    Still cooking up something new in the module/terminal?

    sorry sir... my priority list changed... something strucked my mind and I think it is interesting...

    something like, giving xposed installer(not the framework) a major update...
    I will release it together with the resxploit update....
    3
    Hi everyone... for those who are yet to use my newest Xposed Module, please head to my Resflux's Thread for more info:

    http://xdaforums.com/xposed/modules/resflux-easy-android-theming-xposed-t2790940

    Thanks everyone! :)