由於近期有業務上的需要,所以特地花時間去研究了一下如何使用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 執行的前后加上自定義代碼。
需要詳細代碼請留言