LocationManagerServiceEx WakeLock Fix [v20c, root, smali, for advanced users] - LG G5 ROMs, Kernels, Recoveries, & Other Developme

I've been struggling with LocationManagerServiceEx wakelock totally disabling deep sleep on my H850 after using GPS navigation apps. I've tried disabling services, switching IZat on and off, but nothing helped. At least consistently. Finally I think I found a fix that works for me. This method requires root, skills to use smali/baksmali, copy files and set permissions. I post it so that any developer may use it in their custom ROM. I've done this on Fulmics ROM, so exact instructions for other ROMs may differ.
adb pull /system/framework/services.jar
Extract classes.dex from jar file
Decompile using baksmali classes.dex
Edit com/android/server/LocationManagerServiceEx.smali
Search for
Code:
.method private sendIntent(Landroid/app/PendingIntent;Landroid/content/Intent;)V
Before
Code:
:goto_10
return-void
add the following line
Code:
invoke-direct {p0}, Lcom/android/server/LocationManagerServiceEx;->releaseWakeLock()V
The result should be like this:
Code:
invoke-virtual/range {v0 .. v6}, Landroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V
:try_end_10
.catch Landroid/app/PendingIntent$CanceledException; {:try_start_3 .. :try_end_10} :catch_11
invoke-direct {p0}, Lcom/android/server/LocationManagerServiceEx;->releaseWakeLock()V
:goto_10
return-void
So, we basically add releaseWakeLock() call before returning from this function not only if exception is raised, but in all other cases too. A word of warning though... I am not sure if it is the right way to do it. If someone can understand the code better, we might have a better fix.
smali the code back to classes.dex
replace classes.dex in services.jar
keep old services.jar for backup
upload services.jar to /system/framework
set owner to root.root and permissions to 644
clear cache, reboot

Very interesting. Could you upload a patched file?
I am on Fulmics 5.5 and am having that issue (I realize that the jar may be very rom specific)

just found the part of code that this relates to
https://github.com/aosp-mirror/platform_frameworks_base/blob/nougat-mr2.3-release/services/core/java/com/android/server/location/GeofenceManager.java#L367 said:
Code:
private void sendIntent(PendingIntent pendingIntent, Intent intent) {
mWakeLock.acquire();
try {
pendingIntent.send(mContext, 0, intent, this, null,
android.Manifest.permission.ACCESS_FINE_LOCATION);
} catch (PendingIntent.CanceledException e) {
removeFence(null, pendingIntent);
mWakeLock.release(); //< this should remove the wakelock and is the same as your patch
}
// ...otherwise, mWakeLock.release() gets called by onSendFinished()
}
as mentioned in the comment onSendFinished releases the wakelock as well
Code:
@Override
public void onSendFinished(PendingIntent pendingIntent, Intent intent, int resultCode,
String resultData, Bundle resultExtras) {
mWakeLock.release();
}
Click to expand...
Click to collapse
might be that lg code varies widely?

Related

[ROM] LOL v. 1.4.2 (with kernel 2.2.2+oc+lagfix)(+ how to create powermenu on LGP500)

