当前位置: 首页 > news >正文

小迪安全v2023学习笔记(八十七讲)—— 安卓逆向篇Smail语法反编译重打包Activity周期Hook模块 - 实践

文章目录

  • 前记
  • APP攻防——第八十七天
    • 安卓逆向篇&Smail语法&反编译签名重打包&Activity周期&Hook模块
      • 前置知识
        • 常见安卓逆向工具及环境
        • Magisk+LSPosed安装
        • APK档案知识了解
          • 文件结构
          • APK组件
          • APK生命周期
        • APK逆向流程
      • APK逆向 - 靶场练手
        • 材料修改-结构&格式
        • 逻辑修改-Smail语法
        • 视图修改-Activity&XML
          • APK逆向改包
          • HOOK模块
      • APK逆向 - 实战分析
        • 实战案例1 - 淘小说-升级VIP
        • 实战案例2 - 刷圈兔-去除广告
        • 实战案例3 - 元气壁纸-永久会员

前记

  • 今天是学习小迪安全的第八十七天,本节课内容是关于安卓逆向的,主要是初步了解逆向的步骤、思路,以及学会采用一些好用的工具
  • 本篇文章篇幅比较长的原因是因为我觉得里面很多东西不太好懂,因此尽可能写得很详细,复现起来没那么吃力吧
  • 所有用到的资源已放至下方链接,然后我也找到了一些更好用的工具,链接在文章里,各位就自行下载吧:

APP攻防——第八十七天

安卓逆向篇&Smail语法&反编译签名重打包&Activity周期&Hook模块

前置知识

常见安卓逆向工具及环境
Magisk+LSPosed安装
  • 这里我们为了后面的演示,就先在雷电模拟器上装Magisk+LSPosed了,就是根据我上面给出的参考文章一步步安装即可

  • 如果在这两个页面显示无法获取,或者只有”选择并补修一个文件”这种安装方式,那多半是代理问题
    在这里插入图片描述
    在这里插入图片描述

  • 解决方式就是开个代理,我这里是用glider+postern解决的,glider就是一个代理池工具,将我PC端的代理形成一个代理池,然后在安卓端通过postern去连接发包,至于glider怎么使用就自己上网搜了

  • 我在安装的时候就只遇到了这一个疑问,如果遇到了其他的困难,欢迎留言至评论区或者私信我!

APK资料知识了解
文件结构
  • 大致的目录结构如下图所示:
    在这里插入图片描述
    在这里插入图片描述
APK组件
APK生命周期
  • 一个APK文件的Activity生命周期如下图所示:
    在这里插入图片描述

  • 这里主要讲的是Activity组件的生命周期,大致就是上面这张图所示,然后里面涉及到的函数介绍如下图:
    在这里插入图片描述

APK逆向流程

APK逆向 - 靶场练手

在这里插入图片描述

  • 这里大家先利用吾爱破解的靶场练练手,熟悉大概的反编译改包流程,然后再进行实际案例的演示
  • 今天主要是靶场的一到三关,包括熟悉APK结构、尝试更改APK逻辑以及关于Activity组件的内容
内容修改-结构&格式

在这里插入图片描述

逻辑修改-Smail语法

在这里插入图片描述

  • 第二关是这样的,它需要我们成功一键三连,但是直接点击会提示需先获取10个硬币,然后我们点击获取10个硬币之后就可能成功三连了

  • 这里的话,我们很有理由猜测它是一个if判断,如果硬币数量大于等于10,就可以成功三连,所以我们应该是要修改它的判断逻辑,比如改为大于10等等

  • 通过于是先尝试采用MT反编译,然后搜索关键词,这里能够搜索 “一键三连” 或者它的判断提示词 “请先获取10个硬币哦” 等等:
    在这里插入图片描述

  • 这句话在classes.dex中出现过,那我们就直接打开然后再次寻找:
    在这里插入图片描述

  • 成功找到那就直接双击打开,因为我们这里是要修改它的逻辑,所以需要看懂该代码是在干嘛,这里可能先转为Java代码看它的逻辑:
    在这里插入图片描述

  • 可以看到逻辑很简单,如果intRef.element < 10就提示,否则进入三连代码,那这里我们修改的思路不就几种吗:要么把小于改成大于,要么更改这个数值,要么删掉这个if判断

  • 这里因为只能更改Smail语法,所以我们需要先定位,它是m2onCreate$lambda-2方法,所以在Smail语法中对应这一段:
    在这里插入图片描述

  • 然后这里可以看到if-ge语句,这应该就是刚刚的if判断,那我们直接搜一下这个语句代表什么意思就得了:
    在这里插入图片描述

  • 意思是如果p0 >= v0,就跳转到后面:cond_15的位置,否则就执行下面代码,那根据Java代码,这里p0就是我的硬币数量,v0就等于10,所以我们先看看什么if语法代表小于:
    在这里插入图片描述

  • 直接更改然后签名重打包安装,此时大家硬币数量为0的时候长按一键三连就会发现它成功了:
    在这里插入图片描述

