静态分析Android程序 (2)

  • 主要还是说一下Android软件中的类。
    众所周知,Android程序开发中大量使用了监视器。,
    如Button的点击事件响应的OnclickListener、长按事件OnLongClickListener、ListView
    但是由于监听器只能临时使用一次
    所以多采用匿名内部类的形式来实现。
    如下面的按钮点击事件响应代码
    —————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————

—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————
btn.setClickListener(new Android.view.View.OnclickListener) //这个代码的是Android对Button的三种实现方式的一种
{
public void OnClick(View v){

}
});

public interface OnclickListener{
void OnClick(View v)
}

分析一下,在MainActivity.smali中 可以看到
new-instance //创建一个实例
invoke-direct //初始化实例
invoke-virtual //设置按钮事件监听器
Tip: invoke-**表示调用什么类型的函数,后面还有一堆参数

书上最后居然写了一句不必关心注解和监听器是什么鬼啦
黑人问号.jpg

—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————
注解类
注解是Java的语言特性,在Android的开发过程中也得到了广泛的使用
Android系统中涉及到注解的包共两个 一个是Dalvik.annotations ,该程序包吓得注解不对外开放,仅供和辛苦与代码测试使用,所有的注解声明位于Android系统源码的libcore\Dalvik\src\main\java\Dalvik\annotations 目录下
另一个是Android.annotations 解声明位于Android系统源码的frameworks\base\core\java\Android\annotations

下面详细来看一下
MemberClasses 即是子类成员的集合,通俗来讲就是一个内部类的列表
EnclosingClass 注解表名MainActivity的作用范围
需要注意的是accessFlags 是一个标志位,标明它的属性

另外还有signature 与Throws注解。前者用于验证方法的签名,
如果有抛出异常,则会有Throws注解。
—————————————————————————————————————————————————————我是分割线———————————————————————————————————————————————————————————————————
自动生成的类
看起来就是一堆资源文件。

接下来就是阅读反编译的smali代码了

文章目录