Hello everybody, this is my first homemade ROM and everything started more like a joke.. (that’s the reason of its name.. ) rather than because of the necessity of a different ROM - I just wanted to experiment a bit in order to improve my knowledge!
The Void (thanks to Noejn) I was using before was working flawlessly, but I was curious to learn the procedure of cooking my own, so I tried, and when a problem showed up I resolved them.. it was a great way to learn something new!
First I made it for personal use only, then talking to my friends on an Italian android forum they wanted to try it, so they became my beta testers (MicheyKnox since the first day and NioBee from the second on).
During the last week many other users installed the Rom and I made some minor bug fixes and improvements and now it’s ready to be published here…!
But let’s go to the TECHNICAL SPECIFICATIONS:
* based on the v10q (Froyo 2.2.2)
* rom deodexed
* zipaligned
* root + superuser + busybox
* a2sd (darktremor script) + dalvik-cache on ext partition
* HW acceleration by default enabled
* Jit by default enabled
* Kernel froyo 2.2.2 recompiled by me with oc+lagfix (thx to drellisdee and mik_os)
* CPU automatically set 245/729/interactive
* gingerbread keyboard
* adw.launcher + adwnotifier
* customized theme with circular battery
* updated Google apps
* also includes: terminal emulator, OI file manager
* customization scripts: appinst and cpuclock
* customized POWERMENU able to reboot the phone or reboot directly in recovery
* BaBa (Burning Apple Boot Animation)
* wifi power (set by default to 20 dBm, edit the script /system/etc/setwifi.sh for modify this value)
* support for wlan wpa adhoc
* market hack (the market will seem that you are using Froyo 2.2)
BaBa is a Boot animation which is made of two different animations I found on XDA dimensions and timings where adapted in order to fit our needs (thanks to MickeyKnox )
Some apps like facebook, twitter and layar were removed, they can easily be installed through the Marked!
Removed: AppAdvisor and LG update advisor.
Other apps removed:
Code:
AIME.apk (LG Keyboard)
AnalogClockWidget.apk
BookmarksWidget.apk
CalendarWidget.apk
CarHome.apk
CarHomeLauncher.apk
ClockWeatherWidget.apk
DigitalAlarmWidget.apk
DualClockWidget.apk
GenieWidget.apk (news and weather widget)
LGHome.apk (launcher LG)
MagicSmokeWallpapers.apk
MemoWidget.apk
MessageWidget.apk
PhotoWidget.apk
Protips.apk
VisualizationWallpapers.apk
ConnectionManagerWidget.apk
Email.apk
LiveWallpapers.apk
Talk.apk
For these apps I created a script that allows you to install or uninstall them in a very easy way, without the need of root explorer.
To open this script go to Terminal Emulator (installed by default) or use adb shell from your PC and write:
su
appinst
a menu will popup where you’ll find all the options, just follow the onscreen instructions.
(the script works taking its files from the LOL directory in your SD Card, so if you delete this directory, the script won’t work!)
With my second script: cpuclock you’ll be able to change the default frequency in LOL without the need of installing other apps, to use it go to Terminal Emulator or via adb shell from your PC and write
su
cpuclock
and then follow the onscreen instructions, all your settings will be available after you reboot your device.
DOWNLOAD LINKS:
LOL v 1.4.2 (multiupload)
md5: 648e91a9d8458039d4937c4911acaf82
INSTALLATION (please follow these steps carefully):
What you need: root + custom recovery
* Reboot into custom recovery (through 3-button combo)
* Partition SDcard (swap: 0, ext: 512 – or bigger if you like), convert ext2 to ext3
* wipe everything (data/factory, cache, dalvik-cache, ext, android_secure)
* Toggle PC-USB connection and copy the downloaded zip you wish to flash into the root of your SDcard; unplug afterwards
* flash from SDcard and choose the file you just copied
* reboot
On first boot it takes some minutes for the phone to load: DON’T PANIC! Wait for at least 5-6 minutes!
************************************************************
I prepared a zip with the scripts translated into English (the original scripts in the Rom are in Italian)
just download and flash over.
************************************************************
Thanks to MickeyKnox for beta testing, for BaBa and for the time spent together on msn while I was cooking
Thanks to NioBee for beta testing and for her tips and suggestions (and for this translation from Italian )
Thanks to the guys on XDA where I found the tools needed to cook my ROM (dsixda + others) and to mik_os for his fantastic kernel
original discussion (in Italian): androidworld.it
************* standalone kernel ***************
zip in AnyKernel Updater by Koush package
kernel 2.2.2 + oc + lagfix by mik_os/Der_Caveman
kernel 2.2.2 + oc + lagfix by LG
SCREENSHOTS:
a little how to
ok, i wrote a little tutorial on how to create a powermenu
sorry for my english
************************************************************************************************
for first step i used this tutorial (i only removed the option "donwload"):
http://forum.xda-developers.com/showthread.php?t=811532
(copied from thread above)
untermensch said:
Step 1.
the first thing we need to do is add string and image resources to framwork-res
for this example I am using a stock JI6 ROM your resource id's will be different
if on another ROM
use apk_manager to decompile framework-res
open "res\values\strings.xml" and add our string resources
Code:
<string name="reboot_recovery">Recovery</string>
<string name="reboot">Reboot</string>
save and close
open "res\values\public.xml" and assign our strings resource id's
scroll until you get to the end of the "<public type="string"" id list
note the id of the last string, in this example it is "10403c2" sometimes
the id's are out of order so search for "10403c2 + 1" or "10403c3"
if the next id is unused then we can start assigning id's to the strings
we added.
Code:
<public type="string" name="reboot_recovery" id="0x010403c3" />
<public type="string" name="reboot" id="0x010403c5" />
now is a good time to add the image resources so add your icons to
"res\drawable-hdpi"
and assign id's to them the same way we did for the strings
in this example, using the example icons in the zip file I had
Code:
<public type="drawable" name="reboot" id="0x010803aa" />
<public type="drawable" name="recovery" id="0x010803ab" />
save and close
now framework-res has the resources needed for this mod use
apk_manager to compile.
Click to expand...
Click to collapse
step 2: (This part is based on untermensch's tutorial to which i have made serveral changes to let it work on LG)
now we are going to add the extra options to the power menu
decompile android.policy.jar with baksmali
open com\android\internal\policy\impl\GlobalActions.smali and change the line 436 from
Code:
const/4 v0, 0x3
to
Code:
const/4 v0, 0x5
insert the following line at line 462 (the original line 462 becomes line 486)
(remember to change reboot and recovery's image/string id with the ones used in the first step)
Code:
const/4 v1, 0x3
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
const v3, 0x10803e0 # reboot icon resource id
const v4, 0x104039d # reboot string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;
const v3, 0x10803e1 # recovery icon resource id
const v4, 0x104039c # recovery string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
save and exit
(here starts my real job )
ok now copy GlobalActions$3.smali to GlobalActions$7.smali
edit GlobalActions$7.smali
search and replace all GlobalActions$3.smali to GlobalActions$7.smali
and change this line:
Code:
const/4 v1, 0x1
invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V
to
Code:
const/4 v1, 0x1
const-string v2, "now"
invoke-static {v0, v2, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
save and exit
now copy GlobalActions$3.smali to GlobalActions$8.smali
edit GlobalActions$8.smali
search and replace all GlobalActions$3.smali to GlobalActions$8.smali
and change this line:
Code:
const/4 v1, 0x1
invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V
to
Code:
const/4 v1, 0x1
const-string v2, "recovery"
invoke-static {v0, v2, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
save and exit
recompile android.policy.jar with smali
done
PaoloM70 said:
Hello everybody, this is my first homemade ROM
Click to expand...
Click to collapse
GREAT, glad to see you posted your Rom here...!!
I am using this rom since the very beginning, and I can only recommend it... give it a try!
FANTASTIC ROM great work is the BEST ROM I've never had, SPECTACULAR!
very very good rom grazie paolo
Hiya, well done m8!
....As Paolo said in his post, i've been betatester for LOL Rom.
Well this rom is absolutely stable, never had a crash since started to use it.
Scripts, reboot and recovery-reboot mods are a great add-on....
i never found something like this in any rom i tested in past.
I really hope our xda friends will appreciate this ROM as we do!!!
oki, be good.
Mickeyknox
good work man
Molto bella e velocissima!!!!!!!
Grazie Paolo
vicvic said:
Molto bella e velocissima!!!!!!!
Grazie Paolo
Click to expand...
Click to collapse
Vic i'm not sure (kidding) but i suppose u should write in english.... foreign guys wont understand italian....
Awsome!! Please, how you boot option into power-off menu?
you have to modify some xml in folder values in framework and the androidpolicy.jar
great works!!!
The_ERROR said:
Awsome!! Please, how you boot option into power-off menu?
Click to expand...
Click to collapse
i just modified the framework-res.apk and android.policy.jar
exact procedure I followed is hard to explain ...btw i started my work from this thread
http://forum.xda-developers.com/showthread.php?t=811532
I do get "preparing SD card"error(i'm ussin the 2gb card...
CrysiZ said:
I do get "preparing SD card"error(i'm ussin the 2gb card...
Click to expand...
Click to collapse
Do you get this error after having finished flashing?
I think the problem could be connected to app2sd...
usually it is not recommended to use it on lower class SD, better if class4 or higher..
So how kn i remove it?
very very good, thanks!
CrysiZ said:
So how kn i remove it?
Click to expand...
Click to collapse
I'm sorry, app2sd is part of the rom, and for the moment it's not possible to remove it without recompiling the whole...
But can you explain me WHEN exactly you get this error? During flash or afterwards? Did you manage to boot up the sistem at least once?
lol
excellent will give it a try. god with so many nand backups I am losing my train of thought.
Ye..it worked for 30 min or so and then it started to get this error.

[GUIDE] How to get Transparent App Drawer [Launcher2.apk or Trebuchet.apk]

Hi Guys,
I have been asked many times how I was able to do transparent app drawer.
Description:
Transparent app drawer by definition means you can see the homescreen wallpaper whilst in app drawer instead of the default black background.
Tools needed:
1) apktool
2) notepad++
3) 7zip
Files needed: (Depending on ROM type)
1) trebuchet.apk, or
2) Launcher2.apk
Steps [HOW TO]:
1) decompile trebuchet.apk or Launcher2.apk
2) go to \res\layout\apps_customize_pane.xml
replace android:background="#ff000000" with android:background="#00000000"
There are two instances in this file.
3) now SMALI CODE.
go to
\smali\com\cyanogenmod\trebuchet\
or
smali\com\android\launcher2\
4) open Launcher.smali and delete the following method: updateWallpaperVisibility
Also delete all its references in Launcher.smali and other smali files. Usually this method is referenced in Launcher$13.smali and Launcher$17.smali and AppsCustomizePagedView.smali
However, it could be different from file to file depending on how it was built from source. Therefore, to know the file names exactly, just use notepad++ and use Search in Files feature and search for updateWallpaperVisibility in the decompiled apk samli folder. It will tell you where this method is referenced.
Example of Smali:
Delete all this method starting from .method to .end mothod.
This code is in Launcher.smali.
.method updateWallpaperVisibility(Z)V
.locals 3
.parameter
.prologue
const/high16 v1, 0x10
.line 2322
if-eqz p1, :cond_1
move v0, v1
.line 2323
:goto_0
invoke-virtual {p0}, Lcom/android/launcher2/Launcher;->getWindow()Landroid/view/Window;
move-result-object v2
invoke-virtual {v2}, Landroid/view/Window;->getAttributes()Landroid/view/WindowManager$LayoutParams;
move-result-object v2
iget v2, v2, Landroid/view/WindowManager$LayoutParams;->flags:I
and-int/2addr v2, v1
.line 2325
if-eq v0, v2, :cond_0
.line 2326
invoke-virtual {p0}, Lcom/android/launcher2/Launcher;->getWindow()Landroid/view/Window;
move-result-object v2
invoke-virtual {v2, v0, v1}, Landroid/view/Window;->setFlags(II)V
.line 2328
:cond_0
return-void
.line 2322
:cond_1
const/4 v0, 0x0
goto :goto_0
.end method
Click to expand...
Click to collapse
Having done this deletion, use notepad++ to search for updateWallpaperVisibility
Use fine in files function in Notepadd++, it will tell you exactly where this method is referenced. Then delete all the lines containing this method reference.
Example:
invoke-virtual {p0, v0}, Lcom/android/launcher2/Launcher;->updateWallpaperVisibility(Z)V
Click to expand...
Click to collapse
so, you have to delete the above line completely, and also any lines in all smali files containing "updateWallpaperVisibility"
After deleting the method and all of its references, just compile the apk and make your flashsable zip.
I use APKTOOL and 7zip for that.
Example:
Before:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
After:
Enjoy
wesamothman said:
Hi Guys,
I have been asked many times how I was able to do transparent app drawer.
Description:
Transparent app drawer by definition means you can see the homescreen wallpaper whilst in app drawer instead of the default black background.
Tools needed:
1) apktool
2) notepad++
3) 7zip
Files needed: (Depending on ROM type)
1) trebuchet.apk, or
2) Launcher2.apk
Steps [HOW TO]:
1) decompile trebuchet.apk or Launcher2.apk
2) go to \res\layout\apps_customize_pane.xml
replace android:background="#ff000000" with android:background="#00000000"
There are two instances in this file.
3) now SMALI CODE.
go to
\smali\com\cyanogenmod\trebuchet\
or
smali\com\android\launcher2\
4) open Launcher.smali and delete the following method: updateWallpaperVisibility
Also delete all its references in Launcher.smali and other smali files. Usually this method is referenced in Launcher$13.smali and Launcher$17.smali and AppsCustomizePagedView.smali
However, it could be different from file to file depending on how it was built from source. Therefore, to know the file names exactly, just use notepad++ and use Search in Files feature and search for updateWallpaperVisibility in the decompiled apk samli folder. It will tell you where this method is referenced.
After deleting the method and all of its references, just compile the apk and make your flashsable zip.
I use APKTOOL and 7zip for that.
Example:
Before:
After:
Enjoy
Click to expand...
Click to collapse
Superman™
---------- Post added at 07:25 PM ---------- Previous post was at 07:24 PM ----------
THis is nice
Superman™
Simple, usefull
Thanks for the tutorial, this really helped me, that's my first time modding.
I was looking for a transparent app drawer since i turn on my phone for the very first time.
THANK YOU
From france.
4) open Launcher.smali and delete the following method: updateWallpaperVisibility
Also delete all its references in Launcher.smali and other smali files. Usually this method is referenced in Launcher$13.smali and Launcher$17.smali and AppsCustomizePagedView.smali
However, it could be different from file to file depending on how it was built from source. Therefore, to know the file names exactly, just use notepad++ and use Search in Files feature and search for updateWallpaperVisibility in the decompiled apk samli folder. It will tell you where this method is referenced.
Click to expand...
Click to collapse
This confused me but i figured it out so i thought i might share incase others get confused as well.
To delete the method look in the Launcher.smali for a line that says ".method updateWallpaperVisibility" , delete everything after that until you get to ".end method" (make sure you delete the ".method updateWallpaperVisibility" and ".end method" line as well), to delete the references find each line that has "updateWallpaperVisibility" (using the "find in files" function in notepad++ as stated in OP) and delete the WHOLE LINE. after that recompile and sign the apk and put it into your phone
bfo12 said:
This confused me but i figured it out so i thought i might share incase others get confused as well.
To delete the method look in the Launcher.smali for a line that says ".method updateWallpaperVisibility" , delete everything after that until you get to ".end method" (make sure you delete the ".method updateWallpaperVisibility" and ".end method" line as well), to delete the references find each line that has "updateWallpaperVisibility" (using the "find in files" function in notepad++ as stated in OP) and delete the WHOLE LINE. after that recompile and sign the apk and put it into your phone
Click to expand...
Click to collapse
Deleting a method implicitly means all of it. From function header .method until .end.
I am glad you managed.
--------------------------------------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
Hey, I don't get it at all, what to do here, is this windows os or android os :S (sry for my unknowledge :/ ) , and also don't get why would I need to use a laucher.apk when I already have a launcher on my CM9, I mean I just don't get it, do I modify the apk and then install it ? :/ Could you explain it to a beginner (who knows how to flash and root ) ?
CroVeXx said:
Hey, I don't get it at all, what to do here, is this windows os or android os :S (sry for my unknowledge :/ ) , and also don't get why would I need to use a laucher.apk when I already have a launcher on my CM9, I mean I just don't get it, do I modify the apk and then install it ? :/ Could you explain it to a beginner (who knows how to flash and root ) ?
Click to expand...
Click to collapse
-APK is android related.
-CM roms use trebuchet.apk while aokp uses launcher2.apk. modding way is the same for both. So you pick up the apk related to your rom type.
-then you follow the guide and make a flashable zip to install from recovery.
--------------------------------------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
link to Trebuchet.apk
wesamothman said:
Hi Guys,
I have been asked many times how I was able to do transparent app drawer.
Description:
Transparent app drawer by definition means you can see the homescreen wallpaper whilst in app drawer instead of the default black background.
Tools needed:
1) apktool
2) notepad++
3) 7zip
Files needed: (Depending on ROM type)
1) trebuchet.apk, or
2) Launcher2.apk
Steps [HOW TO]:
1) decompile trebuchet.apk or Launcher2.apk
2) go to \res\layout\apps_customize_pane.xml
replace android:background="#ff000000" with android:background="#00000000"
There are two instances in this file.
3) now SMALI CODE.
go to
\smali\com\cyanogenmod\trebuchet\
or
smali\com\android\launcher2\
4) open Launcher.smali and delete the following method: updateWallpaperVisibility
Also delete all its references in Launcher.smali and other smali files. Usually this method is referenced in Launcher$13.smali and Launcher$17.smali and AppsCustomizePagedView.smali
However, it could be different from file to file depending on how it was built from source. Therefore, to know the file names exactly, just use notepad++ and use Search in Files feature and search for updateWallpaperVisibility in the decompiled apk samli folder. It will tell you where this method is referenced.
After deleting the method and all of its references, just compile the apk and make your flashsable zip.
I use APKTOOL and 7zip for that.
Example:
Before:
After:
Enjoy
Click to expand...
Click to collapse
Could you please paste a link to download original Trebuchet.apk, so that we can work on it? Thanks!
jago84 said:
Could you please paste a link to download original Trebuchet.apk, so that we can work on it? Thanks!
Click to expand...
Click to collapse
The original trebuchet.apk differs from rom to rom on how it was built from source. But you can get it from cm10. It is default launcher in cm10.
If you use another trebuchet from another rom of a different device, it might not work with your device.
--------------------------------------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
I get an error rebuilding apk: integer types not allowed, referred to the 00000000 value of background color...
gpvecchi said:
I get an error rebuilding apk: integer types not allowed, referred to the 00000000 value of background color...
Click to expand...
Click to collapse
This error comes if your aapt of your apktool is not referring to the correct framework. So you have to get the framework apk file from the same rom where you got the launcher or trebuchet and install it in apktool first
Apktool -f framework-res.apk and then decomplile and do your changes and then build it.
-------------------------
Omega's Team Member
-------------------------
Devices:
---------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
Ok... I don't understand the .smali part so I have done it wrong and I can't compile apk because I have edited somehow wrong the .smali files.. :/
manumanfred said:
Ok... I don't understand the .smali part so I have done it wrong and I can't compile apk because I have edited somehow wrong the .smali files.. :/
Click to expand...
Click to collapse
Use notepad++ to search for the method name i mentioned in op. Delete the method all if it and all the lines that refers to it. You have to do this in all smali files that have this reference. Use notepad++ search in files function to search for its all occurences. Or send me the apk and i will see.
-------------------------
Omega's Team Member
-------------------------
Devices:
---------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
wesamothman said:
Use notepad++ to search for the method name i mentioned in op. Delete the method all if it and all the lines that refers to it. You have to do this in all smali files that have this reference. Use notepad++ search in files function to search for its all occurences. Or send me the apk and i will see.
-------------------------
Omega's Team Member
-------------------------
Devices:
---------
GT-N7000 - Note I
GT-N7100 - Note II
GT-N8000 - Note 10.1 3G
Motorola Xoom MZ601 - UMTS EURO
Click to expand...
Click to collapse
OK Thanks! but I use Linux to decompile and recompile + sign & to zipalign apps. so I use Gedit to edit .xml, .smali and other files.
But the issue is that I don't understand .smali files at all!
I can find the lines but I don't know which is the last line which is needed to be deleted, is it from .method x to .method y or to somewhere .line xy or what... :/
manumanfred said:
OK Thanks! but I use Linux to decompile and recompile + sign & to zipalign apps. so I use Gedit to edit .xml, .smali and other files.
But the issue is that I don't understand .smali files at all!
I can find the lines but I don't know which is the last line which is needed to be deleted, is it from .method x to .method y or to somewhere .line xy or what... :/
Click to expand...
Click to collapse
Soon, i will add the code here before and after so that you can do this...
wesamothman said:
Soon, i will add the code here before and after so that you can do this...
Click to expand...
Click to collapse
OK! Thank You!
manumanfred said:
OK! Thank You!
Click to expand...
Click to collapse
OP updated with example codes deletion of .smali files content. This should be straight forward now
In case you still have issues, let me know and I will be more than glad to assist you
Thank You!
It is easier now, but Nexus Launcher's (JB 4.2.2 JDQ39) Launcher.smali doesn't have:
.method updateWallpaperVibility
When I just put updateWallpaperVibility
then it is this one: (line 3117)
Code:
invoke-virtual {p0, v0}, Lcom/android/launcher2Launcher;->updateWallpaperVisibility(Z)V
.line 2691
invoke-virtual....
So it's different..
Anyway Thanks!
manumanfred said:
Thank You!
It is easier now, but Nexus Launcher's (JB 4.2.2 JDQ39) Launcher.smali doesn't have:
.method updateWallpaperVibility
When I just put updateWallpaperVibility
then it is this one: (line 3117)
Code:
invoke-virtual {p0, v0}, Lcom/android/launcher2Launcher;->updateWallpaperVisibility(Z)V
.line 2691
invoke-virtual....
So it's different..
Anyway Thanks!
Click to expand...
Click to collapse
Aha. This is for 4.2.2 jb. Okay. Send it to me and let me see
wesamothman said:
Aha. This is for 4.2.2 jb. Okay. Send it to me and let me see
Click to expand...
Click to collapse
OK, Thanks!
Here is the stock Launcher with rotation enabled:
http://forum.xda-developers.com/showthread.php?t=2145289

