Android逆向-数据修改逻辑修改视图修改

目录

0x00 相关工具及环境

0x01 APP逆向 - 数据修改

0x02 APP逆向 - 逻辑修改

0x03 APP逆向 - 视图修改


希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢!  

个人博客链接:CH4SER的个人BLOG – Welcome To Ch4ser's Blog

0x00 相关工具及环境

1、安卓模拟器(最好root的真机)
2、Magisk&XP&LSP框架 HOOK环境
安装参考:https://blog.csdn.net/danran550/article/details/132256027
3、Jadx-Gui 反编译Java代码查看器
4、ApkScan-PKID 查壳工具
5、MT管理器&NP管理器 打包签名综合类
6、开发组手&开发者组手 信息获取综合类
7、算法组手&XP&LSP框架模块 常见HOOK
8、Smali语法查询 Smali逻辑修改辅助
9、脱壳相关:https://mp.weixin.qq.com/s/poQPuvaQPadQxRu_WGvy1A

**资源下载地址:https://pan.baidu.com/s/1IGPNSt0U973Pki7tiOZw5A?pwd=8888

0x01 APP逆向 - 数据修改

wuaipojie第一关:根据关卡要求尝试替换App中的文字

​使用MT管理器提取wuaipojie安装包,搜索"hello 52pojie"

xml后缀是APK的应用清单信息,它描述了应用的名字、版本、权限、引用的库文件等等信息。反编译Jf.xml后继续搜索"hello 52pojie",替换文字。

保存退出,选择自动签名,安装新打包的wuaipojie,可以看到文字已被替换。

如果想要替换下面的俄语,需要用到开发者助手,点击开始,这样便可以复制App中的俄语

同样MT管理器搜索定位到resources.arsc,是编译后的二进制资源文件(一个映射表),映射着资源和id,通过id可以定位到对应资源位置。

使用Arsc编辑器打开继续搜索俄语,替换文字,保存退出并签名打包安装,可以看到文字已被替换

0x02 APP逆向 - 逻辑修改

wuaipojie第二关:考虑绕过限制做到不需要硬币也可以三连

MT管理器搜索"请先获取10个硬币哦"定位到classes.dex,这是Java源码编译后生成的Java字节码文件,是APK运行的主要逻辑。

使用Dex编辑器++继续搜索定位到具体Smali代码,如下:

Smali代码我看着比较困难,所以使用NP管理器将其转换为Java代码查看(MT的要收费)。

整个Java代码逻辑大致为长按会判断intRef值是否大于10,大于则执行三连操作,否则弹窗提示。

于是来到MT这边的Smali代码,搜索定位0xa(也就是16进制的10) ,得知寄存器v0值为0xa。

搜索v0出现的位置,即下面的if判断:if-ge p0, v0, :cond_15

也就是说,如果p0大于等于v0,那么就跳到cond_15,猜测cond_15就是执行三连,于是我们可以考虑将判断条件-ge改为-le,也就是硬币小于等于10才执行三连即可。

保存退出,重新加签打包安装,可以看到硬币数为0也可以执行三连操作了。

0x03 APP逆向 - 视图修改

wuaipojie第三关:点开后过一会儿就会弹窗广告,按返回键无效,只能选择前往论坛或退出软件,考虑屏蔽广告。

需要用到MT或NP的Activity记录功能,抓取并复制广告的类名com.zj.wuaipojie.ui.AdActivity

在classes.dex搜索类名com.zj.wuaipojie.ui.AdActivity

NP管理器将Smali转为Java代码,发现loadAd方法设置弹窗延迟为3000ms

在MT这边Smali代码定位0xbb8(16进制的3000),这里Smali代码将0xbb8赋值给寄存器v2,然后将v2传入调用sendEmptyMessageDelayed方法,猜测就是延迟的毫秒数3000ms。考虑将v2赋值0x0,是不是就不会弹窗了呢?

保存编译退出,加签安装,发现不再弹窗广告。 

屏蔽广告的操作还可以通过hook脚本操作,使用Magisk Delta、LSPosed、算法助手

可以看到广告同样也是不弹的

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

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

相关文章

Git Fork后的仓库内容和原仓库保持一致

Git Fork后的仓库内容和原仓库保持一致 ①Fork原仓库内容到自己仓库 ②将项目内容下载到本地 ③使用git命令获取原仓库内容,将原仓库的最新内容合并到自己的分支上并推送 下面从第三步开始演示~ 这里以码云上的若依项目为演示项目 ③使用git命令获取原仓库内容 …

什么裤型的裤子最百搭?男生比较好看的裤子品牌分享

很多男生每隔一段都会选择一些新的裤子,但是现在市面上的裤子种类和风格太多,并且有不少材质劣质、细节设计差的品牌混杂在其中,大家一不小心就选到质量不好的裤子。 所以如何选择到合适、质量好的裤子确实是一个让人头疼的问题,…

AcWing 4609:火柴棍数字 ← 贪心算法

【题目来源】 https://www.acwing.com/problem/content/4612/【题目描述】 给定 n 个火柴棍,你可以用它们摆出数字 0∼9。 摆出每个数字所需要的具体火柴棍数量如下图所示: 请你用这些火柴棍摆成若干个数字,并把这些数字排成一排组成一个整数…

Netty学习——源码篇5 EventLoop 备份

