静态分析Android程序 (1)


  • //实在是太多了,于是分P来完成吧~
    反编译APK程序,在命令号下输入apltoos d /文件名/

必须要补充一波东西
—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————
1.src文件夹
里面存放所有的Java代码
2.gen文件夹
里面有一个R.java文件,在项目中添加任何资源都会生成一个相应的资源ID
3.assets
主要存放一些随着程序打包的文件
4.bin
主要包含了一些在编译时自动生成的文件,其中会有一个编译好的安装包
5.libs
第三方的jar包
6.res
存放所有的图片 布局 字符串等资源,前面提到的R.java中的内容也是根据这个生成的
其中字符串在value下
7.AndroidManifest.xml
整个项目的配置文件,
8.project.properties

和Windows不一样(至少我目前是这样觉得)
我们知道安卓分为四大组件,
activity、service、content provider、broadcast receiver。
一个Andriod程序由一个或者多个activity以及其他组件组成,每个activity都是同级别的。
在程序中使用activity都需要在AndriodMainifest.xml文件中手动声明,声明activity要用activity标签。
一般认为在AndriodMainifest.xml中寻找主activity

Application类,需要知道的是 这个类比其他类启动的早,一些未授权的代码一般都在这个类中。

—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————
接下来 Smali 文件格式
前三行描述了当前类的一些信息
.class 当前类
.super 父类名
.source 当前类的源文件名

#instance filed
.filed指令 字段的声明 字段有静态和实例字段两种
.filed<访问权限>(static)<修饰关键字><字段名><字段类型>

#direct methods
.method
.method<访问权限><修饰关键字><方法原型>
<.local> 指定了使用的局部变量的个数
<.paramter> 指定了方法的参数
<.prologue> 指定了代码的开始处
<.line> 指定了该代码在源代码中的行号
<代码体>
.end method

#interface
.interface<接口名>

#annotations
.annotations[注解属性]<注解类名>
[注解字段=值]
.end annotations
—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————

文章目录