针对app执行流程的几种分析方法(动态跟踪)

app动态分析主要分为动态跟踪以及动态调试两部分,前面提到了IDA以及smalidea都是属于动态调试。然而有的apk混淆比较严重,定位到关键代码部分比较困难,有的apk做了反调试会导致动态调试失败,因此动态跟踪方法就显得非常重要。
目前我所学到的动态跟踪方法主要有两种:
1.traceview
DDMS中比较好用的栈跟踪工具。
在这里插入图片描述
可以得到执行某操作期间调用的所有方法的执行顺序,包括父方法和子方法。通俗点说,就类似于在调用每个方法前都log了一下,这样执行流程就非常清晰可见。但是这种方法得到的结果比较混乱,中间会夹杂许多系统函数,虽然可以过滤(比如根据包名),但是总归不是非常的简洁明了。于是就采用了smali注入的方法,本质上还是属于动态插桩。

2.smali全局注入
本质上依旧属于动态插桩,只不过打印出来后不会像traceview那样夹杂许多系统函数。
这里用上次smalidea调试某投资app更新数据包时的通信协议字段进行分析。
首先反编译apk文件:
在这里插入图片描述
得到smali的文件目录,这里主要关注diyou以及example这两个文件夹,其他的类似com.google、com.igexin之类的第三方SDK不用管,也不用进行注入。在这里插入图片描述
或者直接apk改之理反编译,打开目录文件夹,接着将Inject_log.py放入要注入的smali文件目录中:
在这里插入图片描述
在这里插入图片描述
接着运行脚本,用法如下(将目录名修改成解压后的目录):
在这里插入图片描述
这里选择第三种,运行后效果如下:每个方法的开始都被注入了如下语句
在这里插入图片描述
紧接着将InjectLog.smali文件放入里面,注意目录与上图中com.hook.tools对应,也就是说将InjectLog.smali 拷贝到
./smali/com/hook/tools/ 中,如下图所示:
在这里插入图片描述
之后重新签名打包编译,接着将修改后的apk安装到测试机,并打开DDMS,运行app,如下图所示:在这里插入图片描述
与上篇smalidea动态调试某投资软件的文章中分析的流程大致相似。这对于想要分析定位关键代码但是混淆严重的app来说非常有效。相比traceview来说简洁明了不少。

参考链接:https://blog.csdn.net/charlessimonyi/article/details/52027563
github:https://github.com/encoderlee/android_tools

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值