From:https://blog.csdn.net/weixin_42680210/article/details/90384358
在安卓逆向中,常常用到 棧跟蹤 及 toast方法 及 Log日誌的插入 以便於我們更好的分析代碼
下面就演示記錄這三個方法的使用及簡單的分析:
1. 插入 Log 信息輸出:
在方法的開始處,我們右擊->插入代碼->Log信息輸出
插入代碼:
然後我們反編譯apk,並安裝到模擬器,打開ddms查看log日誌
這裏我們就看到了剛剛在更新代碼添加的log信息。
2. toast 彈窗的輸出
在剛剛的 log 代碼下面,我們右擊->插入代碼->toast輸出 插入一段toast代碼
反編譯apk,安裝後我們查看效果
此時我們也可以在ddms中查看到日誌輸出,由此我們可以分析:
java.lang.Exception: denglibo Toast callstack! strTip=我是toast提示
at android.widget.Toast.show(Toast.java:127)
at com.reader.activity.MainActivity.showMustUpdateDialog(MainActivity.java:327)
程序先執行了MainActivity文件的showMustUpdateDialog方法,然後執行了show方法,程序的運行順序由下往上執行輸出,我們便可以通過簡單的插入toast輸出,來查看程序的執行順序,方便我們分析複雜的程序執行順序。
3. 棧跟蹤的使用
在剛剛的 toast 代碼下面,我們右擊->插入代碼->stack trace棧跟蹤 插入一段棧跟蹤代碼
smali 代碼:
# 棧跟蹤
new-instance v0, Ljava/lang/Exception;
const-string v1, "print trace"
invoke-direct {v0, v1}, Ljava/lang/Exception; -><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception; ->printStackTrace()V
# 棧跟蹤
回編譯apk,安裝,打開安裝好的 apk 和 ddms 查看
同樣的我們也可以通過棧跟蹤的方法查看到程序執行的順序!