静态分析Android程序---读书笔记
#静态分析android程序(非虫笔记)##1.静态分析
####指在不运行代码的情况下,采用词法分析、语法分析等手段对程序文件进行扫描从而生成程序的反汇编代码,然后阅读反汇编代码来掌握程序功能的一种技术。
##2.快速定位关键代码
###2.1 反编译apk
####每个apk文件中都包含一个androidManifest.xml文件,它记录着软件的一些基本信息。比如包名、运行的系统版本,用到的组件。
###2.2 主Activity
#### 主Activity就是程序的入口,第一个运行的必然是主Activity,和c语言的main函数一样。
###2.3 Application
####这个类是传递全局变量,可以通过访问application来进行访问。
###2.4 定位关键代码的六种方法。
####(1).信息反馈发。详细参考:https://www.52pojie.cn/thread-672333-1-1.html
####(2).特征函数法:
##### 在不管程序给出什么样的反馈信息,终究是需要调用android SDK中提供的相关API完成的,比如调用Toast。
####(3).顺序查看法:
#####顺序查看法是指从软件的启动代码开始,逐行的向下分析,掌握软件的执行流程。这种方法在分析病毒中经常用的到。
####(4).代码注入法:
#####手动修改apk文件的反汇编代码,加入log输出,执行到特定点时的状态数据。在解密程序数据时经常用到。
####(5).栈跟踪法
#####栈跟踪法属于动态调试方法,它的原理是输出运行时的栈跟踪信息,然后查看栈上的函数调用序列来理解方法的执行流程。
####(6).Method Profiling
#####方法剖析属于动态调试方法,主要用于热点分析和性能优化。
## 3.smali文件格式
###3.1 头三行格式
####.class<访问权限>[修饰关键字]<类名>
####.super<父类名>
####.source<源文件名>
![这里写图片描述](http://otufvq0ew.bkt.clouddn.com/p.png)
###3.2 前三行过后就是字段或方法组成,首先是字段的声明方式。
####smali文件中字段的声明使用".field"
####静态字段的声明格式:
####static fields
####.field<访问权限>static[修饰关键字]<字段名>:<字段类型>
### 3.3 方法的声明方式:
####".method",方法分为直接方法与虚方法。
####直接声明格式:
#### #direct methods
#### .method<访问权限>[修饰关键字]<方法原型>
#### <.locals>//指定使用的局部变量的个数
#### <.parameter>//指定了方法的参数,有几个参数,就会有几个.parameter.
#### <.prologue>//指定了代码的开始处,如果是混淆过的代码可能会去掉该指令。
#### <.line>//指定了改指令在源代码中的行号。混淆后可能会除去了行号的信息。
#### <代码体>
#### .end method
<br/>
#### 虚方法的声明
####虚方法只是在起始处的注释为:virtual methods
###3.4 类实现了接口
####smali文件中使用".implements"指令指出
#### #interfaces
#### .implements<接口名>
### 3.5 注解smali表示
####smali中是用".annotation"指令指出。注解格式如下:
#### #annotation
#### .annotation[注解属性]<注解类名>
#### [注解字段=值]
#### .end annotation
##4 smali基本逻辑代码
### 4.1 循环语句
### 4.2 switch语句
### 4.3 try/catch语句 厉害了楼主,感谢楼主分享 能多分享点图片就好了 感谢分享,正好要学习 欢迎分析讨论交流,吾爱破解论坛有你更精彩! 看帖是一种态度,,,回帖是一种美德 看看怎么做的 感觉楼主做事很细致,挺好的,加油
页:
[1]