天天看点

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

From:https://blog.csdn.net/weixin_42680210/article/details/90384358

在安卓逆向中,常常用到 栈跟踪、toast方法、Log日志的插入 等,以便于我们更好的分析代码,下面就演示下这三个方法的使用及简单的分析。。。

1. 插入 Log 信息输出:

在方法的开始处,右击 ---> 插入代码 ---> Log信息输出

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

插入代码:

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

然后 反编译 apk,并安装到模拟器,打开 ddms 查看 log 日志

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

这里我们就看到了刚刚在更新代码添加的 log 信息。

2. toast 弹窗的输出

简单起见,在刚刚的 log 代码位置下面,右击 ---> 插入代码 ---> toast输出  插入一段 toast 代码

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

反编译 apk,安装后我们查看效果

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪
安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

此时我们也可以在 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栈跟踪 插入一段栈跟踪代码

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

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 查看

安卓逆向_10 --- Log 日志的插入和分析、toast方法、栈跟踪

同样的我们也可以通过栈跟踪的方法查看到程序执行的顺序!

继续阅读