如何在cydia java挂钩中处理自定义类型类?

时间:2015-01-26 08:08:52

标签: android hook cydia-substrate

我正在使用cydia基板在第三方应用程序中挂钩方法,这意味着我无法访问它的源代码。我想要挂钩的方法有一个自定义类型参数,如下所示:

methodToHook(com.thirdparty.app.CustomClass param1)

但是要挂钩方法,我需要“告诉”cydia这个方法的参数类型,如下所示:

MS.hookClassLoad("com.thirdparty.app.CustomClass",
                new MS.ClassLoadHook() {
                   @SuppressWarnings("unchecked")
                public void classLoaded(Class<?> CustomClass) {
                       Log.i("misty", "CustomClassclassLoaded");
                      Constructor constructor1;
                      try {
                          constructor1 = CustomClass.getMethod("CustomClass", CustomClass.class);

那么我怎么能给它真正的“CustomClass.class”来完成钩子?

1 个答案:

答案 0 :(得分:0)

我认为你在MS.hookClassLoad调用中已经过了一个级别。

试试这个

MS.hookClassLoad("com.thirdparty.app", new MS.ClassLoadHook() {
    public void classLoaded(Class<?> CustomClass) {
        Method getClass; try {
            getClass = CustomClass.getMethod("getClass", Integer.TYPE);

        } catch (NoSuchMethodException e) {
            getClass = null;
        }

        if (getClass != null) {
            final MS.MethodPointer old = new MS.MethodPointer();

            MS.hookMethod(CustomClass, getClass, new MS.MethodHook() {
                public Object invoked(Object CustomClass, Object... args)
                        throws Throwable
                {

                    int ModifiedValue = (Integer) old.invoke(CustomClass, args);
                    return ModifiedValue & ~0x0000ff00 | 0x00ff0000;
                }
            }, old);
        }
    }
});

com.thirdparty.app 是申请书 和 CustomClass 是正在加载的类 getClass 是CustomClass中的内部方法。