[Android Apps and Games] Strephon Alkhalikoi:
9/22 UPDATE: Now includes support for Magisk as well as supporting SuperSU systemless and phh Superuser/seSuperuser. To do this the system root paths were edited, thus these apps no longer support root options embedded in system. Since this primarily affects Cyanogenmod users the download page now includes copies of ES File Explorer 3.2.5.5 and 4.0.2.2 without any modifications at all, except for being re-signed with my app signature to prevent them from updating.

---------------------------------------------------------

Something I've been noticing sitewide is that users of ES File Explorer were having difficulty with systemless root. Current versions of ES File Explorer do have systemless support, however they still are a bloated, ruined mess with the potential of adding malware in the future. The versions available in this thread are the last version offered by EStrongs before selling the app to ESGlobal (v. 3.2.5.5) and the last version by ESGlobal (v. 4.0.2.2) that allowed the end user to delete the accursed home page, didn't have any app advertisements, needless bloat, or malware.

The entire problem stems from the fact that the various paths to the superuser binary are hard-coded as an array in the java code. While temporary solutions have been proposed, such as copying the su binary and its support files to the /system partition, or enabling SuperSU's app compatibility function, the best fix is to decompile the app, edit the m.smali file in /smali/com/estrongs/fs/impl/local, and add in the systemless paths.

If you want to read the brief tutorial, hit the button below. Otherwise, read on.

Find the array in m.smali. The code snippet is below.

const/4 v0, 0x5

new-array v4, v0, [Ljava/lang/String;

const-string/jumbo v0, "/system/xbin/su"

aput-object v0, v4, v1

const-string/jumbo v0, "/system/sbin/su"

aput-object v0, v4, v2

const-string/jumbo v0, "/system/bin/su"

aput-object v0, v4, v3

const-string/jumbo v0, "/vendor/bin/su"

aput-object v0, v4, v6

const-string/jumbo v0, "/sbin/su"

aput-object v0, v4, v7

const/4 v0, 0x5

new-array v5, v0, [Ljava/lang/String;

const-string/jumbo v0, "/system/xbin/daemonsu"

aput-object v0, v5, v1

const-string/jumbo v0, "/system/sbin/daemonsu"

aput-object v0, v5, v2

const-string/jumbo v0, "/system/bin/daemonsu"

aput-object v0, v5, v3

const-string/jumbo v0, "/vendor/bin/daemonsu"

aput-object v0, v5, v6

const-string/jumbo v0, "/sbin/daemonsu"

aput-object v0, v5, v7

move v0, v1

Replace the entire array with the following code.

const/4 v0, 0x5

new-array v4, v0, [Ljava/lang/String;

const-string/jumbo v0, "/su/bin/su"

aput-object v0, v4, v1

const-string/jumbo v0, "/magisk/.core/bin/su"

aput-object v0, v4, v2

const-string/jumbo v0, "/magisk/phh/bin/su"

aput-object v0, v4, v3

const-string/jumbo v0, "/vendor/bin/su"

aput-object v0, v4, v6

const-string/jumbo v0, "/sbin/su"

aput-object v0, v4, v7

const/4 v0, 0x5

new-array v5, v0, [Ljava/lang/String;

const-string/jumbo v0, "/su/bin/daemonsu"

aput-object v0, v5, v1

const-string/jumbo v0, "/magisk/.core/bin/daemonsu"

aput-object v0, v5, v2

const-string/jumbo v0, "/magisk/phh/bin/daemonsu"

aput-object v0, v5, v3

const-string/jumbo v0, "/vendor/bin/daemonsu"

aput-object v0, v5, v6

const-string/jumbo v0, "/sbin/daemonsu"

aput-object v0, v5, v7

move v0, v1

Testing on my Nexus 6 using SuperSU was successful. Testing on a Galaxy Note 4 running Magisk was also successful. seSuperuser/phh Superuser should function but it is untested. Device owners with seSuperuser/phh Superuser are more than welcome to post their results here.

I did this because I need the app backup feature. While other apps are out there that can backup apps and data, none of them work as well in my mind as ES File Explorer. So after modifying the smali code, I re-signed the apps using my personal certificate. I don't know about anyone else, but with the new owner throwing malware into the app I don't want the app automatically upgrading itself. Re-signing the app should take care of that.

To distinguish the systemless apps from the originals, when recompiling the apps I appended an "s" to the version number, with "s" standing for "systemless". While I personally use version 4.0.2.2, I know a lot of people still prefer version 3.2.5.5, so I have provided links to both. Please keep in mind however the following.

Due to the smali code editing as well as the version number change and the replaced signature, anti-malware apps on devices will flag these apps as a false positive. Both versions were flagged on my Nexus 6 and my Galaxy S4, both of which were running Avast. These versions of the app predates ESGlobal adding app advertisements and malware to the app, thus the warning can be safely ignored.

It's required to uninstall any other version of ES File Explorer (except Pro) before installing a copy of the apps provided here. This is because the changed app signature will prevent the app from successfully installing.

Should you wish to make the edits yourself, either because of a lack of trust or a desire to use a different version than what is available in this thread, untouched versions can be found at apkmirror.com.

Downloads

ES File Explorer 4.0.2.2 Systemless

ES File Explorer 4.0.2.2

ES File Explorer 3.2.5.5 Systemless

ES File Explorer 3.2.5.5

XDA:DevDB Information

ES File Explorer Systemless, App for the Apps & Games

Contributors

Strephon Alkhalikoi

Version Information

Status: No Longer Updated

Created 2016-07-02

Last Updated 2016-09-23