第八课、真实app去壳、去升级

第八课、真实app去壳、去升级

1、去壳

  • 1 frida-dexdump -U -f com.hello.qqc 全自动去壳
    • image-20230211212235416
  • 2 grep -ril "MainActivity" 搜索MainActivity在哪个dex中
    • image-20230211212251860

2、快速定位

  • 1 objection hook弹窗的几种方式
    • window
    • dialog
  • 2 android hooking watch class android.app.Dialog 查看源码进行尝试hook
  • 3 随便点击后发现被调用 大概是这个类 下面就是回溯调用栈
    • (agent) Hooking android.app.Dialog.setCancelable(boolean) 设置不可取消的api
  • 4 hook 这个方法看看调用栈
    • android hooking watch class_method android.app.Dialog.setCancelab
      le --dump-args --dump-backtrace --dump-return
    • image-20230211223359861
    • 结合静态jadx代码进行分析
    • image-20230211224108961

3、内存可视化漫游

  • 不确定找到的位置是不是要找的地方

    • 加载wallbreaker 回溯代码
    • plugin load /root/.objection/plugins/Wallbreaker
  • plugin wallbreaker   classdump                     看一个类的结构
    plugin wallbreaker   classsearch                   根据一个名字找一个接近的类
    plugin wallbreaker   objectdump                    看对象的实例的内容
    plugin wallbreaker   objectsearch                  找一个对象实例
    
    • plugin wallbreaker objectsearch cn.net.tokyo.ccg.ui.fragment.dialog.Update
      DialogFragment                                                                                                     
      [0x1dca]: UpdateDialogFragment{372b25e #1 UpdateDialogFragment}
      
    • image-20230211225016413

    • 可见即可得 得到内存地址

  • dump出这个实例

    • plugin wallbreaker objectdump --fullname 0x1dca
    • image-20230211225441982
    • 继续dump cn.net.tokyo.ccg.bean.VersionBean$Version a这个实例对象
    • image-20230211225559407
    • 找到确定就是这个代码的位置
  • android hooking watch class cn.net.tokyo.ccg.ui.fragment.dialog.UpdateDial
    ogFragment 看看调用栈

    • image-20230211230630393
    • image-20230211231107861
    • 调用了b
  • 目标是不要让这个窗口起来 就是看b代码逻辑让窗口不起来

  • 查看b的调用栈代码

    • android hooking watch class_method cn.net.tokyo.ccg.ui.fragment.dialog.Upd
      ateDialogFragment.b --dump-args --dump-backtrace --dump-return

    • image-20230211231434154

    • 发现是从MainActivity过来的

    • image-20230211231835108

    • 找到这个参数是versionbean的重载

    • @Override // b.a.a.a.d.b.z
        public void a(VersionBean.Version version, boolean z) {
            this.f1696a = version.url;
            if (version != null) {
                UpdateDialogFragment.b(version, z).show(getSupportFragmentManager(), UpdateDialogFragment.class.getSimpleName());
            }
        }
      
    • 修改这部分代码即可

4、定位代码思路

5、修改源码实现

  • 1、apktool 解包
  • 2、替换dex 修改文件名
  • 3、重打包 签名
  • 4、apktool 再次解包 修改smile代码
  • 5、重打包 签名
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值