安卓逆向 过某app环境检测

admin 2025年3月31日09:27:26评论19 views字数 2640阅读8分48秒阅读模式

用root设备进入app会提示下图

安卓逆向  过某app环境检测

这个软件的提示词过于简单了,没有进行加密什么的

直接在dex里搜关键词即可

安卓逆向  过某app环境检测

我们进入判断具体分析一下

安卓逆向  过某app环境检测

一共三个函数

每个函数判断不同

第一个函数是通过判断是获取的手机信息(System/build.prop文件)

一般root后的设备其他root特征便是ro.system.build.tags=text-keys

第二个函数是通过判断文件是否存在

其中判断的文件都有:

/system/app/Superuser.apk,/sbin/su,/system/bin/su,/system/xbin/su,/data/local/xbin/su,/data/local/bin/su,/system/sd/xbin/su,/system/bin/failsafe/su,/data/local/su,/su/bin/su这些文件

如果设备进行Root,会存在

第三个函数则是通过执行shell命令

检查设备上是否存在 su可执行文件,判断是否是Root设备

那么知道这些了我们很好去隐藏,但是也可以进行hook处理

我们先hook第一个函数的检测他是获取的Build.TAGS

通过查看android.os.Build类TAGS字段是通过

public static final String TAGS = getString("ro.build.tags");

那么去只要去hookgetString即可正常的TAGS是release-keys所以我们可以这样hook(mumu模拟器和我自己的root设备都是release-keys无法进行测试,请各位佬自行测试)

XposedHelpers.findAndHookMethod(Build.class"getString"String.classnew XC_MethodHook() {            @Override            protected void afterHookedMethod(MethodHookParam param) throws Throwable {                super.afterHookedMethod(param);                String str=(String) param.args[0];                XposedBridge.log("输出str:"+str);                if (str.equals("ro.build.tags")){                    XposedBridge.log("输出key:"+param.getResult());                    param.setResult("release-keys");                }            }        });

第二个函数,我们可以去hookFile构造类当传入的路径是上面那些文件路径,则替换成一个不存在的文件路径即可或者是hook exists函数,那么怎么判断当前传入的路径我们可以查看File类代码,通过构造参数看出  这个类的path字段储存的路径所以我们可以直接获取exists函数当前实例的path然后判断是否是想hook的实例,然后返回一个false,不存在文件

XposedHelpers.findAndHookMethod(File.class"exists"new XC_MethodHook() {            @Override            protectedvoidafterHookedMethod(MethodHookParam param) throws Throwable {                super.afterHookedMethod(param);                String path=(String) XposedHelpers.getObjectField(param.thisObject,"path");                if (path.equals("/system/app/Superuser.apk")||path.equals("/sbin/su")||path.equals("/system/bin/su")||path.equals("/system/xbin/su")||path.equals("/data/local/xbin/su")||path.equals("/data/local/bin/su")||path.equals("/system/sd/xbin/su")||path.equals("/system/bin/failsafe/su")||path.equals("/data/local/su")||path.equals("/su/bin/su")) {                param.setResult(false);                }            }        });

下面看第三个函数我们要怎么hook呢直接hook Runtime类的exec函数

XposedHelpers.findAndHookMethod(Runtime.class"exec"String[].classnew XC_MethodHook() {            @Override            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {                super.beforeHookedMethod(param);                String[] str=(String[]) param.args[0];                if (Arrays.asList(str).contains("su")){                    param.args[0]=new String[]{"echo""-n"};                }            }        });

替换他的执行命令,新的指令返回的InputStream是空的然后我们在打开软件发现root提示已经没有了

· 今 日 推 荐 ·

听歌有惊喜,欢迎私聊,vx:ivu123ivu

将下面地址复制到浏览器即可欣赏 

http://163cn.tv/DdLCYjl 

(来自@网易云音乐)

安卓逆向  过某app环境检测

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

原文始发于微信公众号(逆向有你):安卓逆向 -- 过某app环境检测

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

发表评论

匿名网友 填写信息