各位愛好安卓逆向的大佬們早上好,今天呢小弟不才在這裡拙劣的給大家講解一下咱們frida hook java層,望不嫌棄!
首先呢我們來了解一下分析目標app程序一個目的。為什麼要去分析目標app代碼邏輯呢?原因是我們要找到hook的具體類以及方法名,參數等這些基本信息,這樣才能達到我們的hook目的。
編寫hook代碼的時候,我們此處列舉了:
A、普通方法
B、構造方法
C、重載方法
D、構造對象參數
E、修改對象屬性
我們把這個五個方法作為本次的案例。
註:填寫包名、類名、方法名、參數列表、參數類型等
我們上面這些步驟都完成以後呢,我們就可以輸入我們的hook命令,然後啟動程序觸發,hook成功顯示,我們來分析目標程序,這裡我打開jadx-gui工具,在我們的onClick點擊事件裡面,發現了5個分支,這五個分支就是走5個不同邏輯,但是這5個分支都在調用的時候,用了一個utils,這樣一個類,在調用的時候也傳入了相關的一些參數。
那麼我們先分析一下utils該類,該類有五個方法定義。
分別有int型參數,也有string類型參數,那麼該類參數被調用的時候傳入相應的一些參數,那麼最終我們要hook的就是utils這個類,以及當前程序的一個包含和utils這個類,以及方法名這些參數我們都是要牢牢記住的,還有我們的參數列表以及我們的一個參數類型。
我們分析完了之後,接著我們要進行一個代碼的編寫,我們列舉了五種代碼的編寫。
我們在該代碼裡面一定要填寫我們的包名以及具體的一些類名。填入類名結束之後,我們要傳入a和b兩個參數。參數也是根據相對應的參數進行在這裡填寫的,填寫完下面進行列印,兩個參數列印完畢以後返回值為5和8兩個int型,源程序是2000和5000。
五個方法編寫完畢之後在該程序的最下面一定要去填寫我們的目標app的一個包名。
編寫完成之後我們需要進行一個結果的驗證
啟動我們的模擬器
啟動完畢之後我們需要轉發埠,默認埠號為27042.
我們先輸入我們的hook方法命令
我們代碼的一個腳本拖到我們的cmd窗口裡面,然後回車。
回車完畢之後我們需要進行觸發。
源程序顯示的是7000,因為我們第一個參數是2000,第二個是5000,那麼被我們修改5和8之後看看能否成功。
我們會發現程序已經hook到我們的關鍵信息,看向參數說明我們已經hook成功。
Hook構造方法
Hook重載方法
Hook構造對象參數
Hook修改對象屬性
我們分析了目標app,找到具體的參數和包名以及類名,同時也編寫了五種方法的具體hook,運行了cmd命令,Python java.py進行hook,啟動觸發程序,hook也成功顯示結果,我們都做到了。
本次分享如果有不懂的地方可以私聊我和我聯繫,還有免費逆向大禮包等你來領取。