• APP逆向案例之(二)对加固APP进行分析和破解


    说明:对加固APP进行分析和破解,对发现新版本提示关掉

    1、先对APP窗口类行进HOOK,确定窗口提示用的是那个类。

    android hooking watch class android.app.AlertDialog

    2、发现一个非常明显的函数 setCancelable

    objection -g com.hello.qqc explore -s "android.app.Dialog.setCancelable --dump-args --dump-backtrace --dump-return"

    3、接着发现另外函数进行HOOK

    objection -g com.hello.qqc explore -s "android hooking watch class_method cn.net.tokyo.ccg.ui.fragment.dialog.UpdateDialogFragment --dump-args --dump-backtrace --dump-return"

    4、到此追的差不多地方了,要去反编译去看看源代码,由于是加固的APP先用Frida-dexdump进行脱壳

    frida-dexdump -U -f com.fantua*********ujbk

     5、在所有dex文件中搜索UpdateDialogFragment 内容 最后查出在dessess03.dex中

    grep -ril "UpdateDialogFragment" ./*.dex

    6、用 jadx 工具打开这个 dessess03.dex 文件,搜索这个UpdateDialogFragment 这个类

     7、通过再次对接着 UpdateDialogFragment 类行进hook 重新启动弹出升级窗口发现下面函数

     

    objection -g com.hello.qqc explore -s "android hooking watch class_method cn.net.tokyo.ccg.ui.fragment.dialog.UpdateDialogFragment.b --dump-args --dump-backtrace --dump-return"

     8、再次跟踪 UpdateDialogFragment.a 函数发现这个函数 判断了版本就是这了

     9、然后更改重新打包。

    9.1、重新打包时应该使用脱壳后原始APP的dex替换掉原来的壳dex

    解决:需要在使用 apktool 反编译时选择不反编译dex文件并删除壳的dex, apktool 的 -s 参数就提供了不反编译APK中的dex文件的功能。

    apktool d com.xxxxsssaae.apk -s

    在反编译完成后,删除原始的classes.dex并且将脱壳后的dex文件按照文件大小依次命名并存储到壳的dex所在的目录

    9.2、APP在加固后的入口点变成了壳的入口点,因此在重新打包之后还需要修改 AndroidMainfest.xml的入口类

    解决:修改APP的入口类,因此我们需要jadx重新打开包含关键函数的dex文件,并搜索 extends Application 的代码,最终排除第三方库和系统相关的代码,剩下cn.net.tokyo.ccg.base.App 类,在定位到后,将反编译结果目录下AndroidManifest.xml 清单文件内 节点中 android:name 对应的值修改为找到的完整类名,修改完毕后 使用如下命令 apktool b com.xxxxsssaae 对结果目录重新进行编译。

    然后使用jarsigner签名工具生成一个签名文件,并且使用生成的签名文件对打包好的app 进行签名。

    keytool -genkey -alias abc.keystore -keyalg RSA -validity 2000 -keystore abc.keystore

    jarsigner -verbose -keystore abc.keystore -signedjar zhibo_patch.apk zhibo.apk abc.keystore

  • 相关阅读:
    【算法模板】快速排序模板
    leetcode:887. 鸡蛋掉落【经典dp定义】
    C/C++总结笔记——指针2:二级指针、指针数组&数组指针、函数指针&函数指针数组、二维指针数组&数组指针
    团队规范之Git规范
    解决python使用panda模块处理CSV文件出错:keyword error
    AI全栈大模型工程师(六)进阶技巧
    Spring(ioc)
    Selenium——利用input标签上传文件
    创建maven的 java web项目
    【实战系列】PostgreSQL 专栏,基于 PostgreSQL 16 版本
  • 原文地址:https://blog.csdn.net/zhaoxiaoba123/article/details/128052421