XposedHook HOOK注册机演示_修改返回值操作

APP演示图如下:

1.png

使用Jdax-GUI查看APP源码分析之后发现如下关键点代码:

2.png

    /* access modifiers changed from: private */
    public boolean checkSN(String userName, String sn) {
        if (userName == null) {
            return false;
        }
        try {
            if (userName.length() == 0 || sn == null || sn.length() != 16) {
                return false;
            }
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.reset();
            digest.update(userName.getBytes());
            String hexstr = toHexString(digest.digest(), "");
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hexstr.length(); i += 2) {
                sb.append(hexstr.charAt(i));
            }
            if (sb.toString().equalsIgnoreCase(sn)) {
                return true;
            }
            return false;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return false;
        }
    }

关键点已经找到,那么我们直接来Hook一波~以下截图是我的hook代码,直接修改返回值

3.png

编译后直接扔到虚拟机重启,然后验证

4.png

我们发现已经注册成功了,是不是很简单~并且传入的值内容也拿到了

5.png

以下是Hook的方法总结


beforeHookedMethod 会在调用原方法前执行,如果使用setResult则跳过原方法,并返回setResult参数中的值。

afterHookedMethod 会在调用原方法后执行,setResult可改变返回值 (本文采用此方法)

replaceHookedMethod 会完全替换原方法,即原方法不执行,且返回值可以直接return,setResult不生效。


在浏览的同时希望给予作者打赏,来支持作者的服务器维护费用.一分也是爱~