Android逆向
常用Android快速定位關鍵代碼介紹
1、字符串,特徵字
- 根據程序運行中出現的特徵字詞進行搜索,從而獲取定位到程序相關位置之中,以前用的比較多,不過現在一般難以找到想要的關鍵字,有時候需要對特徵字進行拆分來進行搜索,才能獲得一點提示
2、關鍵api監控
- 通過掛鉤關鍵的系統api,從而截取程序運行時候的數據,分析程序行爲從行爲上入手,一步一步地逼近關鍵點,這點算是比較難用到的技巧,需要對Android函數以及編程方面相當的熟悉,才能使用
3、掛鉤解密函數
- 使用到Xposed或者cydia之類的Hook框架,手動編寫Hook代碼,勾取需要的函數,動態dump出需要的信息
4、Monitor
-
(1、DDMS
- Android Log信息,是Android程序運行過程中,產生的一些運行信息,這些信息可能是由於目標程序產生的,也有可能是系統進程產生的。總之,可以提供非常多的信息,遇到問題,先找log,肯定是對的。
-
(2、Thread
- 跟蹤程序運行中的各個Thread的調用與運行類
-
(3、Method Trace
- 進程函數調用跟蹤,一般會跟蹤到很多的Trace函數,比較複雜,需要花費很多的時間去分析Trace數據
- startMethodTracing()—stopMethodTracing()
5、插Log信息
- 對自己關注的地方,手動插入log數據,自動打印出程序運行時候的參數
6、動態調試
- 動態調試很強大,熟悉了對程序分析很有用
從0開始打造自己的破解代碼庫
1、smali代碼插入
- log插入爲例
2、smali代碼編寫
-
如一個靜態返回helloword的方法:
- .class public Lf8/helloword/helloStr;
- .super Ljava/lang/Object;
- .method public static retHello()Ljava/lang/String;
- .locals 1
- const-string v0,“hello word”
- return-object v0
- .end method