zoukankan      html  css  js  c++  java
  • 安卓逆向,阻止app对root权限的检测

    我的CSDN地址:https://blog.csdn.net/zenglintao/article/details/106029499

    一、smali基本语法

    本次实战需要用到smali语言的知识,下面讲一下smali语言的基本语法吧

    .field private isFlag:z  定义变量

    .method  方法

    .parameter  方法参数

    .prologue  方法开始

    .line 12  此方法位于第12行

    invoke-super  调用父函数

    const/high16 v0, 0x7fo3  把0x7fo3赋值给v0

    invoke-direct  调用函数

    return-void  函数返回void

    .end method  函数结束

    new-instance  创建实例

    iput-object  对象赋值

    iget-object  调用对象

    invoke-static  调用静态函数

    条件跳转分支:

    "if-eq vA, vB, :cond_" 如果vA等于vB则跳转到:cond_
    "if-ne vA, vB, :cond_" 如果vA不等于vB则跳转到:cond_
    "if-lt vA, vB, :cond_" 如果vA小于vB则跳转到:cond_
    "if-ge vA, vB, :cond_" 如果vA大于等于vB则跳转到:cond_
    "if-gt vA, vB, :cond_" 如果vA大于vB则跳转到:cond_
    "if-le vA, vB, :cond_" 如果vA小于等于vB则跳转到:cond_
    "if-eqz vA, :cond_" 如果vA等于0则跳转到:cond_
    "if-nez vA, :cond_" 如果vA不等于0则跳转到:cond_
    "if-ltz vA, :cond_" 如果vA小于0则跳转到:cond_
    "if-gez vA, :cond_" 如果vA大于等于0则跳转到:cond_
    "if-gtz vA, :cond_" 如果vA大于0则跳转到:cond_
    "if-lez vA, :cond_" 如果vA小于等于0则跳转到:cond_

    二、root检测分析

    app检测root无非就以下几种方式

    1.检测系统版本是否为开发版

    2.检测手机上是否安装了root管理器(Magisk,supersu,superuser等)

    3.检测手机上是否安装了需要root的软件(xposed,lucky patcher等)

    4.检测手机是否存在二进制su文件

    5.检测手机是否存在busybox

    三、实战开始

    本次实战就用手机端的MT管理器,用apktool的话感觉有点大材小用了

    实战对象是某公司的金融类app

    img

    首先打开app会发现无法使用,因为手机已经被root了

    然后我们进行第一步修改,查找root工具的包名

    img

    我的手机是使用magisk管理root的,所以我就直接搜索magisk

    img

    通过查找找到了一个有很多包名的类,可以看出这是一个用来保存字符串变量的类

    img

    将里面的包名全部替换掉,随便替换成什么字符串都行,目的就是让它不能匹配

    然后还要替换里面的路径,路径不能随便替换,不然会导致应用无法打开的

    我是用的root管理工具是magisk,magisk会在你的手机根目录创建一个名为sbin的文件夹

    里面存放着su和busybox,所以我只要替换掉sbin这个文件夹就可以了

    替换掉之后就保存编译

    img

    再次运行错误代码变成了R008

    使用R008继续查找dex文件

    img

    然后找到了错误码所在的类

    这条语句是一个Lambda表达式,写成java就是bVar.f() ? "R008"

    就是说当bVar.f()是真的时候就显示R008

    我查了一下,这个bVar是b类new的一个对象,而这个b类是在com.scottyab.rootbeer.b这个包下面

    我打开了这个包下面的b类,找到 f 方法,发现这里是执行了su命令以及which命令,于是我把这两条命令也替换了,再次保存编译。

    img

    最后打开app查看结果

    img

    完美解决root手机不能使用的问题

  • 相关阅读:
    118. 杨辉三角
    1054. 距离相等的条形码
    面试题 02.01. 移除重复节点
    289. 生命游戏
    KONGA下的HAMC插件功能 --JAVA代码实现
    JPA
    Spring Cloud概述
    Spring框架分为哪七大模块,各模块的主要功能作用是什么
    ActiveMQ
    新手也能看懂,消息队列其实很简单
  • 原文地址:https://www.cnblogs.com/zenglintao/p/12861113.html
Copyright © 2011-2022 走看看