APP攻防--安卓逆向&数据修改&逻辑修改&视图修改

@

工具集

MT管理器

NP管理器

APK查壳工具PKID

开发助手专业版破解版 v6.8.4

开发者助手

Smail语法查询

HttpCanary(小黄鸟)

吾爱破解demo(密码52pj)

以上工具均可在吾爱破解论坛视频《安卓逆向这档事》中找到

视频地址《安卓逆向这档事》

apk目录意义



逆向数据修改

在吾爱论坛大佬写的练习逆向app中,第一关完成对app中得图片与文字替换



使用MT管理器对目标APP进行安装包提取定位

提取之后查看APK中得代码



图中得文件夹中就是APK未进行反编译得代码

使用开发者助手抓取APP上的文字内容进行复制





使用MT管理器中的搜索功能对关键字进行搜索



搜索出只有JF.xml文件中包含关键字



将文件进行反编译之后使用搜索功能对文件中关键字进行搜索,找到关键字位置进行修改即可完成对关键字的替换,更换完成保存并对文件更新即可。

下面继续对其他关键字进行搜索,发现结果在resources.arsc文件中存在。

通过搜索资源值进行搜索



通过搜索找到关键字所在的位置,按照搜索结果路径即可顺利找到字符所在位置进行修改。



同样通过查看id值也可以实现定位。



通过id定位的结果也一样。

通过各种方式的查找找到了关键字的位置,即可对关键字进行修改

第三个关键字在dex文件中,这个文件写的是APP的运行逻辑程序。



通过dex编辑器++方式打开classes.dex文件对关键字进行查找,根据查找字符串或者查找代码、类名等方式找到了关键字所在位置。

对关键字进行修改保存即可

最后将apk进行签名覆盖安装即可



签名之后会启动生成一个apk文件,覆盖安装即可



重新启动运行后即可发现,我们所要修改的关键字成功呗修改成我们想要的语句。

逆向逻辑修改

在吾爱破解demo第二关中,在进行一键三连时,需要首先获取10个硬币,我们需要绕过此项验证。

通过对关键提示字进行搜索,定位到了以下smail代码,使用其他工具NP管理器、jadx等进行搜索转为java代码之后,发现是一个if语句进行控制





通过smail语法查询即可获取执行逻辑,将执行逻辑改变即可。如下通过查询smail语法得知,原smail代码通过判断p0和v0的关系来得知是否具备10个硬币,我们只需要将其取反,将if语句由if-ge改为if-le即可修改运行逻辑,在没有10个硬币的情况下也可以进行下一步操作。





修改保存,对apk进行签名后安装即可。再次对修改后的APP启动后发现成功绕过硬币检测。

逆向视图修改

在demo第三关中,发现会弹出广告,要想将他绕过,就需要监视模拟器上视图的跳转情况。



使用MT管理器的Activity记录来监视视图跳转情况



由于广告弹窗是在第三关界面中停留若干秒才弹出来,因此我们需要进行排查,首先从第三关界面的类中去排查。通过搜索关键字类名进行搜索。搜索结果如下



对第一个类进行查看

通过loadAd这个方法名大致意思为加载Activyity的意思,这里的0x3e9是1001 的十进制表示,而 0xbb8则是3000 的十进制表示 ,这里代码的意思是1秒到3秒的时间间隔,尝试将这两个值修改为0。



从转换后的java代码也可以大致猜出什么意思。



将apk进行保存签名后重新安装,打开后发现广告弹窗成功绕过。

某小说升级vip

在vip处找到关键字开通,通过MT管理器进行反编译,然后搜索开通关键字



搜索结果如下,由于dex文件所写的为APP运行逻辑,开通vip的这件事情是逻辑修改,因此优先查看dex文件

在dex文件中搜索结果中几乎全部都是显示的字符串,跟逻辑几乎没有什么关系。



