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