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

news2024/10/6 16:25:02

说明:对加固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 清单文件内 <Application> 节点中 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

50个html+css+js项目小练习(二:动画的倒计时效果)

2.animated-navigation 实现效果&#xff1a; 倒计时321后显示go数字依次从x轴负方向&#xff0c;顺时针倒下去 xy第一个数&#xff08;0,y&#xff09;—>&#xff08;-x,0&#xff09; 第一个数字倒下去的同时&#xff0c;第二个数从x轴正方向升起 第二个数&#xff08;x…

1. 开篇:既简单又复杂的基础框架

同样的基础但不简单 之前在写 《从 0 开始深入学习 Spring》 小册时&#xff0c;阿熊提到过一件事&#xff1a;学习 JavaEE 开发的第一个框架&#xff0c;大多数是推荐 MyBatis 的&#xff0c;因为它相对简单&#xff0c;学习起来也相对轻松。不过不要因为 MyBatis 入门简单&a…

【电商】管理后台篇之安全、菜单、通知管理

系统管理第一篇我们介绍了账号管理相关的业务&#xff0c;这一篇我们介绍下其他几个常见的业务&#xff1a;安全管理、菜单管理和通知管理。 本篇介绍的几个常见业务如下&#xff1a; 安全管理&#xff1a;监控每个账号的登录情况和操作情况通知管理&#xff1a;给使用后台系统…

[附源码]计算机毕业设计JAVA企业信息网站

[附源码]计算机毕业设计JAVA企业信息网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

自定义qtquick 插件模块,支持qmldesigner

自定义qtquick 插件模块&#xff0c;支持qmldesigner wmxModule.pro #------------------------------------------------- # # Project created by wmx # #-------------------------------------------------QT core qml quickTARGET wmxModule TEMPLATE lib CONF…

图像处理QPixmap、Picture、QBitmap

QPixmap 类是一种可用作绘制设备的屏幕外图像表示形式。 QPixmap可以使用QLabel或QAbstractButton的子类之一可以轻松显示在屏幕上 QPixmap 对象可以按值传递&#xff0c;因为 QPixmap 类使用隐式数据共享&#xff0c;也可以流式传输。 QPixmap可以和QImage之间进行转换&…

【关于lombok框架一文秒懂】

目录 1. Lombok框架 2. 安装lombok插件 1. Lombok框架 Lombok框架是用于在编译期自动生成相关代码的&#xff0c;例如&#xff1a;Setters & Getters、hashCode()、equals()、toString()、无参数构造方法、全参数构造方法等。 相关的注解有&#xff1a; Data&#xff1…

python中的编码格式

1- 字符集和编码 1&#xff09; 初代编码 – ASCII 1- 物理机与电脑的交互&#xff1a;物理机中有个组件叫二极管&#xff0c; 可以通过电流通过二极管显示的高电平和低电平来记录信号。 2- 二极管的高电平和低电平则被计算机解读为0 和 1 3- 多个0和1拼接起来成为了二进制数据…

自动化测试框架设计原理详解

一、自动化测试场景 1、测试四象限 并不是所有测试类型都适合自动化。哪些测试更适合自动化?哪些更适合手工测试? 根据Brain Marick提出的测试四象限,我们可以对测试进行归类,将其划分到4个象限中,以解答这些问题,如下图所示。 第一象限:面向技术和指导开发,该象限中…

ActivityPub 笔记

ActivityPub 协议是一个去中心化的社交网络协议&#xff0c;其基于 ActivityStreams 2.0 数据格式。 在 ActivityPub 协议里&#xff0c;一个用户在服务器上的角色为“参与者&#xff08;actor&#xff09;”。用户在不同的服务器上的角色为不同的“参与者”。每一名“参与者”…

LSTM和GRU

LSTM和GRU RNN的优缺点 优点&#xff1a; 可以捕获序列之间的关系&#xff1b;共享参数。 缺点&#xff1a; 存在梯度消失和梯度爆炸问题&#xff1b;RNN的训练是一个比较困难的任务&#xff1b;无法处理长序列问题。 LSTM LSTM可以处理长序列问题&#xff0c;同样在之前…

openssl做文件处理(base64,MD5,sha256等)

这次使用openssl&#xff0c;发现openssl不仅可以用来做加密和解密&#xff0c;实际上也可以用来做文件的处理&#xff0c;比如base64转码、解码&#xff0c;文件md5的计算等。实现这些&#xff0c;即可以从命令行去做&#xff0c;也可以通过代码去实现。 1. 命令行操作 1. ba…

【ML特征工程】第 5 章 :分类变量:机器鸡时代的鸡蛋计数

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

想做副业没有方向,这三条告诉你什么是副业思维

怎样副业赚钱&#xff1f;教你几招&#xff0c;掌控自己的固有思维 你了解钱是怎么来的吗&#xff1f;你如果弄不懂这一点&#xff0c;你也是很难赚到钱的。 钱不是苦的&#xff0c;辛苦努力挣的基本都是一点钱。 假如将你的工作时长换为钱&#xff0c;你可以清晰地赚多少钱…

Java并发-线程上下文切换与死锁

理解线程的上下文切换 概述&#xff1a;在多线程编程中&#xff0c;线程个数一般都大于 CPU 个数&#xff0c;而每个 CPU 同一时&#xff0d;刻只能被一个线程使用&#xff0c;为了让用户感觉多个线程是在同时执行的&#xff0c; CPU 资源的分配采用了时间片轮转的策略&#x…

javacc之路0--- 安装与使用

官网&#xff1a; https://javacc.github.io/javacc/ https://github.com/javacc/javacc#getting-started 安装 下载解压 执行&#xff1a; mvn package 将 javacc-7.0.10.jar 重命名为 javacc.jar 并将目录下的scripts文件夹加入到环境变量中。 执行javacc命令验证是否成功…

【Qt 按钮】QPushButton所有函数和样式

【Qt 按钮】QPushButton所有函数和样式一、QSS语句 &#xff08;界面样式大全&#xff09;二、 构造函数三、Geometry &#xff08;获取属性&#xff09;四、 QFont五、setFont六、text七、setText八、move九、resize十、adjustSize[按钮自动适应文本大小]十一、setFocus十二、…

【附源码】计算机毕业设计JAVA预约健身私教网站

【附源码】计算机毕业设计JAVA预约健身私教网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA my…

开发人员为什么要写测试用例?

作为一名开发人员&#xff0c;你可能会发现周围的开发并不太喜欢写测试用例&#xff0c;甚至有些同学根本不写测试用例&#xff0c;认为写测试用例完全是浪费时间&#xff0c;或者是测试用例只是测试的事情。 在开发过程中&#xff0c;往往都是呼啦啦的写完代码&#xff0c;然后…

【负荷预测、电价预测】基于神经网络的负荷预测和价格预测附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …