Fundamentals Review

Android应用程序是在APK格式的文件中的,APK是基于ZIP文件的(可以将APK后缀改成ZIP后缀,然后可以使用unzip去解压)。

APK文件内容:

AndroidManfest.xml

META-INF/

·存储签名相关的信息

classes.dex

·Dalvik字节码,存储在dex后缀的文件中。android的dalvik虚拟机则是.dex可执行文件,你可以理解为是.class的进一步封装。

lib/

·Native库,包含CPU的库模拟,如armeabi、mips等;

assets/

·每个应用程序都需要这个目录;

·可以包含额外的native以及dex文件。恶意代码、native库、Dalik经常都是放在这个地方。

Dalvik & Smali

Android应用大部分都是Java写的,在Android上,Java会被编译为DEX(Dalvik Executable)。

正向开发是吧Java代码编译成DEX代码,逆向开发刚好相反:

逆向工程师:

Smali代码就是Android上的汇编代码。

如下面的Java代码:

public static void printHelloWorld() {System.out.println("Hello World")
}

对应的Smali代码是:

.method public static printHelloWorld()V.registers 2sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;const-string v1, "Hello World"invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)Vreturn-void
.end method

程序的入口点

逆工程最重要的事情是找到程序的入口点,便于分析。有以下几个入口点:

1.Launcher Activity:哪些带有UI的程序,会有一个活动页,当运行Android程序时会首先加载这个活动页,在AndroidManfest.xml中定义了主活动页,

<activity android:name=".LauncherActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

2.Services:无UI界面的Android应用,要关注Services,当startService调用启动服务时,onStart方法将会被执行。

3.Broadcast Receivers:有时消息传递就是使用广播。Broadcast Receivers监听器广播。这个监听器有两种方法:一个是调用registerReceiver()这个API,另一个是在代码中重写onReceive此方法。

4.Exported Components(Services & Activities):Services和Activities可以被导出,允许其他进程和服务进行调用,导出的Services和Activities可以被其他进程或设备调用,通过查看AndroidManfest.xml中的结点信息可只他是否被导出:

<service android:name=".ExampleExportedService" android:exported="true"/>
<activity android:name=".ExampleExportedActivity" android:exported="true"/>

5.Application Subclass:一般程序会继承Application类,首先考虑attachBaseContext,其次考虑onCreate。

Android逆向文档阅读笔记-Android Application Fundamentals相关推荐

  1. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  2. FreeRTOS官方指导文档阅读笔记

    FreeRTOS官方指导文档阅读笔记 基于 161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf,可 ...

  3. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  4. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  5. Blockly学习之文档阅读笔记

    文档阅读来源--谷歌官网介绍: https://developers.google.com/blockly/guides/overview 概述 一个用于Web.Android.iOS的可视化代码编辑 ...

  6. Android给文档加水印,Android文档水印之PDF水印

    随着移动终端办公化的普及,在Android手机中阅读文档已经是很普遍的事情了,但是有些文档可能是涉及到一些企业机密与敏感的内容,不希望随意扩散出去.为了防止重要的文档被截屏或者拍照而泄露,在文档中加上 ...

  7. Qt文档阅读笔记-QWebEngineView及QML WebEngineView

    这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...

  8. Leaflet文档阅读笔记-Quick Start Guide笔记

    目录 网络加载JS和CSS 初始化地图 在地图上做标记 在地图上点击事件获得坐标 个人对这篇文档的体会 网络加载JS和CSS 先要加载css,然后在加载js <link rel="st ...

  9. NiceScroll文档阅读笔记-NiceScroll(3.7.6)基本使用

    前言 官方已经给出很好的文档了.在此本人总结下,方便以后查阅: GitHub - inuyaksa/jquery.nicescroll: nicescroll plugin for jquery - ...

最新文章

  1. Centos6.8防火墙配置
  2. 关于上传文件的跨域问题
  3. 安装和使用Smokeping(二)
  4. 解密微信小程序Java登录流程(ssm实现具体功能)
  5. linux下usb设备节点名不固定,解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点...
  6. 个人阅读 代码大全的阅读与提问
  7. 阿里云服务器上安装java配置jdk
  8. python列表去重的方法_Python列表中去重的多种方法
  9. 前端学习(2870):Vue路由权限『前后端全解析』1
  10. Python是什么?有那些用途?
  11. 计算机中逻辑运算用什么表示逻辑真,计算机逻辑运算和逻辑部.ppt
  12. 科学计算机器科学计算机,科学计算器多功能版
  13. h5 img js 点击图片放大_jquery – HTML5 Canvas调整图像点击放大
  14. 【全套完结】高频电子线路实验手册——全套实验报告册
  15. Android航海航线地图,航海王热血航线东南之海宝藏一览
  16. c语言正三角形编程plc,02-C语言实现一个简单PLC仿真小程序(下)
  17. Revealing the predictability of intrinsic structure in complex networks
  18. kryo com.esotericsoftware.kryo.KryoException: Buffer underflow.
  19. TDA8954TH功放板怎么样?
  20. 市场营销环境分析的方法

热门文章

  1. Why React?
  2. ServerBootstrap
  3. [UML]UML系列——用例图Use Case
  4. 【DevOps】从理念到实施
  5. 双非同学,自学编程,毕业一年逆袭百度!
  6. 想要 24 小时自学编程,那是不可能的,先自学 10000 小时再说!
  7. 10 大编程算法帮助程序员踏上“高手”层次,了解一下,你绝对不亏!
  8. 拯救IT人的报表神器来了,不用写代码,还免费
  9. 终极神器盘点的FreeEIM
  10. 最近在群里┏━━━━━━━━━飞鸽传书━━━━━━━━━━┓