动态分析Android程序

Posted r1ng0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态分析Android程序相关的知识,希望对你有一定的参考价值。

快速定位程序关键点

代码注入法

插入log函数,输出调试信息。

const-string v0,"TAG"
const-string v1,"info"
invoke-static {v0,v1},Landroid/util/log;->v(Ljava/lang/String;Ljava/lang/String;)I

然后使用logcat 输出信息:

logcat -s TAG:V

TAG 为 log 的第一个参数,V为等级

栈跟踪法

通过调用:new Exception("Print stack").printStackTrace();来显示某个函数是什么时候被调用的。

new-instance v0,Ljava/lang/Exception;
const-string v1,"print stack"
invoke-direct {v0,v1},Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
invoke-virtual {v0},Ljava/lang/Exception;->printStackTrace()V

然后利用 logcat 输出信息:

logcat -s System.err:V*:W

Method Profiling

利用Android SDK 自带的

DDMS(位置:AndroidSDK oolslibmonitor-x86_64)

也可以利用Android SDK 提供的函数,实现特定代码段的Method Profiling:

android.os.Debug.startMethodTracing("123");
a();
android.os.Debug.stopMethodTracing();

该代码会在sd卡的根目录生成名123的trace文件。然后利用Android sdk 提供的 traceview 打开该文件.

质料:

[原创]安卓APP动态调试技术--以IDA为例:https://bbs.pediy.com/thread-217612.htm

以上是关于动态分析Android程序的主要内容,如果未能解决你的问题,请参考以下文章

在android中动态创建选项卡并使用传入的参数加载片段

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

Android片段中的动态背景

如何从零开始集成DTM Android SDK

动态分析Android程序