[APP][MOD] ES File Explorer with Systemless Root Support

Status
Not open for further replies.
Search This thread

Strephon Alkhalikoi

Senior Member
Aug 3, 2010
6,982
3,208
223
Vulcan
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.

Code:
    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.

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
 
Last edited:

Silly22

Member
Feb 10, 2008
42
15
28
Awesome! Thanks for your work and insight! I'll use your v4.0.2.2 apk even though I was previously using v4.0.2.3 on my old device with traditional system root. That was the last version before ES "sold" the app.

I'll have to try this decompile, edit smali, recompile, and sign myself one day because your solution does seem to be the best method. It means we don't have to fake SuperSU compatiblity mode "BINDSYSTEMXBIN=true" which would break Android Pay.
 
  • Like
Reactions: carlosggb

Strephon Alkhalikoi

Senior Member
Aug 3, 2010
6,982
3,208
223
Vulcan
9/16 Update: The method used to enable systemless root support has changed from simply adding the requisite entries, which apparently renders the /sbin/su path unusable, to replacing the entire hard-coded array with the updated version used in the later apps. See the tutorial for particulars. The APK files themselves have been updated.
 
  • Like
Reactions: carlosggb

Strephon Alkhalikoi

Senior Member
Aug 3, 2010
6,982
3,208
223
Vulcan
*Gives the thread a hip check into the boards*

9/22 Update: APKs updated with Magisk support. The app should now support all three systemless superuser implementations. System root is no longer supported in the modified apps, so untouched versions of the original apps - re-signed of course - are available in the Download tab.
 

t3ch42

Senior Member
Aug 15, 2012
108
26
48
Thanks for refreshing a once great app and making it relevant and usable. Do you have any suggestions for updating the app for use with Android 7.1? Both of your versions work well, but crash when "sending" files from one device to another. I believe this to be the case with released recent versions too.
Would be great to have a fixed version working on nougat.
Thanks again.
 

Strephon Alkhalikoi

Senior Member
Aug 3, 2010
6,982
3,208
223
Vulcan
Thanks for refreshing a once great app and making it relevant and usable. Do you have any suggestions for updating the app for use with Android 7.1? Both of your versions work well, but crash when "sending" files from one device to another. I believe this to be the case with released recent versions too.
Would be great to have a fixed version working on nougat.
Thanks again.
I don't use those features so I can't provide any suggestions. I'm inclined to believe it is something ES App Group hasn't bothered to fix in their push to bloat the thing and turn it into malware.
 

t3ch42

Senior Member
Aug 15, 2012
108
26
48
Thanks for responding. The app is a lot more useful and trustworthy on these versions. I truly commend you for the modifications.
I find the "send" function useful as I can set up a new device pretty quickly or send something between devices or the firetv pretty easily. Unfortunately, this is broken for the Nougat version. Just from looking at some logs and bug fix requests, it seems that this is still broken in the latest bloated malware release that the ES app group have submitted.
I don't know anything about modifying apps, but it seems like a trust issue with the new is version.
Thanks again for the apps, they give hope for useful and relevant tools.
 

Mesmurized

Senior Member
Nov 16, 2013
651
304
0
[*]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.
Thanks for this. Can you explain why Pro is excluded from the uninstall requirement?
 

TiVa

Senior Member
Apr 11, 2013
287
163
0
I stumbled on this topic very late, but you, sir, are my hero!!

I was working with a re-signed version myself but was working with the echo bind thingy, but this is so much cleaner!

I found this topic with google as I decompiled es file explorer myself and found the m.smali direct links to the su directory, but didn't knew which paths to set to fix the issue. Thank you so much for your work!
 
Last edited:

Mesmurized

Senior Member
Nov 16, 2013
651
304
0
@Strephon Alkhalikoi Request: Is it possible to remove the 'call home' activity from the latest 3.2.5.5 versions? Note: All potential network activity options were disabled in Settings before testing (I hope :) )

My testing (using AFWall blocking all internet activity) shows: 16 attempts in 5 min to access/contact Baidu Netcom and China Unicom IP's on ports 80-http and 5353-multicast. IP addresses: 103.235.46.149 and .156, 104.193.88.79, 123.125.114.8, 239.2.0.251 and .252

Thanks for your support,
Mes
 

Strephon Alkhalikoi

Senior Member
Aug 3, 2010
6,982
3,208
223
Vulcan
You may or may not know this, but on Reddit this was discussed in 2015. According to the official response to the question on HowardForums, "Thank you for your feedback. We use a third party Statistic module provided by Baidu it just counts user numbers anonymously and won't collect any user info. You might read our privacy policy from settings." (Source: HowardForums)

Now, while I can understand the concern given the latest versions of ES are the pits, I personally wouldn't lose too much sleep over this. In the meantime, if you wish to prevent ES from phoning home, your options are to block ES File Explorer in a firewall, or if rooted, install AdAway and add Baidu to its blacklist. When I have a spare moment, I will look at the code and see what I can do to eliminate the issue.
 
Last edited:
  • Like
Reactions: suvam69

Mesmurized

Senior Member
Nov 16, 2013
651
304
0
You may or may not know this, but on Reddit this was discussed in 2015. ...

Now, while I can understand the concern given the latest versions of ES are the pits, I personally wouldn't lose too much sleep over this. In the meantime, if you wish to prevent ES from phoning home, your options are to block ES File Explorer in a firewall, or if rooted, install AdAway and add Baidu to its blacklist. When I have a spare moment, I will look at the code and see what I can do to eliminate the issue.
I searched XDA but forgot reddit. Oops. I'm using AFWall now to block. That's how I noticed the activity. :)

No pressure or hurry. Look around when you get time.

Thanks,
Mes
 
  • Like
Reactions: tumtle13
Status
Not open for further replies.

Top Liked Posts

  • There are no posts matching your filters.
  • 41
    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.

    Code:
        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.

    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
    2
    Greeeat!! Thank you sooo much! :)
    This is exactly what i was looking for, now i'm able to create folders on microSD in MIUI 9, with Magisk-rooted
    Android.
    And i wasn't able to imagine using the phone without the ES File Explorer. So - may fortune be with you :)
    2
    @Silly22: 4.0.2.3 has a "suggested apps" bar in the app backup feature not found in 4.0.2.2. 3.2.5.5 was the last version by EStrongs.

    Not breaking Android Pay is a nice side effect.
    2
    *Gives the thread a hip check into the boards*

    9/22 Update: APKs updated with Magisk support. The app should now support all three systemless superuser implementations. System root is no longer supported in the modified apps, so untouched versions of the original apps - re-signed of course - are available in the Download tab.
    2
    Download tab?

    Sent from my SM-N920P using Tapatalk
    Gotta use your browser at the top of OP you'll see a black header with 4 different tabs

    Sent from my SM-N915P using XDA-Developers mobile app
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone