安卓逆向 VIP破解的学习和总结

admin 2025年6月7日13:24:26评论0 views字数 1620阅读5分24秒阅读模式

工具

  1. 教程 Demo
  2. 核心破解
  3. MT 管理器
  4. 界面分析
  5. 雷电模拟器

课程任务

  1. 完成关卡2
  2. 掌握修改判断、强制跳转、修改寄存器的值 的基本原理

实现过程

前情提要

本次主要完成的任务,是正己大佬的教程 Dome 第二关 初试smail语法&快速定位之id与字符
安卓逆向  VIP破解的学习和总结

快速定位

教程中讲述的两种快速定位方法:id 和 字符分别对应 idHex 和 text ,使用类似于界面分析 APP 带有布局分析功能的软件,就可以查看控件信息,然后使用 MT 管理器搜索定位
安卓逆向  VIP破解的学习和总结
安卓逆向  VIP破解的学习和总结

初试 smali

不得不说,到了今天相比于17年18年,AI 对学习有了很大的便利
安卓逆向  VIP破解的学习和总结

正己大佬在教程中对 smali 有解释学习,在这里就不过多阐述了,在 MT 管理器和 NP 管理器中都内置了 smail 指令查询
安卓逆向  VIP破解的学习和总结

过程复现

首先会将两个定位方法复现一遍,然后进行三种修改方法

快速定位

其一 文本定位

首先,观察界面,查看文字,任务要求是获取硬币并一键三连。主要的两个分别是 获取硬币 和 一键三连,回到 MT 管理器,搜索(PS:MT 管理器如何提取安装包定位位置就不细说了,具体可以看一下上期文章基于《安卓逆向这档事》其二APK双开、汉化、软件图标修改等问题的实现与总结 - 吾爱破解 - 52pojie.cn
安卓逆向  VIP破解的学习和总结

安卓逆向  VIP破解的学习和总结

搜索出了两个文件已知 resource.arsc 文件是一个资源 ID 映射表,那么把 classes.dex 用 dex 编辑器++,再搜索“一键三连”
安卓逆向  VIP破解的学习和总结
安卓逆向  VIP破解的学习和总结

这样就定位到了位置
安卓逆向  VIP破解的学习和总结

其二 id 定位

通过界面分析 APP,查看当前界面可查看的控件,比如“一键三连”的控件信息
安卓逆向  VIP破解的学习和总结
安卓逆向  VIP破解的学习和总结

获得 id 以后,再回到 MT 管理器中,搜索
安卓逆向  VIP破解的学习和总结
当提示搜索无结果的时候,可以根据需要进入 dex 文件或者 arsc 文件查询,比如查资源就去 arsc,查代码就去 dex
安卓逆向  VIP破解的学习和总结
本次主要是查代码,所以进 dex,然后一个一个查看就可以了
安卓逆向  VIP破解的学习和总结

修改方法

首先打开根据前面交的定位法,找到包含会员的文件
安卓逆向  VIP破解的学习和总结

打开第一个文件,我们会看到下面这些代码,smali 就指的是下面这些,在这里就需要一些基础知识
安卓逆向  VIP破解的学习和总结
在这里,.line {num} 代表在源代码中的行数,也就是说可能7~8行在源代码中只有1行
安卓逆向  VIP破解的学习和总结

反正也可以用查询,MT 管理器/NP 管理器都自带 smali 指令查询,但是在编辑器中不能用,可以复制到另一个软件进行查询
安卓逆向  VIP破解的学习和总结
只不过,MT 管理器的会员可以安装插件,安装一个 smali 插件就可以了
安卓逆向  VIP破解的学习和总结
好,基本的认知结束,下面开始实操

修改判断

可以看到,如果当代码进入 line 37的时候就代表会员破解完成,但是在他上一步的if-eqz p0,:cond_43代表 p0==0的时候,跳转到 cond_43
安卓逆向  VIP破解的学习和总结
跳转过来,就会发现,提示充值大会员
安卓逆向  VIP破解的学习和总结
那么就可以修改if-eqz p0,:cond_43,让 p0只有在不等于0的时候才会跳转
安卓逆向  VIP破解的学习和总结
所以修改判断就可以把if-eqz改成下面任意一个就可以了
安卓逆向  VIP破解的学习和总结
当然也可以直接注释掉
安卓逆向  VIP破解的学习和总结

强制跳转

强制跳转在这里需要用到一个命令 goto,代表无条件跳转
安卓逆向  VIP破解的学习和总结

修改寄存器

[!在 smali 里的所有操作都必须经过寄存器来进行]
本地寄存器用 v 开头数字结尾的符号来表示,如 v0、 v1、v2。

参数寄存器则使用 p 开头数字结尾的符号来表示,如 p0、p1、p2。

特别注意的是,p0不一定是函数中的第一个参数,在非 static 函数中,p0代指“this",p1表示函数的第一个参数,p2代表函数中的第二个参数。而在 static 函数中 p0才对应第一个参数(因为 Java 的 static 方法中没有 this 方法)

首先我们可以看到, isvip()这个函数反应大会员的情况Z表示返回布尔类型,放入代码中的逻辑就是,当 isvip 返回0的时候,跳转到 cond_43, 返回1的时候,继续往下
安卓逆向  VIP破解的学习和总结
跳转到isvip ()查看赋值,可以看到给v0赋了十六进制的0,返回出的结果是v0,所以在这里修改为十六进制的1就可以了
安卓逆向  VIP破解的学习和总结

破解大会员完成
安卓逆向  VIP破解的学习和总结

总结

问题只有一个,如何实现的解决方法却又无数个。比如强制跳转也不是非用 goto,也可以直接修改跳转对象
安卓逆向  VIP破解的学习和总结

本文内容来自网络,如有侵权请联系删除

原文始发于微信公众号(逆向有你):安卓逆向 -- VIP破解的学习和总结

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月7日13:24:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向 VIP破解的学习和总结https://cn-sec.com/archives/3792254.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息