1 Reactor线程模型 Reactor线程模型 中对Reactor的三种线程模型——单线程模型、多线程模型、主从多线程模型做了介绍,这里具体分析Reactor在Netty中的应用。 1.1单线程模型 单线程模型处理流程如下图: 单线程模型,即Accept的处理和Handler…

(科研篇)如何做科研

1.科研周期: 2.CCF列表 1.搜索论文(顶会) 2.谷歌学术检索 3.如何阅读文献 最重要的部分是abstract introduction 和related work,要明白某个东西的历史,从而进一步发现的缺陷,然后通过实现实验去证明。 通…

HubSpot出海CRM的团队协作与流程优化

在数字化营销日益盛行的今天,团队协作与流程优化已成为企业获取竞争优势的关键因素。HubSpot出海CRM不仅提供了强大的客户管理工具,更在团队协作与流程优化方面展现出卓越的能力。 一、团队协作在营销中的重要性 团队协作在营销中的重要性不言而喻。一…

光伏智慧管理平台:全周期全流程光伏业务管理

随着光伏技术的快速发展和光伏电站规模的不断扩大,光伏业务的管理变得越来越复杂。为了提高管理效率、降低运营成本并提升光伏电站的运行效益,光伏智慧管理平台应运而生。本文将重点介绍光伏智慧管理平台的功能及其在全周期全流程光伏业务管理中的应用。…

最长有效括号(C语言)

题目链接:. - 力扣(LeetCode) 这道题,我看了一种解法,觉得很好,来分享一下 这道题主要是 思考 当前 ) 与之匹配 ( 在哪里 ,记录下来,最后比较最大值 例子: 第…

浅谈 kafka

引言 同事在公司内部分享了关于 kafka 技术一些相关的内容,所以有了这篇文章;部分图片选自网络摘抄; 1 Kafka概述 1.1 定义 Kafka传统定义:kafka是一个分布式的基于发布/订阅模式的消息队列。 Kafka最新定义:kafka…

【Frida】【Android】05_Objection实战

🛫 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

Kibana操作Elasticsearch教程

文章目录 简介ES文档操作创建索引查看索引创建映射字段查看映射关系字段属性详解typeindexstore 字段映射设置流程 新增数据新增会随机生成id新增自定义id智能判断 修改数据删除数据查询基本查询查询所有(match_all)匹配查询多字段查询词条匹配多词条精确…

HarmonyOS 应用开发之创建PageAbility

开发者需要重写app.js/app.ets中的生命周期回调函数,开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会在app.js/app.ets中默认生成onCreate()和onDestroy()方法,其他方法需要开发者自行实现。接口说明参见前述章节&#xf…

maven 依赖机制

安全工程师为啥关注maven依赖 log 4j事件之后,大家开始更加关注开源组件安全漏洞这个事。纷纷引入SCA 软件成分分析工具来识别项目中存在的开源组件和漏洞。 在sca工具扫描之后,会报出一大堆组件,review这个事就是安全团队投入时间来研判了…

【Linux多线程】线程的同步与互斥

【Linux多线程】线程的同步与互斥 目录 【Linux多线程】线程的同步与互斥分离线程Linux线程互斥进程线程间的互斥相关背景概念问题产生的原因: 互斥量mutex互斥量的接口互斥量实现原理探究对锁进行封装(C11lockguard锁) 可重入VS线程安全概念常见的线程不安全的情况…

是谁?阻止CXL在AI场景大展身手~

CXL虽然被视为业内新宠,但好像在AI场景的应用反而没有得到广泛的响应。 AI场景对内存带宽、容量以及数据一致性有着极高需求,特别是在深度学习训练和推理过程中,大量数据需要在CPU、GPU、加速器以及内存之间快速、高效地流动。CXL作为一种新…

Java基础入门day24

day24 abstract 抽象:似是而非,像又不是,具备某种对象的特征,但不完整 生活中的抽象:动物,并不真实存在的事物 程序中的抽象:不应该被创建的对象,动物近视一种会吃会睡的对象&#…

Netty核心原理剖析与RPC实践16-20

Netty核心原理剖析与RPC实践16-20 16 IO 加速:与众不同的 Netty 零拷贝技术 今天的课程我们继续讨论 Netty 实现高性能的另一个高阶特性——零拷贝。零拷贝是一个耳熟能详的词语,在 Linux、Kafka、RocketMQ 等知名的产品中都有使用,通常用于…

【单调栈】力扣84.柱状图中最大的矩形

上篇文章我们介绍了使用 无重复值 单调栈代码解决 含有重复值 的问题,在文章的最后,留下了一道考察相同思想的题目,今天我们来看看如何套路解决该题。 (还没看过前几篇介绍的小伙伴赶快关注,在 「单调栈」 集合里查看…

通过node 后端实现颜色窃贼 (取出某个图片的主体rgb颜色 )

1.需求 我前端轮播图的背景色 想通过每一张轮播图片的颜色作为背景色 这样的话 需要通过一张图片 取出图片的颜色 这个工作通过前端去处理 也可以通过后端去处理 前端我试了试 color-thief 的插件 但是 这个插件是基于canvas 的模式来的 我需要在小程序中使用这个插件 而且是…

HarmonyOS-如何使用ArkTS声明式语法和基础组件,实现待办列表。

介绍 本篇Codelab将介绍如何使用ArkTS声明式语法和基础组件,实现简易待办列表。效果为点击某一事项,替换标签图片、虚化文字。效果如图所示: 相关概念 ArkTS语法:ArkTS是HarmonyOS的主要应用开发语言。ArkTS基于TypeScript&…