app逆向之安卓native層安全逆向分析(七):unidbg自嘗試某潮流app+dvmObject[]處理

前言

跟着龍哥搞了幾次unidbg了,這次也自己嘗試用來分析下某潮流app了。

分析

1.抓包

先抓個包

 

我們要搞的就是這個sign-v1了。 

 

2.調試找參數

jadx一頓分析,一搜:

 

搜出來還不少,往下翻,找找一些特徵,很快找到這裏

 

點進去

 

 

 

 

ok,用objection hook之後,發現不是這個方法,但是確實是這個方法所在的類的b方法:

 

然後調用了這個getsign,getsign就在下面

 

再來hook下這兩個方法:

 

 

 

基本確定,就是這裏了,抓包工具也對比就是這裏:

 

3.ida查看:

打開ida看看,發現是靜態綁定的

 

 

可以的,感覺很簡單 

 

調試

1.搭架子

首先搭一下架子,然後既然他不是動態註冊的,那就可以不用設置調用jni_load了:

 

看着沒毛病,直接調用吧

 

2.調用&補環境

廢話不多說,直接拿着hook到的參數拿來調用:

 

 

看下,這個ach是啥,ok,看樣子就是隨機生成一個16位的字符串

 

 

 

補一下環境

 

 

繼續看

 

 原來就是把這幾個加起來

補一下:

 

 

結果已經出來了。但是打印的是一個dvmobject對象。很奇怪了。再看看hook的結果:

其實是個有三個元素的字符串數組。所以他應該是對象

斷點調試一下

 

 

 

 

結果這麼寫會報錯:

 

強轉string[]也不行,就很尷尬

 

 

3.結果修復

問了一下unidbg的大佬,應該這麼寫:

 

 這麼寫就可以了。

DvmObject[] result = (DvmObject[]) 
vm.getObject(number.intValue()).getValue(); String sign = result[2].toString();

 

4.另一種調用

首先,我們都知道有,地址調用,符號調用,如下:

 

 

其實,根據我問的unidbg玩的6的大佬,還有另一種調用

 

這麼寫,代碼量減少了很多。

 

但是有個問題就是,那個network類,需要在構造方法裏定義一下:

 

另外,這個方法的簽名,怎麼拿到,用jadx的smali代碼查看:

 

這裏就直接有了,複製過去就可以用,注意最後的【;】也要帶上。 

 

 

5.驗證是否可用

 

試試剛纔的兩種調用的結果,能不能拿來請求,然後正常返回呢?

 

 

ok,兩個都可以 ,說明主動調用,整個過程,很成功

 

 

結語

整個過程很輕鬆加愉快。除了最後的dvmObject數組的轉換,其他沒啥需要記錄的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章