吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4569|回复: 26
收起左侧

[Android 原创] ESFileExplorer v4.2.8.1 解锁教程

[复制链接]
Forgo7ten2020 发表于 2022-1-9 17:53

ES FileExplorer解锁

效果展示

https://s2.loli.net/2022/01/09/Fs8NzK7cHZT43to.png
n2.png
n3.png

分析过程

会员功能解锁

分析

官网下载,没有加固

刚开始通过搜索vip,查找到了AccountInfo.toString方法

然后hook了getIsVip(),发现没有被调用。

image-20220109143829888.png

然后找一个触发vip开通的地方,来到了vip功能 侧边栏管理

开启monitor的Start Method Profiling功能,点击保存,跳转到了开通会员界面

此时停止记录,搜搜onClick

image-20220109144048736.png

前往查看

image-20220109144319810.png

前往a.H1()方法,H1直接调用了this.J1()方法,查看J1()

image-20220109144338972.png

发现有两个if判断,先查看最外层的if判断的else代码ChinaMemberActivity.x1(this, "nav_manage");;启动的正好是开通Vip的Activity

通过直接hook s()方法,返回true,确实未登录会员功能已经解锁,

主题按钮由【解锁】变为了【下载】;侧边栏管理旁的会员皇冠标志也消失不见

但是我还想追更深

于是前往c50.m().s()方法:return o.E0().r2();

前往o.E0().r2()方法:return this.p2();

前往p2()方法

public boolean p2(){
   return PreferenceManager.getDefaultSharedPreferences(FexApplication.o()).getBoolean(b50.d, false);
}

p2是使用getDefaultSharedPreferences取出了一个Boolean值,也就是将vip状态存在了SharedPreferences中,但是我使用grep找了并没有找到,可能是登录才会写入这些信息?没有登录测试

其中b50.d的值为

image-20220109144626867.png

同样找到了在p2同类的j4方法,这里将vip状态存入本地文件;hook了一下,没有被调用,可能登录才会调用吧

public void J4(boolean p0){
   PreferenceManager.getDefaultSharedPreferences(FexApplication.o()).edit().putBoolean("already_shown_register_dialog", p0).apply();
}

修改

Frida hook

所以说直接hook p2()方法返回true,即可

function main() {
    Java.perform(function () {
        Java.use("com.estrongs.android.pop.o").p2.implementation = function () {
            console.log("p2 hooked.");
            return true;
        };
    });
}

setImmediate(main);

image-20220109145120810.png

修改Smali
.method public p2()Z
    .locals 1
    const/4 v0, 0x1
    return v0
.end method

去除校验

分析

重新打包安装后提示盗版,同时会员失效

daoban.png

image-20220109151145363.png
找到这个弹窗来自pop.view.e

image-20220109151632823.png

hook这几个方法,打印栈回溯

发现正常的值为

e.c()  true
e.d()  false
e.e()  false
c3$a

而这几个方法都是由FileExplorerActivity$c3$a.run()方法调用的,e.c()也有utils.p.a()来调用

image-20220109153959997.png

可以看到验证了包名,或者e.c()==false都会执行FileExplorerActivity$c3$a$a.run()回调,而在这调用了e.f()方法弹出盗版弹窗

所以只要让e.c()恒为true即可去除盗版验证

e.c

e.c()调用了e.d(),若e.d()成立则直接返回true,不判断接下来的apk签名

e.d

e.d()在其中验证了一些android.os.Build的信息;若相同则不判断签名和包名直接返回true

验证的信息为

return Build.MANUFACTURER.equals("Amazon")  &&
    ( 
    Build.MODEL.equals("Kindle Fire") || Build.MODEL.startsWith("KF")
);
e.e

e.e()的返回值感觉并没有什么作用,先是查询本地SharedPreferences,查到了并且值通过验证就返回false,未查到就写入验证的值,然后返回true;感觉像是安装后判断第一次打开之类的

判断是否相等的值10141是版本号

public static String H1(Context p0){
   return PreferenceManager.getDefaultSharedPreferences(p0).getString("fex_version", "0");
}
public static void m5(Context p0,String p1){
   SharedPreferences$Editor uEditor = PreferenceManager.getDefaultSharedPreferences(p0).edit();
   uEditor.putString("fex_version", p1);
   uEditor.commit();
}

修改

e.c()和e.d() 任意一方法返回true即可,我这里就都改了

.method public static c()Z
    .locals 1
    const/4 v0, 0x1
    return v0
.end method

.method public static d()Z
    .locals 1
    const/4 v0, 0x1
    return v0
.end method

去除自动更新

其实可以通过开关自动检测来实现;还是禁止更新好,于是分析一下

先分析布局找到控件的资源ID

image-20220109161959607.png

根据ID找到弹出弹窗的方法为ec.m10.l()(更新数据解析类es.l10$b.b(JSONObject p0)),交叉引用找到ec.m10.c()方法

其中int i对应的是“upgrade_nat_error”,修改时候返回下面的upgrade_is_latest即可提示最新版

image-20220109163858577.png

修改

.method private static c(Landroid/app/Activity;ZZ)V
    .locals 1
    .annotation build Landroidx/annotation/UiThread;
    .end annotation

    const v0, 0x7f110c8c
    invoke-static {v0}, Lcom/estrongs/android/ui/view/v;->b(I)V
    return-void

.end method

这样每次都是弹出提示最新版了,缺点是没有找到真正发送更新信息的地方;抓包抓了一下,没有抓到版本请求,虽然仔细看了这个c方法没感觉有网络请求的操作……

打包完发现这个方法控制的是显示,上述那样改还是每次打开会弹出一个Toast。想关闭的话把下图中的自动检测关掉(因为每次打开都会检测新版本),或者上面修改的2678四行代码删掉就可以了,懒得搞了

img.png

去除百度广告

虽然会员已经没有广告了,但根据版规还是去除一下广告,搜索关键字发现了百度广告

根据芽衣大佬的方法【新手教程】安卓 穿山甲广告(字节跳动)、腾讯广告和百度广告 通用去除教程

image-20220109172021531.png

删除jar后,却找不到addEventListener()方法

image-20220109172308703.png

只好自力更生了

先删除assets/bdxadsdk.jar

然后去把两处调用删除

image-20220109172938998.png

看代码有异常捕获了,应该不出问题

然后把bdxadsdk.jar字符串都替换成了bdxadsdk_carck.jar(纯粹多此一举,打包完发现单词拼错了,,也没有改)

打包签名安装,MIUI12没有出问题

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
5omggx + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kaixianxian + 1 + 1 热心回复!
sunlei658 + 1 + 1 谢谢@Thanks!
skymailwu + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

torrent 发表于 2022-1-9 18:15
前排支持
erui 发表于 2022-1-9 18:42
gewei107 发表于 2022-1-9 19:46
a823123 发表于 2022-1-9 20:48
感谢分享
shys 发表于 2022-1-9 20:49
很直观 好文
Βigbang 发表于 2022-1-9 21:02
求成品谢谢楼主大大
小强007 发表于 2022-1-9 21:40
我在等个好心人
zxd6688 发表于 2022-1-9 22:02
很复杂,看的晕
lindamis 发表于 2022-1-9 23:00

感谢分享,收下了。学习一下,啥时候能达到楼主水平!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 23:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表