【更新】梦绘界 漫画软件去除签名校验+解锁

查看 103|回复 10
作者:芽衣   
一直在用的漫画软件,但是不知道为什么总是改名。已经不知道是第几个了,今天突然更新猝不及防。
之前下载的是别人的修改版,自己动手时发现一键过签失败,只好上电脑分析了。

(久不发帖已经不知道怎么写了。。。
包名:com.mhj.menghuijie,版本1.0.0
使用64位so和ida。去广告比较简单,我直接用幸运破解器生成去广告的APK,这类都有固定方案,手动太麻烦了。屏蔽广告后的应用打开速度有了一些提升。

一、去除签名保护


Screenshot_2024-11-24-22-01-07-102_com.mhj.menghuijie-edit (2).jpg (108.45 KB, 下载次数: 1)
下载附件
2024-11-24 22:02 上传

虽然换了很多名字,但是这个界面一直没变,老司机应该知道这是什么漫画软件。
首先重签名,闪退。发现是so报错,定位到libfcore,用ida打开。还是老生常谈的方案,直接搜索signatures,有几个结果,随便一个都行,点进去。查看伪代码。


1.png (91.21 KB, 下载次数: 1)
下载附件
2024-11-24 22:06 上传

比较经典的获取签名值。上方有个pthread_create,创建了一个新的动作
sub_2A5B8
,经常搞破解的对这个应该比较熟悉,这个东西经常搞鬼搞怪。跟进sub_2A5B8。


2.png (70.48 KB, 下载次数: 1)
下载附件
2024-11-24 22:10 上传

不难发现它其实在获取安装包的安装路径,然后抽取签名值。所以用一键过签会失败,当然魔高一尺道高一丈,还是有强力过签工具可以解决这个问题的。
继续往下看。


3.png (56.26 KB, 下载次数: 0)
下载附件
2024-11-24 22:14 上传

这里有一个对比,就非常明显了。s1对比v62,不一样就给你卡死。解决方案也非常简单,给他自己对比自己就行。如下图,MOV X1, X20,改成MOV X1, X0。


4.png (101.08 KB, 下载次数: 0)
下载附件
2024-11-24 22:20 上传



5.png (53.32 KB, 下载次数: 0)
下载附件
2024-11-24 22:20 上传

二、解锁漫画
随便点开一个漫画,提示要看视频或者推广才给你阅读漫画。入手点就是这个提示框。观察到有“看视频解锁”和“去推广解锁”两个解锁方式,也是随便选一个。在dex中搜索相关字符串,看看有什么发现。
public ContinueReadDialog(Context context, j.a0.c.a[U] aVar, l lVar) {
        super(context, _Context.c(AppExt.a()) ? R$style.AppTheme_Dialog_Night : R$style.AppTheme_Dialog);
        j.e(context, "context");
        j.e(aVar, "cancelListener");
        j.e(lVar, "rewardVerify");
        this.f6388p = aVar;
        this.f6389q = lVar;
        AppConfig r2 = AppConfig.r();
        j.d(r2, "AppConfig.getAppConfig()");
        this.b = r2.p0();
        AppConfig r3 = AppConfig.r();
        j.d(r3, "AppConfig.getAppConfig()");
        boolean o0 = r3.o0();
        this.c = o0;
        if (o0 && this.b) {
            setContentView(R$layout.dialog_continue_read_with_popularize);
        } else {
            setContentView(R$layout.dialog_continue_read);
        }
        this.d = (SimpleTextView) findViewById(R$id.tv_look_video);
        this.e = (SimpleTextView) findViewById(R$id.tv_not);
        this.f6378f = (SimpleTextView) findViewById(R$id.tv_read_time);
        this.f6379g = (SimpleTextView) findViewById(R$id.tv_gold);
        this.f6380h = findViewById(R$id.ll_add_coins);
        if (this.c) {
            AppConfig r4 = AppConfig.r();
            j.d(r4, "AppConfig.getAppConfig()");
            String valueOf = String.valueOf(r4.F());
            SpannableString spannableString = new SpannableString("看视频解锁" + valueOf + "分钟阅读时间");
            spannableString.setSpan(new a(context), 5, valueOf.length() + 5, 33);
            SimpleTextView simpleTextView = this.f6378f;
            j.d(simpleTextView, "mTvReadTime");
            simpleTextView.setText(spannableString);
            SimpleTextView simpleTextView2 = this.f6378f;
            j.d(simpleTextView2, "mTvReadTime");
            simpleTextView2.setText("看视频可获得继续阅读资格");
            if (this.b) {
                a(R$id.tv_popularize, this);
            }
只有一个结果,点进去。代码片段如上。
然后看一下它是怎么跳下来的,根据跳转往上爬,找到根源。


1.png (102.17 KB, 下载次数: 0)
下载附件
2024-11-25 18:25 上传

发现它上面有个boolean类型的返回,根据smali代码可知来源于Lcom/junyue/repository/bean/AppConfig;->o0()Z,继续跳转到声明。


1.png (21.22 KB, 下载次数: 0)
下载附件
2024-11-25 18:30 上传

发现还有一个跳转。继续进入x0。这里就是对话框的开关。
public final boolean x0(int i2, j.a0.c.l lVar, boolean z, boolean z2, boolean z3) {
        AdInfo invoke;
        boolean z4 = false;
        z4 = false;
        z4 = false;
        z4 = false;
        z4 = false;
        z4 = false;
        if (z2 && z0()) {
            return false;
        }
        if (z && i0()) {
            return false;
        }
        AllAdConfig z5 = z();
        if (z5 != null) {
            try {
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            if (!z5.adSwitch) {
                return false;
            }
            long currentTimeMillis = System.currentTimeMillis() - App.r().getPackageManager().getPackageInfo(App.r().getPackageName(), 0).firstInstallTime;
            if (z3 && z5.installAfterAd != 0) {
                if (currentTimeMillis
修改方法也比较简单,代码开头进行了初始化。保留那一行就行了,其余全部删掉。
[Asm] 纯文本查看 复制代码.method public final x0(ILj/a0/c/l;ZZZ)Z
    .registers 11
    const/4 v0, 0x0
    return v0
.end method

下载次数, 下载附件

lmyx2008   

作业帮家长版能解吗?
guangdao321   


ltgb 发表于 2024-11-25 01:18
不是老司机 这是什么漫画软件

就是普通漫画,多个平台的都有,不是18X的。用起来挺方便的,图也比较清,流畅度不错。只是漫画后边章节常有一两张图会加载不了。毕竟都不花钱,能要求什么。
wwb66668   

沙发!感谢楼主的分享!!
fre1heit   

很有用!感谢楼主分享
lthink   

大佬,有没有成品,今天下了一个修改版,运行直接闪退
52pj01   

nb学习一下
ltgb   

不是老司机 这是什么漫画软件
maomaohu01   

nb,学习学习
Addioo   

厉害哦!这个漫画软件好用吗?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部