由于近期有业务上的需要,所以特地花时间去研究了一下如何使用hook技术。但是当我把xposed环境和程序编写完成时,突然发现手机上的某个支付软件无法使用了。这个时候我意识到,应该是该软件的安全机制在起作用。所以特地上网看了一些资料,发现有很多的朋友和我一样有这个问题,当然,也有大神给出了解决方案,我在这里给出这个解决方案的部分程序,给大家参考,仅供学习之用
1 final Class<?> classPop = XposedHelpers.findClass("com.alipay.mobile.base.security.CI", clazzLoader); 2 if(classPop != null) 3 { 4 XposedHelpers.findAndHookMethod(classPop, "a", classPop, Activity.class,new XC_MethodReplacement() { 5 @Override 6 protected Object replaceHookedMethod(MethodHookParam param) throws Throwable 7 { 8 return null; 9 } 10 }); 11 }
其实使用hook技术,最大的门槛,是对程序思维的理解,包括对xposed机制的理解以及对要hook程序的理解,在hook的过程中,基本90%的时间是在分析对方软件程序。比如某信和某支付软件的程序,在软件安全上就做了很多措施,包括账号登录、二维码生成、账单数据等都做了非常多的安全处理及代码混淆,当然,安全对我们用户来说是最重要的,所以希望他们越做越好。结尾,也希望hook技术被用到真正需要他的地方,让他发挥更大作用。有什么关于hook上不明白的地方,也可以给我发消息,讨论交流进步。
通过替换 /system/bin/app_process 程序控制 Zygote 进程,使得 app_process 在启动过程中会加载 XposedBridge.jar 这个 Jar 包,从而完成对 Zygote 进程及其创建的 Dalvik 虚拟机的劫持。
Xposed 在开机的时候完成对所有的 Hook Function 的劫持,在原 Function 执行的前后加上自定义代码。
需要详细代码请留言