Android逆向去弹窗实例分析

1.对App进行分析

        本次案例是为去除一个加固app的强制升级弹窗。

        首先对该app进行安装

下载完成后,发现有一个弹窗,只能通过升级该app去除弹窗

 

        首先我们进行分析该弹窗中关键内容,我们可以使用jadx打开该app的apk文件,搜索关键词“版本号”、“升级”等都没有结果,并且发现该app进行了加固,无法通过关键字定位到弹窗,接下来需要我们一步一步的分析该应用。

        如何需要逆向,首先你需要知道如何开发,应该从开发者的角度去思考。通过观察和分析,发现该升级提示是以弹窗的形式来实现的。而在Android开发中实现弹窗的类主要有三种:android.App.Dialog,android.App.AlertDialog和android.widght.PopupWindow。

2.对app进行测试和定位弹窗位置

        我们通过jadx中的AndroidManifest.xml文件查看App的包名。
        在进行分析之前还需要将手机的frida-server启动。启动之后使用命令将objection注入应用并对app进行测试。

我们可以借助Objection工具一个插件WallBreaker进行搜索弹窗类是否存在实例。

//下载地址
git clone https://github.com/hluwa/Wallbreaker

通过搜索发现存在android.App.Dialog类的实例,所以我们可以确定该弹窗通过android.App.Dialog实现。并且通过以下代码对其进行Hook,发现其中调用的setCancelable(boolean)函数被调用,并对其进行hook。

android hooking watch class android.App.Dialog

android hooking watch class_method android.App.Dialog.setCancelable --dump-args --dump-backtrace --dump-return

 

通过调用栈发现App中调用弹窗的函数为cn.net.tokyo.ccg.ui.fragment.dialog.UpdateDialogFragment.onCreateDialog()。

上面我们已经分析该app已经加固,无法通过jadx直接看到信息,所以我们需要对app进行脱壳。

分享一个很好用的工具FRIDA-DEXDump。

//下载地址
git clone https://github.com/hluwa/frida-dexdump.git

  

将该app进行脱壳,并且知道UpdateDialogFragment类所在dex文件之后,使用jadx打开。我们发现UpdateDialogFragment类继承了DialogFrament类,该类是一个具有生命周期的系统框架类,所以我们需要确定该类是被哪个外部函数调用的,所以对UpdateDialogFragment类进行hook;

发现最先调用了cn.net.tokyo.ccg.ui.fragment.dialog.UpdateDialogFragment.onCreateDialog.b();在确定目标函数后,对其进行hook并观察其调用栈,最终调用了MainActivity.a()。

使用Jadx定位。

3.对app进行重打包

         首先需要将脱壳后原始apk的dex替换掉原来的dex,所以脱壳是不反编译dex文件。使用以下命令进行反编译,删除原始的class.dex文件,并且脱壳后的dex按照文件大小以此命名class.dex,class1.dex......。

在完成上述步骤后,还需要修改app的入口类。因此需要在jadx中并且确定入口类。

        之后使用apktool进行编译,编译生成的apk会在目录的dist中。将该apk进行重新签名生成qqc1.apk,安装运行发现并无异常,之后再次对该apk进行反编译得到。

        通过修改相应函数的逻辑(如图所示),再次打包该app,并进行签名安装,会发现强制升级的提示弹窗已成功消失。

 

4.小结

        通过本次案例,我们发现在逆向的过程中,我们首先要已开发者的角度对问题进行思考,了解到如何对其进行开发,之后在通过工具定位到实现的位置在进行分析。

 

 

 

 

 

 

      

 

 

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常用的Android逆向分析工具,它们可以用于反编译、调试、内存分析、Hook等方面: 1. jadx:一款开源的Java反编译工具,可以将Android应用程序的APK文件反编译为Java源代码,方便进行分析修改。 2. APKTool:一款开源的反编译和重新打包工具,可以将Android应用程序的APK文件解压为资源文件和代码文件,方便进行修改和重新打包。 3. Dex2jar:一款用于将Android应用程序的DEX文件转换为JAR文件的工具,可以用于反编译和分析Android应用程序。 4. Frida:一款跨平台的动态插桩工具,可以用于修改应用程序的行为和数据,具有强大的Hook和脚本化功能。 5. Xposed:一款基于Frida的Android插件框架,可以用于Hook应用程序的Java层和Native层代码,实现各种功能。 6. Burp Suite:一款流行的渗透测试工具,可以用于拦截和修改Android应用程序的网络请求和响应,进行漏洞挖掘和安全测试。 7. JD-GUI:一款Java反编译工具,可以将Android应用程序的APK文件反编译为Java源代码,方便进行分析修改。 8. Android Debug Bridge (ADB):一个调试工具,可以用于与Android设备建立连接,进行调试、文件传输、进程管理等操作。 9. Android Studio:一款集成开发环境,可以用于开发、调试、构建和打包Android应用程序,具有强大的调试和分析功能。 当然,这里列举的只是一些常用的Android逆向分析工具,还有很多其他的工具和库,如IDA Pro、Ghidra、Radare2、JEB等,都可以用于Android逆向分析和漏洞挖掘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值