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

news/2024/5/10 15:52:17/文章来源:https://blog.csdn.net/zhaoxiaoba123/article/details/128052421

说明:对加固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.luyixian.cn/news_show_37206.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ML特征工程】第 4 章 :特征缩放的影响:从词袋到 Tf-Idf

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

工作中常用的设计模式--策略模式

一般做业务开发&#xff0c;不太容易有大量使用设计模式的场景。这里总结一下在业务开发中使用较为频繁的设计模式。当然语言为Java&#xff0c;基于Spring框架。 1 策略模式(Strategy Pattern) 一个类的行为或方法&#xff0c;在运行时可以根据条件的不同&#xff0c;有不同的…

(C语言)printf打印的字符串太长了,我想分两行!

本文来自于公众号&#xff1a;C语言编程技术分享 一、提问 有下述C程序&#xff1a; #include <stdio.h> #include <stdlib.h>int main() { printf("123456789012345678901234567890\n");system("pause");return 0; } printf函数要打印的字…

B. Elimination of a Ring Pinely Round 1 (Div. 1 + Div. 2)

传送门 题目意思&#xff1a; 给你一个为环的序列n&#xff0c;这个序列有一个特殊的地方&#xff1a;就是如果有相邻元素相等他就会立马删除其中一个元素&#xff08;第一个和最后一个相邻&#xff09;。 然后你每次可以删除一个元素&#xff0c;问你能删除的最多的操作数是多…

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

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

【情感识别】BP神经网络语音情感识别【含Matlab源码 349期】

⛄一、BP神经网络语音情感识别简介 0 引言 随着科技的迅速发展, 人机交互显得尤为重要。语音是语言的载体, 是人与人之间交流的重要媒介。相较于其它交流方式而言, 语音交流更加直接、便捷。近年来, 随着人机交互研究的不断深入, 语音情感识别更成为了学术界研究的热点, 其涉及…

计算机键盘用途及快捷键

用途&#xff1a; 电脑键盘上有那么多按键&#xff0c;到底都有什么作用呢&#xff1f; 几个重要的按键&#xff0c;一起来了解一下吧。 最上面一排&#xff1a; F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 1、键盘中间区域的所有输入按键。 一共是26个英文字母…

【微服务】springboot + dubbo 整合Sentinel限流

一、前言 限流对一个生产环境的系统来说&#xff0c;具有重要的意义&#xff0c;限流的目的是为了保护系统中的某些核心业务资源不被瞬间的大并发流量冲垮而采取的一种措施&#xff0c;因此一个成熟的架构设计方案&#xff0c;限流也需要纳入到架构设计和规划中。 二、常用的限…

【Linux系统】第二篇、权限管理篇

文章目录一、Linux下的用户二、文件的权限1. 文件访问者的分类2. 文件类型和访问权限3. 文件权限值的表示方法三、文件访问权限的相关设置方法1. chmod2. chown3. chgrp4. umask&#xff08;重点&#xff09;四、file指令五、目录的权限粘滞位一、Linux下的用户 这里我们在上一…

【雷达通信】雷达探测项目仿真附Matlab代码

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

多线程(1)

多线程 前言 &#xff1a; 上文主要了解到了进程&#xff0c; 那么为啥需要引入进程呢&#xff1f;   或者说为啥要有进程呢&#xff1f; 其实这里最主要的目的是为了解决 并发编程 这样的问题。 了解 &#xff1a;   这里 cpu 进入了多核心的时代&#xff0c;想要进一步提…

3天3定制大屏,反向PUA

摘要 本次分享一段无讨价还价余地的单人3天定制化大屏全过程&#xff08;强调说拖拽屏的请绕道,和你想的不一样&#xff09;,要动效、要地图、要流光。天坑的心理博弈到最终解决的过程及技术思路。 前因 没啥征兆突然接到说&#xff0c;要在下周完成2个大屏的定制开发,起初没提…

身份安全风险分析

摘要 从勒索软件到 APT&#xff0c;身份风险是重要的攻击向量。 管理 Active Directory 的复杂性&#xff0c;导致所有组织都存在1/6的可利用的特权身份风险。 这些身份风险包括使用过时密码的本地管理员、具有不必要权限的错误配置用户、在终端上暴露的缓存凭据等。 当攻击者…

arthas进阶版排查问题之idea插件工具操作

arthas前面的文章讲了怎么去使用命令排查线上问题&#xff0c;线上出了问题就需要我们去排查问题和处理程序异常&#xff0c;但是线上一般出问题不太好解决&#xff0c;总有一些奇怪的问题&#xff0c;当然很多场景是测试测试不到的&#xff0c;我们不能百分百保证线上不出问题…

阿里大咖纯手写的微服务入门笔记,从基础到进阶直接封神

前言 学习是一种基础性的能力。然而&#xff0c;“吾生也有涯&#xff0c;而知也无涯。”&#xff0c;如果学习不注意方法&#xff0c;则会“以有涯随无涯&#xff0c;殆矣”。 学习就像吃饭睡觉一样&#xff0c;是人的一种本能&#xff0c;人人都有学习的能力。我们在刚出生的…

AcWing 搜素与图论

搜索 DFS 全排列 代码 #include<iostream> using namespace std;int vis[10], a[10];void dfs(int step, int n) {if (step n 1){for (int i 1; i < n; i)printf("%d ", a[i]);printf("\n");return;}for (int i 1; i < n; i){if (!vis[i…

【调优】大数据常见 Join 的使用场景

【调优】大数据常见 Join 的使用场景 上次写了大表和大表 join 的调优方法&#xff0c;今天总结一下大数据常见的 Join 方法。 1.Shuffle Join 大数据采用的是分布式存储&#xff0c;一个表的数据会分散在各个节点。为了进行 join&#xff0c;通常都会进行 shuffle 操作&…

ESG,TO B长期主义里的「新战役」

中国企业最好的方式是从初始阶段就植入ESG基因&#xff0c;使它逐渐从隐形变成显性基因。长期坚持此类发展导向&#xff0c;对后续发展ESG战略&#xff0c;提升ESG合规能力也将成为一种积累和准备。 作者|三七 编辑|皮爷 出品|产业家 20世纪初期&#xff0c;伦敦得到一个延…

HttpMessageConverter 消息转换器

HttpMessageConverter 简介 HttpMessageConverter 是SpringMVC中提供的一个策略接口&#xff0c;它是一个消息转换器类&#xff0c;Spring Mvc中就是由HttpMessageConverter负责转换HTTP的请求和响应。 默认情况下&#xff0c;Spring Boot 会自动加载如下消息类型转换器&…

数字验证学习笔记——UVM学习1

一、类库地图 在SV模块中&#xff0c;验证环境整体的构建&#xff0c;是从底层模块的验证组件搭建到通信和激励生成这些元素无论是软件对象的创建、访问、修改、配置&#xff0c;还是组件之间的通信等都是通过用户自定义的方式来实现的。UVM验证方法学作为之前所有方法学的融合…