吾爱破解安卓逆向入门教程学习心得(1-4)

b站视频链接:https://www.bilibili.com/video/BV1wT411N7sV/?vd_source=f767aeec67fd5d5cc2f6ff3e890917d0

一.环境搭建

源帖:https://www.52pojie.cn/thread-1695141-1-1.html
下载个雷电模拟器,MT管理器,NP管理器
将MT管理器,NP管理器拖到雷电
相关软件地址https://www.aliyundrive.com/s/TJoKMK6du6x
接着在雷电开启root然后重启
在这里插入图片描述
具体配置的步骤请看源帖https://www.52pojie.cn/thread-1695141-1-1.html

二、初识APK文件结构、双开、汉化、基础修改

源帖:https://www.52pojie.cn/thread-1695796-1-1.html
1.APK的文件结构(从源帖截的)
在这里插入图片描述
2.双开
在这里插入图片描述在视频里面学到了利用mt管理器的apk共存
在这里插入图片描述
在这里插入图片描述
这里就是通过修改包名达到双开

3.汉化

这里需要用到mt管理器
先调一下分辨率,不然软件布局会很乱
在这里插入图片描述

将课件中给到的demo打开,这是挑战的第一关
在这里插入图片描述
先用mt管理器的安装包提取
在这里插入图片描述
然后点进去安装包搜索hello
在这里插入图片描述
搜到了点进去看
在这里插入图片描述
到这一步反编译卡住了没关系,可以去np管理器通过文件路径找到这个文件(或者直接充会员)
开始编辑
在这里插入图片描述
搜到这个字符串直接改
在这里插入图片描述
在这里插入图片描述

然后保存退出自动签名

接下来再找下一串字符串,一堆俄语不会写
这时候再用到课件里的开发者助手,授予root权限
之后会悬浮窗出现在左上位置
打开软件,界面分析点击开始
在这里插入图片描述
然后点击要翻译的那串俄文
在这里插入图片描述
然后复制
回到MT管理器搜索
在这里插入图片描述
点进去再搜索
在这里插入图片描述
在这里插入图片描述
跟进
在这里插入图片描述
修改这串字符串就好了
在这里插入图片描述
保存退出 Reverse determines height,
development determines depth.
第三串字符串也是同理

安装时出现这种情况
在这里插入图片描述
直接安装会安装失败
这里点确定先卸载
然后接着安装
修改成功
在这里插入图片描述
还要替换图片
(这个貌似没讲,讲了当我没说)
关于图片这种静态资源,需要找res目录
在这里插入图片描述
这里随便翻个图片,然后改成一样的名字cf.jpg
在这里插入图片描述
在这里插入图片描述
之后安装
安装成功(安装成功的原因应该是签名一样)
在这里插入图片描述
看看效果
在这里插入图片描述

4.修改图标和软件名

这里用np管理器更方便
点功能
在这里插入图片描述
然后这里有个通用编辑的功能
在这里插入图片描述
这里就正常改就可以
在这里插入图片描述
在这里插入图片描述
安装成功
在这里插入图片描述

三、初识smali,vip终结者

源帖:https://www.52pojie.cn/thread-1701353-1-1.html

先把核心破解导入,会出现这种弹窗
在这里插入图片描述
点进去然后启用页面选择系统框架,之后退出重启模拟器
在这里插入图片描述
记得把这个勾上
在这里插入图片描述
点进demo看一下,说要冲会员
在这里插入图片描述
我们用jadx-gui打开,搜索大会员
在这里插入图片描述点进去看一下java函数

 public static final void m456onCreate$lambda1(ChallengeSecond challengeSecond, View view) {
    
    
        Toast.makeText(challengeSecond, "请长按完成一键三连", 1).show();
    }

    /* renamed from: onCreate$lambda-2 */
    public static final boolean m457onCreate$lambda2(Ref.IntRef intRef, ChallengeSecond challengeSecond, ImageView imageView, ImageView imageView2, ImageView imageView3, View view) {
    
    
        if (intRef.element < 10) {
    
    
            Toast.makeText(challengeSecond, "请先获取10个硬币哦", 1).show();
        }
        if (challengeSecond.isvip()) {
    
    
            ChallengeSecond challengeSecond2 = challengeSecond;
            Toast.makeText(challengeSecond2, "当前已经是大会员了哦!", 1).show();
            imageView.setImageResource(R.mipmap.zan_active);
            imageView2.setImageResource(R.mipmap.coin_active);
            imageView3.setImageResource(R.mipmap.collect_active);
            SPUtils.INSTANCE.saveInt(challengeSecond2, "level", 2);
        } else {
    
    
            Toast.makeText(challengeSecond, "请先充值大会员哦!", 1).show();
        }
        return true;
    }
}

看起来还要获取10个硬币,还有一个isvip方法判定
看一下smali
在这里插入图片描述可以看到这里没有汉字,这里把大会员转成unicode编码\u5927\u4f1a\u5458
这时候可以看到
在这里插入图片描述这时候再更省事一点,用MT管理器搜大会员
在这里插入图片描述
在这里插入图片描述
先搬个图来
在这里插入图片描述

分析一波关键代码

const/4 p5, 0x1

    const/16 v0, 0xa  #a转十进制就是10

    if-ge p0, v0, :cond_15  #p0是读取获取硬币的数量,若p0>=v0跳转到cond15

    .line 34
    move-object p0, p1

    check-cast p0, Landroid/content/Context;

    const-string v0, "请先获取10个硬币哦"

    check-cast v0, Ljava/lang/CharSequence;

    invoke-static {
    
    p0, v0, p5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

    move-result-object p0

    invoke-virtual {
    
    p0}, Landroid/widget/Toast;->show()V

    .line 36
    :cond_15 #跳转的位置,下面调用isvip
    invoke-virtual {
    
    p1}, Lcom/zj/wuaipojie/ui/ChallengeSecond;->isvip()Z 

    move-result p0  #isvip判定后返回结果到p0

    if-eqz p0, :cond_43  #若p0等于0,跳转cond43,说明没激活大会员


    .line 37
    check-cast p1, Landroid/content/Context;

    const-string p0, "当前已经是大会员了哦!"
    
    :cond_43
    check-cast p1, Landroid/content/Context;

    const-string p0, "请先充值大会员哦!"

    check-cast p0, Ljava/lang/CharSequence;

改一下关键的逻辑就可以了
根据视频介绍有三种
在这里插入图片描述

1.修改判断

修改if-ge为if-le,if-le就是p0<=v0发生跳转,硬币这里通过后
在这里插入图片描述
接着是大会员,将判断函数注释掉就不会发生跳转
在这里插入图片描述
安装查看结果,成功
在这里插入图片描述

2.强制跳转

先在这里设置一个跳转点,相当于直接跳过硬币和会员判定
在这里插入图片描述
再设置一个强制跳转
在这里插入图片描述
也是可以
看了视频跟我的有点不一样
他是把判定直接改成强制跳转,然后把会员那边给注释掉
在这里插入图片描述

3.修改寄存器的值

把这个要求达到的硬币数量改成0,同样注释掉会员判定
在这里插入图片描述

四、恭喜你获得广告&弹窗静默卡

源帖:https://www.52pojie.cn/thread-1706691-1-1.html
第四关是三秒广告,一个更新弹窗,两个广告弹窗,还有一条横幅弹窗

1.修改广告显示时间

先看这个三秒广告
在这里插入图片描述
这里需要用到MT管理器的activity记录,然后启动服务
在这里插入图片描述
切到广告页面,可以看到记录到了adactivity
在这里插入图片描述
切回MT停止服务然后复制,接着点进class.dex搜索
在这里插入图片描述
在这里插入图片描述
可以看到只有一个,点进去
在这里插入图片描述

转成java代码(没会员可以用np管理器来看)
在这里插入图片描述
就看loadAd(),这里设置的3000ms就是3秒,
接下来点这个导航按钮,或者直接搜loadAd
在这里插入图片描述
点进loadAd,可以看到这里有个0xbb8转十进制就是3000,把这个改成0x0就可以了
在这里插入图片描述
在这里插入图片描述
保存安装,3秒广告这边已经没了,直接是更新
在这里插入图片描述
其实用activity记录看一下,这里adactivity还是有的,只不过改成0显示时间短了
在这里插入图片描述

2.修改xml中的versiocode(更新弹窗)

这里是针对更新弹窗,
点进这个xml看一下
在这里插入图片描述
可以看到版本号是1,需要改成更高版本的,这里就假设改成2
在这里插入图片描述
在这里插入图片描述
保存退出看一下效果,更新弹窗没了
在这里插入图片描述

3.修改广告弹窗

(1)用算法助手屏蔽关键词弹窗

安装算法助手,并如下图设置
在这里插入图片描述
之后进入算法助手,点wuaipojie
在这里插入图片描述
应用总开关打开,弹窗定位跟屏蔽打开
在这里插入图片描述
在这里插入图片描述
屏蔽打开时,设置关键词,中间要用英文逗号隔开
在这里插入图片描述
然后三角号运行
在这里插入图片描述
看一下效果,更新和广告弹窗都没了
在这里插入图片描述

(2)修改dex弹窗代码(只针对广告弹窗)

这里还是要用到算法助手
如下设置,然后运行
在这里插入图片描述
在这里插入图片描述
看一下广告弹窗,看完后回到算法助手
在这里插入图片描述
点进去看一下
在这里插入图片描述
点进第一个查看
在这里插入图片描述
这里的堆栈可以理解为逻辑执行的顺序,我们复制这个,到dex里面查找
在这里插入图片描述
点进这个看一下
在这里插入图片描述
可以看到关键词
在这里插入图片描述
这里搜一下show(),(像show()这种方法就是显示弹窗的)
在这里插入图片描述
这里面总共有两个show方法,把这一行注释掉
这是一号弹窗
在这里插入图片描述
这是二号弹窗
在这里插入图片描述
保存重新安装,现在只剩下横幅广告了
在这里插入图片描述

4.去除横幅广告

这里用到开发助手(注:不是开发者助手)
点一下布局查看
在这里插入图片描述
回到横幅广告处,点一下放大镜
在这里插入图片描述
点横幅
在这里插入图片描述
看第一个
在这里插入图片描述
复制id
在这里插入图片描述
用xml搜索
在这里插入图片描述
这里搜索注意把0x删掉
在这里插入图片描述
在这里插入图片描述
点进去没有找到id
在这里插入图片描述
这里把id转名称关掉就可以看到了
在这里插入图片描述
在这里插入图片描述
具体看一下

  <ImageView
                    android:id="@7f0801ca"   #图片id
                    android:background="@7f0d0017"
                    android:layout_width="wrap_content"    #图片宽度为自适应
                    android:layout_height="150dp"          #图片高度为150dp
                    android:layout_marginTop="100dp" />

我们只需要把宽度和高度改成0dp就可以了
在这里插入图片描述
保存重新安装查看效果,搞定!!!

猜你喜欢

转载自blog.csdn.net/m0_51295934/article/details/129987464