[MOD] [HOW-TO] 4.4.2 TW Camera Shutter sound | Flash with low battery

Isn't my work all credits to @jobnik & @majdinj
original thread: http://forum.xda-developers.com/showthread.php?t=2038675
I made it only compatible with KitKat (4.4.2)
Root and deodexed SamsungCamera2.apk recommended.
Needed tools:
Backsmali/Smali
Notepad++
7Zip
1.) Baksmali SamsungCamera2.apk
1. Adding "Shutter Sound On/Off" option in Camera Menu:
Instead smali editing you can add this line to your others.xml (so you do not have to do step 2,3,4,5,6,7) :
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
2.) Navigate to com\sec\android\app\camera\resourcedata folder
3.) Open CommonSettingsMenuResourceData.smali
find: "CscFeature_Camera_ShutterSoundMenu"
Add the blue line
Code:
.line 66
invoke-static {}, Lcom/sec/android/app/CscFeature;->getInstance()Lcom/sec/android/app/CscFeature;
move-result-object v0
const-string v1, [COLOR="DarkGreen"]"CscFeature_Camera_ShutterSoundMenu"[/COLOR]
invoke-virtual {v0, v1}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;)Z
move-result v0
[COLOR="Blue"]const/4 v0, 0x1[/COLOR]
if-eqz v0, :cond_a5
4.) Save and close
5.) Navigate to \com\sec\android\app\camera folder
6.) Open Camera.smali
find: "CscFeature_Camera_ShutterSoundMenu"
Add the blue line
Code:
const-string v22, "[COLOR="DarkGreen"]CscFeature_Camera_ShutterSoundMenu[/COLOR]"
invoke-virtual/range {v21 .. v22}, Lcom/sec/android/app/CscFeature;->getEnableStatus(Ljava/lang/String;)Z
move-result v21
[COLOR="Blue"]const/16 v21, 0x1[/COLOR]
if-nez v21, :cond_4a1
7.) Save and close
8.) Now open your customer.xml and delete the following line from it: <ShutterSound>on</ShutterSound>
Isn't included in every customer.xml..
Shutter sound selection will work only after Factory data reset
2. Camera can be used with flash in low battery state:
9.) Navigate to \com\sec\android\app\camera folder
10.) Open Camera.smali
find: .method protected handleLowBattery(Z)V
Add the blue line.
Code:
[COLOR="DarkGreen"].method protected handleLowBattery(Z)V[/COLOR]
.registers 9
.parameter "temp"
.prologue
const v6, 0x7f0c01cb
const v5, 0x7f0c001d
const/4 v4, 0x0
const/4 v3, 0x1
.line 3045
[COLOR="blue"]return-void[/COLOR]
const-string v1, "Camera2"
const-string v2, "handleLowBattery"
find: .method private handleBatteryChanged(Landroid/content/IntentV
now find: handleLowBattery(Z)V Delete the whole line which one contains it:
Code:
iput-object v2, p0, Lcom/sec/android/app/camera/Camera;->mPluggedLowBatteryPopup:Landroid/app/AlertDialog;
.line 2872
invoke-virtual {p0}, Lcom/sec/android/app/camera/Camera;->finishTimerCount()V
.line 2873
[COLOR="Red"]invoke-virtual {p0, v5}, Lcom/sec/android/app/camera/Camera;->[/COLOR][COLOR="DarkGreen"]handleLowBattery(Z)V[/COLOR]
find: .method private handleBatteryChanged(Landroid/content/IntentV
now find: handlePluggedLowBattery(Z)V
Delete the whole line which one contains it, delete only the next three lines (search down with Notepad++)
Code:
.line 2843
[COLOR="Red"]invoke-direct {p0, v6}, Lcom/sec/android/app/camera/Camera;->[/COLOR][COLOR="DarkGreen"]handlePluggedLowBattery(Z)V[/COLOR]
.line 2864
:cond_bf
:goto_bf
iget v2, p0, Lcom/sec/android/app/camera/Camera;->battLevel:I
iget v3, p0, Lcom/sec/android/app/camera/Camera;->mLowBatteryWarningLevel:I
Code:
.line 2878
[COLOR="red"]invoke-direct {p0, v5}, Lcom/sec/android/app/camera/Camera;->[/COLOR][COLOR="DarkGreen"]handlePluggedLowBattery(Z)V[/COLOR]
.line 2879
iget-object v2, p0, Lcom/sec/android/app/camera/Camera;->mEngine:Lcom/sec/android/app/camera/CommonEngine;
invoke-virtual {v2, v8}, Lcom/sec/android/app/camera/CommonEngine;->isCurrentState(I)Z
move-result v2
if-nez v2, :cond_e3
.line 2880
[COLOR="Red"]invoke-direct {p0, v5}, Lcom/sec/android/app/camera/Camera;->[/COLOR][COLOR="DarkGreen"]handlePluggedLowBattery(Z)V[/COLOR]
find: .method private handlePluggedLowBattery(Z)V
Add the blue line.
Code:
[COLOR="DarkGreen"].method private handlePluggedLowBattery(Z)V[/COLOR]
.registers 9
.parameter "temp"
.prologue
const v6, 0x7f0c019a
const v5, 0x7f0c0199
const/4 v4, 0x1
const/4 v3, 0x0
.line 3102
[COLOR="blue"]return-void[/COLOR]
const-string v1, "Camera2"
const-string v2, "handlePluggedLowBattery"
11.) Save your changes
12.) Smali classout folder
13.) Add the new classes.dex file to SamsungCamera2.apk with 7Zip
14.) Push to your Phone
Nice?
Yes Tkari4. Good dev man. This mod going to be in 1.3 rom i think. [emoji6]
Envoyé de mon SM-N9005 en utilisant Tapatalk
micky387 said:
Yes Tkari4. Good dev man. This mod going to be in 1.3 rom i think. [emoji6]
Envoyé de mon SM-N9005 en utilisant Tapatalk
Click to expand...
Click to collapse
Yes, of course!
Shutter sound mod is fixed in the OP.
Now Off option can be selected:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
tkari4 said:
Shutter sound mod is fixed in the OP.
Now Off option can be selected:
Click to expand...
Click to collapse
did you do factory reset? I deleted <ShutterSound>on</ShutterSound> and changed features.xml, but still cannot swicht it off,
is it possible not to do factory reset??
pir0texnik said:
did you do factory reset? I deleted <ShutterSound>on</ShutterSound> and changed features.xml, but still cannot swicht it off,
is it possible not to do factory reset??
Click to expand...
Click to collapse
I think no, because it's in the csc.
Sent from my SM-N9005 using Tapatalk
tkari4 said:
I think no, because it's in the csc.
Sent from my SM-N9005 using Tapatalk
Click to expand...
Click to collapse
I tried changing customer.xml and features.xml on 4.4.2 (Noto 3) and 4.3 (S3, Note 2). In both cases it was possible to switch on shutter sound menu, but it never changes state. It is always on, taping does not work. I baksmalied SamsungCamera2.odex and converted to java to undertand how does it work, but I am not a big specialist in java, maybe someone can help finally kill the sound...
pir0texnik said:
I tried changing customer.xml and features.xml on 4.4.2 (Noto 3) and 4.3 (S3, Note 2). In both cases it was possible to switch on shutter sound menu, but it never changes state. It is always on, taping does not work. I baksmalied SamsungCamera2.odex and converted to java to undertand how does it work, but I am not a big specialist in java, maybe someone can help finally kill the sound...
Click to expand...
Click to collapse
1.) Add this line
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
to others.xml or to features.xml. (if you have booth, than features xml will be used)
add over </FeatureSet>
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
</FeatureSet>
</SamsungMobileFeauture>
2.) Delete <ShutterSound>on</ShutterSound> or <ShutterSound>off</ShutterSound> from customer.xml
3.) Factory data reset
Should work..
tkari4 said:
1.) Add this line
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
to others.xml or to features.xml. (if you have booth, than features xml will be used)
add over </FeatureSet>
Code:
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
</FeatureSet>
</SamsungMobileFeauture>
2.) Delete <ShutterSound>on</ShutterSound> or <ShutterSound>off</ShutterSound> from customer.xml
3.) Factory data reset
Should work..
Click to expand...
Click to collapse
This method is invalid, because I am in the China, code named CHN CSC
Is there a way to remove CSC restrictions?
lijianjunyonghu said:
This method is invalid, because I am in the China, code named CHN CSC
Is there a way to remove CSC restrictions?
Click to expand...
Click to collapse
Sorry I can't help more..
I'm using it without problem in my Rom...
1. I put <CscFeature_Camera_ShutterSoundMenu>true</CscFeature_Camera_ShutterSoundMenu> in features.xml
2. I deleted <ShutterSound>on</ShutterSound> from customer.xml
3. I did factory data reset.
Now menu really works, but sound plays no matter what option is chosen...
I even added ro.camera.sound.forced=0 in build.prop and did factory data reset without any effect, shutter still plays.
Device is Galaxy S3, 4.3
tkari4 said:
Sorry I can't help more..
I'm using it without problem in my Rom...
Click to expand...
Click to collapse
Thank you
An Error Occured ...
Hi,
if I try to Baksmali the SasmungCamera2.apk I get an error, please see uploaded pics.
Google couldnt help me. What am I doing wrong?
Thanks
Alec86 said:
Hi,
if I try to Baksmali the SasmungCamera2.apk I get an error, please see uploaded pics.
Google couldnt help me. What am I doing wrong?
Thanks
Click to expand...
Click to collapse
As I see you are trying to modify one apk file from an odexed Rom.
SamungCamera2.apk must be deodexed first.
You need SamungCamera2.apk & SamungCamera2.odex. Deodex it, than you can make changes.
If your Rom is odexed, than push the modified SamungCamera2.apk back to your phone, than delete SamungCamera2.odex and reboot.
deodexed apk
tkari4 said:
As I see you are trying to modify one apk file from an odexed Rom.
SamungCamera2.apk must be deodexed first.
You need SamungCamera2.apk & SamungCamera2.odex. Deodex it, than you can make changes.
If your Rom is odexed, than push the modified SamungCamera2.apk back to your phone, than delete SamungCamera2.odex and reboot.
Click to expand...
Click to collapse
First thank you for your response,
I tried to deodexe with "Universal_Deodexer_V5" , I followed the instructions for this tool and deodexed SamungCamera2.apk. But I cannt still "baksmali" the apk. Same error.
I uploaded the log file from "Universal_Deodexer_V5"
Any idea?
Thanks
Alec86 said:
First thank you for your response,
I tried to deodexe with "Universal_Deodexer_V5" , I followed the instructions for this tool and deodexed SamungCamera2.apk. But I cannt still "baksmali" the apk. Same error.
I uploaded the log file from "Universal_Deodexer_V5"
Any idea?
Thanks
Click to expand...
Click to collapse
Try with this version, because you have the same error: http://forum.xda-developers.com/showpost.php?p=55233256&postcount=1
deodexed apk
tkari4 said:
Try with this version, because you have the same error: http://forum.xda-developers.com/showpost.php?p=55233256&postcount=1
Click to expand...
Click to collapse
Hi,
thank you again. Meanwhile I tried to enable/disable the shutter sound over the " features.xml" and it worked immediately. The shutter sound is now disabled PERMANENTLY, no matter if it disabled or enabled in the camera settings. The camera settings disable only the autofocus sound. I haven't do the factory reset, only wiped cache.
By the way, the fixed "Universal_Deodexer" works well. I Smali classout folder with our scripts and get "Moded_SamsungCamera2.apk" . The new Moded apk dont worke on my Phone (force close), what should I do (for the further experince)? I pushed the classes.dex in the deodexed apk, but still force close.
Alec86 said:
Hi,
thank you again. Meanwhile I tried to enable/disable the shutter sound over the " features.xml" and it worked immediately. The shutter sound is now disabled PERMANENTLY, no matter if it disabled or enabled in the camera settings. The camera settings disable only the autofocus sound. I haven't do the factory reset, only wiped cache.
By the way, the fixed "Universal_Deodexer" works well. I Smali classout folder with our scripts and get "Moded_SamsungCamera2.apk" . The new Moded apk dont worke on my Phone (force close), what should I do (for the further experince)? I pushed the classes.dex in the deodexed apk, but still force close.
Click to expand...
Click to collapse
Did you deleted the SamsungCamera2.odex from your phone?
Normally the Moded_SamsungCamera2.apk must work. (maybe the raw folder compression causing the problem in the apk)
Set the compression level before baksmali to 0.
Try to wipe dalvik-cache.
compression level
tkari4 said:
Did you deleted the SamsungCamera2.odex from your phone?
Normally the Moded_SamsungCamera2.apk must work. (maybe the raw folder compression causing the problem in the apk)
Set the compression level before baksmali to 0.
Try to wipe dalvik-cache.
Click to expand...
Click to collapse
I sat the compression level to 0 and it works Thank you again
My shutter sound is still disabled PMANENTLY, no matter if it disabled or enabled in the camera settings. Is this supposet to be?
Thanks

