Android逆向
常用Android快速定位关键代码介绍
1、字符串,特征字
根据程序运行中出现的特征字词进行搜索,从而获取定位到程序相关位置之中,以前用的比较多,不过现在一般难以找到想要的关键字,有时候需要对特征字进行拆分来进行搜索,才能获得一点提示
2、关键api监控
通过挂钩关键的系统api,从而截取程序运行时候的数据,分析程序行为从行为上入手,一步一步地逼近关键点,这点算是比较难用到的技巧,需要对Android函数以及编程方面相当的熟悉,才能使用
3、挂钩解密函数
使用到Xposed或者cydia之类的Hook框架,手动编写Hook代码,勾取需要的函数,动态dump出需要的信息
4、Monitor
(1、DDMS
Android Log信息,是Android程序运行过程中,产生的一些运行信息,这些信息可能是由于目标程序产生的,也有可能是系统进程产生的。总之,可以提供非常多的信息,遇到问题,先找log,肯定是对的。
(2、Thread
跟踪程序运行中的各个Thread的调用与运行类
(3、Method Trace
进程函数调用跟踪,一般会跟踪到很多的Trace函数,比较复杂,需要花费很多的时间去分析Trace数据
startMethodTracing()—stopMethodTracing()
5、插Log信息
对自己关注的地方,手动插入log数据,自动打印出程序运行时候的参数
6、动态调试
动态调试很强大,熟悉了对程序分析很有用
从0开始打造自己的破解代码库
1、smali代码插入
log插入为例
2、smali代码编写
如一个静态返回helloword的方法:
.class public Lf8/helloword/helloStr;
.super Ljava/lang/Object;
.method public static retHello()Ljava/lang/String;
.locals 1
const-string v0,“hello word”
return-object v0
.end method