25.安卓逆向2-frida hook技术-拦截弹框事件(拦截强制更新弹框和解决jadx加载dex文件不全问题)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:图灵Python学院
工具下载:
链接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwd=zy89
提取码:zy89
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:24.安卓逆向2-壳与frida-dexdump砸壳
有些app不更新的话会弹出一个窗口,让我更新,如果不更新关闭弹框,它就会退出app,强制让我们更新,接下来就写怎么解决这个问题
首先打开 Charles 抓一下包,看个东西,如下图,不关闭更新弹框,有些数据包就没法抓,显示unknown,只有把更新弹框过了才行
开始干掉弹框,怎么干掉?就是在更新弹框中找文字,如下图立即更新这个文字,这样我们就可以根据这个文字使用jadx反编译apk,然后搜索这个文字,也就是看源码找内容
然后打开jadx反编译apk,如下图发现,它的源码被保护起来了,也就是加壳了
然后使用MT管理器查看app加壳的方式,如下图可以看到它采用360加固
然后解决壳,使用 frida-dexdump 砸壳,如下图使用frida-dexdump可能会出现错误,这个错误是不影响的
如下图虽然 frida-dexdump 出错了,但它还是把源码下载下来了,然后全选把它们拖进jadx里
如下图全选拖进去之后,它还是很少,这是jadx的问题,需要进行设置
首先点击首选项
把下图红框位置改成no,然后点击保存,下图红框意思是加载dex文件是检测dex文件是否正确,改成no不让它检测就可以了
如下图可以看到它正常了
到这就砸壳完成,开始下一步搜索更新弹框里的文字,如下图会发现,根据更新弹框里的文字什么都搜不出来,这个办法不行,就算搜出来也不是我们想要的
然后百度搜索frida hook app强制更新,当遇到问题的时候要利用网络搜索,你要相信你遇到的前辈们也都肯定遇到了,前辈们遇到了也肯定解决了,所以要利用网络搜索
如下图搜索出来会有很多,这里一个一个的看
如下图红框,有个 UpdateDialog,接下来使用 UpdateDialog这个关键字去搜索,UpdateDialog中文意思是更新对话框(对话框就是弹框),很多app都会用UpdateDialog这样的名字,如果使用 UpdateDialog 这个名字搜不出来就继续看别的文章,总有一个可以
可以搜出来很多
下图红框的名字最符合,所以先观察一下它
如下图双击进入 UpdateDialogFragment 类
然后看到下图红框的文字,它就很贴合更新弹框,然后继续观察别的
然后下图红框的方法,startDownloadApp它的中文名是 启动下载app
如下图双击 startDownloadApp 进入 startDownloadApp方法
然后再双击进入start方法
然后进入start方法 startDownload 进入 startDownload方法
然后再双击
如下图进入 startDownload方法,到这就很明显是下载app的方法,然后通过最开始的名字 onServiceConnected,ServiceConnected中文意思是服务已连接(意思是和服务器以建立好连接),然后现在就能确定 UpdateDialogFragment 类就是更新弹框的类
然后回到下图位置,也就是 UpdateDialogFragment 类中
然后鼠标滚轮上下滑动观察附近的代码,可以看到下图红框位置,installApp中文意思是安装app
它在下图红框位置进行了调用,onUpdateClick意思是 on更新点击,意思是更新按钮的点击事件,也就是点击立即更新按钮执行的代码
通过fridahook掉installApp方法进行验证是不是点击立即更新按钮后执行的代码,如下图鼠标右击选择复制为frida片段
这里注意注入Firda要用重启的方式,如下图注入下方代码后,点击立即更新按钮它不会更新了,只会打印,所以现在就通过了验证 UpdateDialogFragment 类就是更新弹框的代码,接下来找,更新弹框在哪弹出来的
然后还是在这附近观察,然后看到下图红框的代码,initData中文意思是初始化数据,然后 UpdateDialogFragment 类是更新弹框的代码,这里的initData结合类的作用它的意思是初始化弹框数据,下图红框中还有一个getNewVersion,中文意思是获取最新版本,把getNewVersion方法hook掉让它返回当前app的版本应该也能不弹框,但还有更好的东西
所有app打开弹框,一般都会有show这个关键词,接下来找一找这个关键词,如下图红框show方法,接下来hook它
然后鼠标右击复制为frida片段
把下图红框的代码注释掉,不让它执行原本的代码,然后app不会弹出更新弹框了,可以正常使用了