[GUIDE] How to add support for all third party apps to multiwindow

I've been looking for a guide to make multiwindow support all apps, but I couldn't find any simple guides with the way I wanted. So, just decided to write my own one.
This guide should be compatible with samsung lollipop (5.0+) only, though I've tested it only on my G906K (5.0.1).
What you need :
Deodexed framework.jar
Apktool or baksmali.jar to decompile framework.jar
Minimum knowledge for de/recompiling framework.jar
At least two hands to grab your mouse and keyboard
Now let's get started.
STEP 1)
Decompile your framework.jar and open smali/android/content/Intent.smali
Look for the following line :
Code:
.field public static final CATEGORY_MULTIWINDOW_LAUNCHER:Ljava/lang/String; = "android.intent.category.MULTIWINDOW_LAUNCHER"
and replace it with
Code:
.field public static final CATEGORY_MULTIWINDOW_LAUNCHER:Ljava/lang/String; = "android.intent.category.[B]LAUNCHER[/B]"
STEP 2)
I'm not sure if this modification is necessary, but it won't do any harm to us anyways.
Open smali/com/samsung/android/multiwindow/MultiWindowApplicationInfos.smali
(If you can't find it, look into smali_classes2 folder. It might vary depending on operator even on the same model.)
Look for the following method :
Code:
.method public isSupportApp(Ljava/lang/String;)Z
and replace the whole method with this :
Code:
.method public isSupportApp(Ljava/lang/String;)Z
.locals 1
.prologue
const/4 v0, 0x1
return v0
.end method
Now recompile your framework.jar, and voila! It's all done!
Please note that I'm a super noob and not familiar with those smali stuffs, so there could be errors. In fact, I'm quite sure, but it works well as of know
Please let me know if there's something I missed, or any simpler ways to do this. Thanks.

[GUIDE] Remove Root Detection and App Protection from an APK

Hi all! I've been using USAA mobile app for a while now but a recent updated added root detection in which the app would immediately close itself. It was incredibly annoying but I figured out how to remove it and thought I would share it here since the general process is pretty much the same with all apks. I'll use it as an example. Since not all apps have built in modification protection, I'll split this into 2 parts
I use Notepad++ for pretty much this whole thing. It's ability to search through multiple files for a string is incredibly useful
1. How to remove root detection
Decompile the apk (I use APK Easy Tool)
Search the apk for any files containing "superuser" (you can change this to whatever you think will be a likely hit such as "supersu")
Ex: smali_classes2\com\rsa\mobilesdk\sdk\RootedDeviceChecker.smali
Then change all of the const-string entries with any root related apks or directories to something that doesn't exist:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Recompile and sign the app (just have the "sign apk after compile" checkbox ticked) and you're done! Pretty easy huh?
If you find that upon doing this, you get some kind of a message about the app being modified (like with USAA app - you'd hope it'd have some kind of tampering protection considering it's a banking app), then you'll need to remove the tamper protection.
2. How to remove tamper protection:
This is much more complicated than root removal for obvious reasons and so you're mileage will likely vary. You'll just need to use your head for this one
Search the main strings file: (for example: "res\values\strings.xml") for the message that pops up when you something triggers the protective measures. Ex: "The application appears to have been modified or corrupted"
Take note of the string name. Ex: "tamper_block_message_default"
Then search the public.xml file (typically in the same place as the strings.xml) for the string name.
Take note of the hexadecimal id
Now for the fun part: Search the apk for the hex string. Ex: 0x7f100b15
In the case of the USAA app it was found in: smali_classes2/com/usaa/mobile/android/app/core/protection/TamperActions.smali
Go to the line in that file that has it. This is the section that's triggering the protection problem.
Scroll up until you find what it's housed in (like an if statement or try block).
Then find a way to make sure that problem block never executes. In this case, it was an if statement. The problem block occured when v0 was set to something other than 0.
The solution here would then be to make sure that v0 always equals 0. So add this above it: const/4 v0, 0x0
Recompile and sign the app (just have the "sign apk after compile" checkbox ticked) and you're done!
Note that due to potentially dangerous nature of these kinds of modifications, I'm kindly asking that nobody shares any apks that they modified and if any moderators see any modified apks floating around on this thread, that they're deleted
The reasons for this should be obvious. In disabling the protection the developer added to the app, malicious code could easily be added to the app and in the case of an app that deals with sensitive information like the USAA banking app, the results could be catastrophic.
Not that anyone here would do that but it'd be too easy for some two-bit hacker on another site to claim to be hosting an apk here when it's in fact not.
So just share what you did/how you did it so others can do the same (this is a developers forum after all) :good:
Can you please help to disable root detection in this app?
https://www.apkmirror.com/apk/appli...elease/app-cloner-1-5-2-android-apk-download/
nextheart said:
Can you please help to disable root detection in this app?
https://www.apkmirror.com/apk/appli...elease/app-cloner-1-5-2-android-apk-download/
Click to expand...
Click to collapse
What part of the guide didn't work for you? I'm assuming you're not using magisk?
Zackptg5 said:
What part of the guide didn't work for you? I'm assuming you're not using magisk?
Click to expand...
Click to collapse
I can't find anything like superuser or supersu inside apk.
Probably wants LP support. Don't bother.
Maadhaar app
Can you please remove the root detection of maadhaar app https://play.google.com/store/apps/details?id=in.gov.uidai.mAadhaarPlus
And upload it for me.
Thanks in advance.
prabhatpatel93 said:
Can you please remove the root detection of maadhaar app https://play.google.com/store/apps/details?id=in.gov.uidai.mAadhaarPlus
And upload it for me.
Thanks in advance.
Click to expand...
Click to collapse
Nope. Reread the OP again. I made it clear why posting modified apks here is a bad idea. This is also a guide so you can do it yourself not a place for ppl to request me to do it for them. This is a developers forum. Now if you were trying to follow the guide and got stuck on something I'd be happy to help. That's what this forum is all about
Its a DIY thread, people arent supposed to ask for modded apks, that'd be illegal
@Zackptg5 nice guide brother, it'd be fun to try it out
@Zackptg5
i Have tried ,but got this error
---------------------------
Decompile failed. Please check the log
Try clear framework if you got decompile error often
---------------------------
OK
---------------------------
@Zackptg5
Hey, do you know other methods banking apps use to detect root? I use a banking app called DnB that somehow detect root but there is no devicerootchecker file there, they have an another app that has that file and I have managed to stop it from detection root but this one I don't understand? Any help would be appreciated.
Dns94 said:
@Zackptg5
Hey, do you know other methods banking apps use to detect root? I use a banking app called DnB that somehow detect root but there is no devicerootchecker file there, they have an another app that has that file and I have managed to stop it from detection root but this one I don't understand? Any help would be appreciated.
Click to expand...
Click to collapse
Did you follow the instructions on the OP? The smali file can be named whatever they want and in many cases, the apk may be obfuscated so the smali file names don't even make sense (such as a.smali, b.smali, etc.). That's why I suggest using notepad++ or some other tool in which you can search all smali files for common root entries like supersu or superuser
Check smali/com/dynatrace/android/agent/RootDetector.smali
Zackptg5 said:
Did you follow the instructions on the OP? The smali file can be named whatever they want and in many cases, the apk may be obfuscated so the smali file names don't even make sense (such as a.smali, b.smali, etc.). That's why I suggest using notepad++ or some other tool in which you can search all smali files for common root entries like supersu or superuser
Check smali/com/dynatrace/android/agent/RootDetector.smali
Click to expand...
Click to collapse
Oh my... Im so stupid, I used Notepad++ but I used it wrongly (used windows explorer to find smali file,then use N++ to edit *facepalm*) , the other app I managed to modify looked exactly as your screenshots so it was easy to modify that one, but this was a bit different, anyways back to the problem I did find it under "smali/com/dynatrace/android/agent/RootDetector.smali", but there isnt any "const-strings" to edit there. What do I do then?
Dns94 said:
Oh my... Im so stupid, I used Notepad++ but I used it wrongly (used windows explorer to find smali file,then use N++ to edit *facepalm*) , the other app I managed to modify looked exactly as your screenshots so it was easy to modify that one, but this was a bit different, anyways back to the problem I did find it under "smali/com/dynatrace/android/agent/RootDetector.smali", but there isnt any "const-strings" to edit there. What do I do then?
Click to expand...
Click to collapse
Looks like this one won't be as straightforward as USAA. You'll need to do some outside the box thinking now. So you could search the apk for any instances of "RootDetector" to see how it's used. I found 1 entry in smali_classes2/com/dynatrace/android/agent/metrics/AndroidMetrics.smali
This makes it easier since we only have 1 place to look:
Code:
invoke-static {}, Lcom/dynatrace/android/agent/RootDetector;->isDeviceRooted()Z
move-result v0
iput-boolean v0, p0, Lcom/dynatrace/android/agent/metrics/AndroidMetrics;->deviceRooted:Z
new-instance v0, Ljava/lang/StringBuilder;
So it appears that it calls the isDeviceRooted function in the RootDetector.smali (which in turn calls the other functions in that file) and assigns the value to v0. The functions runs either 0 or 1 ultimately. I'd suggest trying to set the value to 0 first, and if that doesn't work, 1. Easiest way I can think of doing this would be to change the
Code:
move-result v0
line to
Code:
const/4 v0, 0x0
in the AndroidMetrics file.
So try making that one line change and see what happens. To change it to 1, just change the 0x0 to 0x1. It looked like a lot of this is outputted to the log too so following the logcat might help
Zackptg5 said:
Looks like this one won't be as straightforward as USAA. You'll need to do some outside the box thinking now. So you could search the apk for any instances of "RootDetector" to see how it's used. I found 1 entry in smali_classes2/com/dynatrace/android/agent/metrics/AndroidMetrics.smali
This makes it easier since we only have 1 place to look:
Code:
invoke-static {}, Lcom/dynatrace/android/agent/RootDetector;->isDeviceRooted()Z
move-result v0
iput-boolean v0, p0, Lcom/dynatrace/android/agent/metrics/AndroidMetrics;->deviceRooted:Z
new-instance v0, Ljava/lang/StringBuilder;
So it appears that it calls the isDeviceRooted function in the RootDetector.smali (which in turn calls the other functions in that file) and assigns the value to v0. The functions runs either 0 or 1 ultimately. I'd suggest trying to set the value to 0 first, and if that doesn't work, 1. Easiest way I can think of doing this would be to change the
Code:
move-result v0
line to
Code:
const/4 v0, 0x0
in the AndroidMetrics file.
So try making that one line change and see what happens. To change it to 1, just change the 0x0 to 0x1. It looked like a lot of this is outputted to the log too so following the logcat might help
Click to expand...
Click to collapse
Thank you so much for your help, but it seems that I cannot compile it back since it uses "AndResGuard" thing, so I cannot test wether it worked or not. As you might have noticed I have almost no clue what I am doing and this is getting too complicated it seems, or I am a complete moron. Anyways dont wanna waste time. Again thanks!
@Zackptg5 I'm using phh treble 9.0 and it doesn't allow me to use magisk. I'm trying to use Snapchat but it gives me a login error. I tried following your guide but I can't get the darn thing to decompile. Is there any way possible you can remove them for me? I would greatly appreciate it.
https://download.apkpure.com/b/apk/...AlMjBJbmMmdD1hcGsmdm49MTAuNTIuMy4wJnZjPTE5MDk
Donavonn said:
@Zackptg5 I'm using phh treble 9.0 and it doesn't allow me to use magisk. I'm trying to use Snapchat but it gives me a login error. I tried following your guide but I can't get the darn thing to decompile. Is there any way possible you can remove them for me? I would greatly appreciate it.
https://download.apkpure.com/b/apk/...AlMjBJbmMmdD1hcGsmdm49MTAuNTIuMy4wJnZjPTE5MDk
Click to expand...
Click to collapse
Nope but I got it (https://www.apkmirror.com/apk/snap-inc/snapchat/snapchat-10-52-3-0-release/) to decompile no problem with apk easy tool (https://forum.xda-developers.com/an...tool-apk-easy-tool-v1-02-windows-gui-t3333960)
Zackptg5 said:
Nope but I got it (https://www.apkmirror.com/apk/snap-inc/snapchat/snapchat-10-52-3-0-release/) to decompile no problem with apk easy tool (https://forum.xda-developers.com/an...tool-apk-easy-tool-v1-02-windows-gui-t3333960)
Click to expand...
Click to collapse
That's the tool I used but when I clicked decompile it gave me some error about framework? I don't know the exact error cause I'm at work on my phone. I did try installing the framework in the requirements but during installation it said I had it installed already.
Donavonn said:
That's the tool I used but when I clicked decompile it gave me some error about framework? I don't know the exact error cause I'm at work on my phone. I did try installing the framework in the requirements but during installation it said I had it installed already.
Click to expand...
Click to collapse
You'll want to clear all framework cache and start clean
I get this instead of RootedDeviceChecker and I have no idea what am I supposed to do...
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali\softax\hce\feedback\HceFeedbackReceiverTransaction$TRANSACTION_RESULT.smali (5 hits)
Line 43: .field public static final enum DEVICE_PROBABLY_ROOTED:Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;
Line 294: const-string v1, "DEVICE_PROBABLY_ROOTED"
Line 300: sput-object v0, Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;->DEVICE_PROBABLY_ROOTED:Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;
Line 534: sget-object v1, Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;->DEVICE_PROBABLY_ROOTED:Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;
Line 704: sget-object p0, Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;->DEVICE_PROBABLY_ROOTED:Lsoftax/hce/feedback/HceFeedbackReceiverTransaction$TRANSACTION_RESULT;
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali\softax\hce\feedback\NativeFeedbackCard.smali (3 hits)
Line 263: sget-object v2, Lsoftax/hce/feedback/HceFeedbackReceiverCard;->onHceClearOnRooted:Lsoftax/hce/property/Event;
Line 265: new-instance v3, Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRooted;
Line 267: invoke-direct {v3, v0, v1}, Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRooted;-><init>(Lsoftax/hce/feedback/HceFeedbackReceiverCard;Lsoftax/hce/feedback/OPERATION_RESULTV
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\bcu.smali (5 hits)
Line 100: "Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRooted;",
Line 166: sget-object v0, Lsoftax/hce/feedback/HceFeedbackReceiverCard;->onHceClearOnRooted:Lsoftax/hce/property/Event;
Line 1773: .method public a(Ljava/lang/Object;Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRootedV
Line 3664: invoke-static {}, Lsoftax/hce/core/HceControl03;->systemIsProbablyRooted()Z
Line 3681: invoke-static {}, Lsoftax/hce/core/HceControl03;->systemIsProbablyRootedMethods()Ljava/lang/String;
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\bcv.smali (5 hits)
Line 10: "Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRooted;",
Line 47: .method public a(Ljava/lang/Object;Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRootedV
Line 63: invoke-virtual {v0, p1, p2}, Liko/bcu;->a(Ljava/lang/Object;Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRootedV
Line 84: check-cast p2, Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRooted;
Line 86: invoke-virtual {p0, p1, p2}, Liko/bcv;->a(Ljava/lang/Object;Lsoftax/hce/feedback/HceFeedbackReceiverCard$HceFeedbackDataHceClearOnRootedV
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\bdb.smali (2 hits)
Line 100: const-string v1, ", probablyRooted="
Line 108: const-string v1, ", probablyRootedMethods=\'"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\eby$a.smali (1 hit)
Line 55: const-string v1, "DEVICE_ROOTED"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\efs.smali (1 hit)
Line 166: const-string v0, "Device is considered as rooted or downgrade was detected"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\efw$a.smali (1 hit)
Line 53: const-string v1, "ROOTED"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\ega.smali (2 hits)
Line 47: const-string p0, "Trying to init profile in rooted mode"
Line 62: const-string v0, "Error while performing profile init in rooted mode"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\egq.smali (7 hits)
Line 24: const-string v0, "Should not update profile on rooted device"
Line 49: const-string v1, "Should not read settings on rooted device"
Line 66: const-string v0, "Should not modify settings on rooted device"
Line 79: const-string v0, "Should not modify settings on rooted device"
Line 100: const-string v0, "Should not modify settings on rooted device"
Line 121: const-string v0, "Should not modify settings on rooted device"
Line 142: const-string v1, "Should not touch set default service on rooted device"
D:\PROGRAMY\Android\APK Tool\1-Decompiled APKs\base\smali_classes2\iko\egs$a.smali (1 hit)
Line 51: const-string v1, "ROOTED"
Dns94 said:
@Zackptg5
Hey, do you know other methods banking apps use to detect root? I use a banking app called DnB that somehow detect root but there is no devicerootchecker file there, they have an another app that has that file and I have managed to stop it from detection root but this one I don't understand? Any help would be appreciated.
Click to expand...
Click to collapse
Hi, I suggest you Dex2jar to convert ” .dex” files to “.class” files and then use JD-GUI tool to read the jar file and use search function to search for any string in all the files. Then, follow the instructions from the post.
https://java-decompiler.github.io/
https://github.com/pxb1988/dex2jar/blob/2.x/README.md

Categories

Resources