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 查看
同样的我们也可以通过栈跟踪的方法查看到程序执行的顺序!