zoukankan      html  css  js  c++  java
  • 【移动安全基础篇】——16、静态分析的概念与定位关键代码

    静态分析:
    不运行代码的情况下,阅读反汇编代码掌握程序功能

    两种方法:
    1. 阅读 Dalvik 字节码(通过 baksmali 反编译 dex 文件生成 samli 文件)
    2. 阅读 java 代码(通过 dex2jar 生成 jar 文件,在 jd-gui 阅读 jar 文件)

    常用步骤:
    1. 反编译 apk
    2. 通过 AndroidManifest.xml 查找主 Activity

    3. 查看程序的入口函数:主 Activity 的 onCreate()
    4. 查看 Application 类(全局类,早于其他类启动)的 onCreate()函数,该函数通常用作授权检测

    定位关键代码常用方法:

    1. 信息反馈发:运行时信息
    2. 特征函数法:运行时行为
    3. 顺序查看法:执行流程
    4. 代码注入法:添加 Log

    Smali  代码格式:

    内部类的表示:
    MainActivity$1.smali:匿名内部类,多用于程序中的响应
    MainActivity$SNChecker.smali:成员内部类
    MainActivity.smali:外部类
    this$0 是内部类自动保留的一个指向所在外部类的引用。this 表示父类的引用,右边的 0 便是引用的层数,例如:ThirdInner 是 this

    this$X 型字段都被指定了 synthetic(合成的、编译器生成的)属性,表明他们是被编译器合成的、虚构的、非 java 代码指定的字段。
    构造函数执行步骤:
    1. 保存外部类的引用到本类的一个 synthetic 字段中
    2. 调用内部类的父类构造函数
    3. 内部类初始化

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    thinkphp目录解析
    开发规范
    form
    命名空间
    类与对象
    OS知识点汇总
    C++每日一记!
    语言哲学和语言逻辑
    形式语言与自动机
    C#脚本
  • 原文地址:https://www.cnblogs.com/devi1/p/13486450.html
Copyright © 2011-2022 走看看