有幾個工具可以反編譯APK dex文件並插入各種鉤子。如何找出方法是否被鉤住(=第三方方法充當一層,用於破解應用程序)
例如,如果你想查詢你需要調用的函數PackageManager.getInstallerName()
安裝程序包的名稱。
現在就我個人而言,他們取代反射的方法,然後要麼調用真正的方法或發送一些欺騙的結果。
這具有巨大的優勢,即使您本身調用方法或使用反射來調用方法也無關緊要。
在這種特殊情況下,getInstallerName()
總是返回com.google.android.feedback
。
這種鉤一些源代碼可以在這裏找到:http://androidcracking.blogspot.de/2011/03/original-smalihook-java-source.html
有沒有辦法來檢測這些掛鉤?
感謝您的支持回答。很明顯,要發佈APK是不可能的(只要您存儲總和,總和發生變化)唯一的辦法就是對classes.dex進行crc。 dex2jar在運行時也會太昂貴。有沒有簡單檢查smali類的類的方法?此外,我需要更通用的方式,而不僅僅是這一個工具。 – Force 2012-03-31 06:54:08
啊,不明白你想在運行時執行此操作:)這改變了相當多的東西。我將編輯我的回覆... – waxspin 2012-03-31 14:40:36
'Class.forName()'是一個好方法,但是該類沒有插入到DEX中,而只是修改了字節碼。這意味着,沒有其他方法。 – Force 2012-03-31 15:28:29