视图修改-Activity&XML
APK逆向改包

在这里插入图片描述

  • 这里如果直接打开第三关会弹出很多广告,并且点击返回键或者关闭键都是没用的,那这一关我们的目标就是去除广告弹窗

  • 这里广告是关于Activity组件的内容,它是动态触发的,所以我们需要动态去调试,使用MT的Activity记录,然后去打开这个靶场他就会记录到关于这个靶场的所有Activity记录:
    在这里插入图片描述

  • 很明显就找到了关于这个靶场的Activity记录,并且根据英文判断是这个com.zj.wuaipojie.ui.AdActivity类触发的,所以我们直接在classes.dex因为这个文件中存放的是核心逻辑)中搜索:
    在这里插入图片描述

  • 成功搜索到,然后双击点开,分析Java代码,这里主要代码在这里:
    在这里插入图片描述

  • 其实很简单,就是前置知识里面讲到的Activity的生命周期,然后你按照上面的逻辑看下去就知道这个代码的执行流程了

  • 所以我们发现它这里有两个关键的东西,一个是AD_TIMEOUT,猜测是广告的延长时间;然后还有一个是hasPaused,这个应该是判断是否推送过广告

  • 于是我们就可以修改两个地方:将AD_TIMEOUT改为0,或者更改jump()的判断语句

  • 选择第一种方式我们先看3000的十六进制为0xbb8,于是在Smail中找到这个地方,更改为0x00
    在这里插入图片描述

  • 保存签名重打包,重启靶场就会发现没有广告了,当然修改jump()逻辑也是同样的道理,将if-nez改为if=eqz即可:
    在这里插入图片描述

HOOK模块

APK逆向 - 实战分析

  • 经过上面的靶场练习,我们已经熟悉了安卓逆向最基本的运行,所以接下来会通过三个简单的案例来看看实战中该有什么作用
  • 需要注意的是,本节课大家并不讨论加壳的APP如何进行脱壳,因此这里的案例均为不加壳或者能够被自动脱壳的软件
实战案例1 - 淘小说-升级VIP
实战案例2 - 刷圈兔-去除广告
  • 这个软件emmm,这里就不演示了,和上面靶场环境差不多,没什么必要
实战案例3 - 元气壁纸-永久会员
http://www.zskr.cn/news/17647.html

相关文章:

  • 抽象函数的定义域
  • GEO优化系统哪个最好?
  • Oracle故障处理:ASM手动修复磁盘头
  • 5分钟,15分钟,差距大,做5分钟线要严格止损
  • OIFHA251009 比赛总结
  • 营销农场小程序管理系统:营销吸粉与流量变现解决方案
  • 2025智能电动伸缩门厂家推荐榜
  • 软件技术基础第一次作业1
  • 实验结论
  • 吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(三)
  • 【大数据】AI就业影响数据可视化分析系统 计算机毕业设计项目 Anaconda+Django+Spark+Hadoop环境调整 附源码+文档+讲解
  • PKDV5351高压差分探头在氢燃料电池堆电压均衡监测中的实战应用案例
  • 2025秋_8
  • react的依赖项数组 - 实践
  • VSCode万能Debug任何执行python文档命令的详细教程
  • PWN手的成长之路-13-jarvisoj_level0
  • 微信最新协议API上线!个人号快速接入
  • Firefox火狐浏览器插件下载、安装路径、备份插件、手动安装插件
  • 实用指南:PyTest框架学习
  • 计算机毕业设计springboot制氢领域文献管理强大的系统 基于SpringBoot的氢能研究文献管理平台 面向制氢技能的文献资料管理系统设计与实现
  • 数论中
  • Vue 3 + TypeScript 中 QCarousel 模板引用类型错误解决方案
  • 深入解析:recipes中声明 DEPENDS += “virtual/kernel“ 的效果
  • Ubuntu安装 IDEA
  • .                    当项目规模失控时:架构师的“止损”之道
  • .                                  为什么资深开发者越来越少写代码?
  • 从0开始使用LabVIEW操作数据采集卡-概述和新建新建项目
  • 当开发者学会拒绝
  • 2025 年板材源头厂家最新推荐排行榜:聚焦 ENF 级环保、零醛添加等优质板材,精选实力企业助您精准选购零醛添加/装修/生态板/指接板/直拼板板材PET实木板材厂家推荐
  • 世界的物质性及发展规律