在资源id对应文件中搜索结果如下,其中有一项已开通,另外两个方法在命名中的HK和TW应该是其他地区的逻辑。我们尝试将此方法对应的id值长摁复制,拿去dex文件中去搜索。



在dex文件中搜索结果如下,其中第一个结果为初始化函数,因此第一个一般不会去修改





经过对smail语法分析,其中决定vip是否开通的关键在与y5函数的执行结果,通过对y5函数的追踪,对y5函数的返回结果v0强制赋值为true,0x0变为0x1。



在对目标apk进行签名重打包过后重新安装,再次查看界面,发现成功绕过vip开通检测,成功开通vip。

某兔去除广告

在打开目标APP后,发现界面上加载有广告,想办法去除掉。由于这个广告并没有进行跳转,因此不能使用监控Activity的方式来获取广告的视图。



使用开发助手的布局查看功能查看广告所在的视图



打开布局查看功能后选中广告所在位置即可



选中后会出先两个视图,第一个视图才是广告视图,第二个选中后红框圈中的范围并不是我们想要的范围,因此第一个视图才是我们想要查看的视图。



选中后上面记录着视图实现的类名,根据类名进行查找实现代码。



搜索结果如下,视图设置一般在xml中。

尝试将视图的高度和宽度设置为0。



将目标apk编译重打包加入签名后重新安装并启动,成功将广告去除。

某壁纸升级vip

目标APP开通vip的方式类似于Web中的前端校验绕过,这里实现的方法是固定返回数据包,将身份证明的数据包进行修改,并通过抓包工具将APP每次请求服务器的数据包都进行修改。这个方法的前提是要知道身份伪造的数据包的具体参数。

数据响应包应修改如下

{
"code": 200,
"data": {
"id": 2220156,
"userId": "8kMP5il1",
"phoneNum": "手机号",
"username": null,
"avatarUrl": null,
"coverUrl": null,
"gender": 0,
"vipType": 256,
"vipPastDueTime": 0,
"vipLabelLevel": 3,
"vipLabel": "元老用户",
"createTime": 1693635001297,
"updateTime": 1693635001297,
"vitalityVipPastDueTime":253392455349 ,
"accountSign": null,
"webBackground": null,
"unionId": null,
"age": 0,
"category": null,
"isVirtual": 0,
"qqUnionId": null,
"pcVipType": 256,
"pcVipPastDueTime": 253392455349,
"vitalityPcVipPastDueTime": 253392455349,
"token": "账号token"
},
"error_msg": null
}

使用小黄鸟开启抓包



关键请求数据包如下,使用过滤功能过滤关键字token即可定位。



对目标数据包进行重写



将数据包的数据载荷部分进行修改保存



选择在线编辑,将要固定的数据修改保存即可



在插件管理器中开启插件,同时开启抓包即可。再次打开目标APP即可发现成功开通VIP

以上内容仅作学习记录,如有错误或瑕疵,欢迎批评指正,感谢阅读。

APP攻防--安卓逆向&数据修改&逻辑修改&视图修改的更多相关文章

  1. 记一次数据、逻辑、视图分离的原生JS项目实践

    一切的开始源于这篇文章:一句话理解Vue核心内容. 在文章中,作者给出了这样一个思考: 假设现在有一个这样的需求,有一张图片,在被点击时,可以记录下被点击的次数. 这看起来很简单吧, 按照上面提到到开 ...

  2. SQLServer之通过视图修改数据

    通过视图增删改数据注意事项 需要对目标表的 UPDATE.INSERT 或 DELETE 权限(取决于执行的操作). 如果视图引用多个基表,则不能删除行. 如果视图引用多个基表,只能更新属于单个基表的 ...

  3. Java-马士兵设计模式学习笔记-代理模式-动态代理 修改成可以任意修改代理逻辑

    一.概述 1.目标:动态代理的代理逻辑可以任意修改 2.思路: (1)要把代理逻辑抽离,站在jvm的角度思考,应独立出InvocationHandler接口,并接收被代理的对象及方法作为参数invok ...

  4. A、B同时打开一个页面进行同一条数据库记录进行修改,A修改完成后提交表单,A修改的数据保存完成后;当B也修改完成后,提交数据进行数据修改。此时B修改的内容会覆盖A修改的内容,请问如何避免?

    A.B同时打开一个页面进行数据中的一条数据进行修改,A修改完成后提交表单,数据修改保存完成后B开始页面也修改完成,开始提交进行修改.此时B修改的内容会覆盖A的内容,请问如何避免? 通过搜索和我个人总结 ...

  5. 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

    使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...

  6. 在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?

    在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了? 在删除成功后,加上这句话就可以了:$("#dg").datagrid ...

  7. 【转】安卓逆向实践5——IDA动态调试so源码

    之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结. 一. ...

  8. 【腾讯Bugly干货分享】移动App入侵与逆向破解技术-iOS篇

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e0acc896e9ebb6865f321 如果您有耐心看完这篇文章,您将懂 ...

  9. 安卓逆向(一)--Smali基础

    安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放 ...

  10. 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究

    20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...

随机推荐

  1. 分享我的 Shell 环境,git 操作效率提升 100% !

    每当我换到一个新的开发环境,蛮多东西要折腾的.比如 git.golang.环境变量等等.所以特地整理了一下,下次换新电脑也方便. ​ 本文分享我在工作中常用的环境变量 + Shell alias:比如 ...

  2. KVM 使用 Centos CLoud Image 安装虚拟机

    1 下载镜像 # 资源地址:https://cloud.centos.org/centos/7/images/ wget https://cloud.centos.org/centos/7/image ...

  3. NOIP 2023 模拟赛 20230712 C 论剑

    首先是伟大的题面 然后是数据范围 先解决1-4号数据点 1.枚举每个gcd的值p,统计一次答案,得到最小值(期望得分20) \[ans=\min_{p=2}^{\max a}\sum^n_{i=1}\ ...

  4. Log4j2的Maven依赖及其配置文件

    Maven依赖 <!-- log4j 2依赖--> <dependency> <groupId>org.apache.logging.log4j</group ...

  5. [python]为指定目录下的文件名批量加前缀

    前言 功能描述:批量重命名指定目录下的文件,文件名加前缀,默认格式为"目录名_原文件名". 示例代码 import argparse import os import sys im ...

  6. 《SQL与数据库基础》08. 多表查询

    目录 多表查询 多表关系 一对多 多对多 一对一 多表查询概述 分类 内连接 外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 案例 本文以 MySQL 为例 多表查询 ...

  7. 深入理解Linux内核——内存管理(4)——伙伴系统(1)

    提要:本系列文章主要参考MIT 6.828课程以及两本书籍<深入理解Linux内核> <深入Linux内核架构>对Linux内核内容进行总结. 内存管理的实现覆盖了多个领域: ...

  8. xv6 中的进程切换:MIT6.s081/6.828 lectrue11:Scheduling 以及 Lab6 Thread 心得

    絮絮叨 这两节主要介绍 xv6 中的线程切换,首先预警说明,这节课程的容量和第 5/6 节:进程的用户态到内核态的切换一样,细节多到爆炸,连我自己复习时都有点懵,看来以后不能偷懒了,学完课程之后要马上 ...

  9. tomcat配置域名绑定项目

    有时候我们需要根据访问的不同域名,对应tomcat中不同的项目例如:一个网站同时做了两套,pc版和手机版.手机版对应的域名是m.we-going.com,就需要在tomcat配置文件中加入以下代码:& ...

  10. VB快速上手文档教程

    前言 本来我想可能不会接触到这个语言, 不过在用excel时需要用到VBA. 这就不得不专门去学习一番. 入了个门, 专门写个文档留着. 万一以后用得到呢- 论VB, 我还是初学者. 如有弄错了的地方 ...