如何破解运动世界校园模拟器检测

本文已过时最新版不可用最早用安卓上的PacketCapture抓到http包只要删除对应模拟器文件就可以后来变成了https又对emulatorUrls进行了加密再追加了几个文件就难倒了一批菜鸡软件使用360加固直接逆向难度不小选择曲线救国第一次用Flidder的autoresponder直接把emulatorUrls的值清零返回.

大家好,又见面了,我是你们的朋友全栈君。

本文已过时 最新版不可用

Packet Capture
最早用安卓上的Packet Capture 抓到http包 只要删除对应模拟器文件就可以
后来变成了https 又对emulatorUrls进行了加密 再追加了几个文件就难倒了一批菜鸡
软件使用360加固 直接逆向难度不小 选择曲线救国
第一次用Flidder的auto responder 直接把emulatorUrls的值清零返回.成功
过段时间压抑不住自己的好奇心 就是想知道它检测了那些文件 遂开始学习用xposed来hook API倒是一猜就中 是java.io.File.exists
根据http://www.52pojie.cn/thread-534126-1-1.html 的教程 先hook360的ClassLoader 就能hook我想要的java.io.File.exists了
函数声明 public boolean exists()
只要hook时param.thisObject.toString().contains(“模拟器文件关键字”) 修改返回值为false

运行效果

运行效果

全部源码

package com.bc.hook;

import android.content.Context;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;


public class Main implements IXposedHookLoadPackage {
    private String TAG = "BC";

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        if (!loadPackageParam.packageName.equals("com.zjwh.android_wh_physicalfitness"))
            return;
        XposedBridge.log("Loaded app: " + loadPackageParam.packageName);
        //hook加固后的包,首先hook getNewAppInstance这个方法来获取context对象
        XposedHelpers.findAndHookMethod("com.qihoo.util.StubApp1211622898", loadPackageParam.classLoader,
                "getNewAppInstance", Context.class, new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        //获取到360的Context对象,通过这个对象来获取classloader
                        Context context = (Context) param.args[0];
                        //获取360的classloader,之后hook加固后的就使用这个classloader
                        ClassLoader classLoader = context.getClassLoader();
                        //下面就是强classloader修改成360的classloader就可以成功的hook了
                        XposedHelpers.findAndHookMethod("java.io.File", classLoader, "exists", new XC_MethodHook() {
                            @Override
                            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                super.beforeHookedMethod(param);
                                XposedBridge.log("被检文件:" + param.thisObject);
                            }

                            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                                super.afterHookedMethod(param);
                                if (param.thisObject.toString().contains("Nox") || param.thisObject.toString().contains("nox") || param.thisObject.toString().contains("stacks") || param.thisObject.toString().contains("Tian") || param.thisObject.toString().contains("tian")) {
                                    param.setResult(false);
                                    XposedBridge.log(TAG + "返回值设为false");
                                }
                                XposedBridge.log(TAG + "返回值: " + param.getResult());
                            }
                        });

                    }
                });
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126190.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 26款 流媒体服务器开源软件「建议收藏」

    26款 流媒体服务器开源软件「建议收藏」26款流媒体服务器开源软件1Flash流媒体服务器Red52DarwinStreamingServer3流媒体服务器OpenStreamingServer4MPEG4IP5开源流媒体平台FreeCast6

  • Clipboard.js实现复制文本到剪贴板功能[通俗易懂]

    Clipboard.js实现复制文本到剪贴板功能[通俗易懂]Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件,该插件可以将输入框,文本域,DOM节点元素中的文本内容复制到剪贴板中。官网地址:https://clipboardjs.com/ 浏览器兼容性:兼容Chrome、Firefox、Opera、Safari、IE9+对于不兼容的浏览器版本也有优雅的降级处理,可以采用下面的方式clipboard.o

  • python json.loads 中文_Python 的完美 json loads

    python json.loads 中文_Python 的完美 json loads为了对付表单提交时参数多和json结构复杂的情况,我写了一个名为recursive_json_loads的处理函数来对请求对象递归调用json.loads()以期能够一次性将所有参数转化为更好用的Python类型。后来又发现了web.py的Storage对象,使这个函数越发好用起来。lang:pythonimportsimplejsonasjsondefrecurs…

    2022年10月31日
  • 有效的沟通技巧

    有效的沟通技巧完整的沟通过程:信息发送、接收、反馈【管理名言】面对面的沟通是最好的沟通方式沟通的过程是一个完整的双向沟通的过程:发送者要把他想表达的信息、思想和情感,通过语言发送给接收者。当接收者接到信息、思想和情感以后,会提出一些问题给对方一个反馈,这就形成一个完整的双向沟通的过程。在发送、接收和反馈的过程中,我们需要注意的问题是:怎样做才能达到最好的沟通效果。 有效发送信息的技巧 …

  • Pytest(15)pytest分布式执行用例[通俗易懂]

    Pytest(15)pytest分布式执行用例[通俗易懂]前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • java数组去重「建议收藏」

    java数组去重「建议收藏」1、背景根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录。2、实现方法总结了四种方法,接下来进行展示1、方法一[java] viewplain copy               //数组去重方法一  String[] array 

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号