随笔分类 -  Android逆向

Nexus6P 设置Debug模式
摘要:一劳永逸,设置手机进入Debug模式实现完美Root 使用mkbootimg进行boot.ing编辑 将修改的系统官方Rom包中的boot.ing和mkbooting工具中的mkboot、mkbootfs、mkbootimg拷贝到Linux32位操作系统执行下面的操作 ./mkboot boot.img boot 说明: 进入解压后的boot/ramdisk/default.prop 修改 ro... 阅读全文
posted @ 2019-06-09 04:25 黑箱 阅读(487) 评论(0) 推荐(0)
ptrace函数深入分析
摘要:ptrace函数:进程跟踪。 形式:#include<sys/ptrace.h> Int ptrace(int request,int pid,int addr,int data); 概述: 父进程控制子进程运行,检查和改变它的核心Image。Ptrace主要用来实现断点调试。当进程被中止,通知父进 阅读全文
posted @ 2019-06-07 19:47 黑箱 阅读(10224) 评论(0) 推荐(1)
Native层和so接口和Java层
摘要:一、Java层加载so文件 Android在Java层加载so的接口是System.loadLibrary()逐级调用的过程: System.loadLibrary()系统源码: 例程 System.loadLibrary(“xxx”) [xxx:libname名称] Ctrl+左键Loadlibr 阅读全文
posted @ 2019-06-07 11:48 黑箱 阅读(5782) 评论(1) 推荐(1)
15 Android系统安全(简要)
摘要:Android的用户和第三方软件,Android组件和数据安全 手机root后的问题:1.系统不稳定,2.病毒入侵,3.数据泄露 Root原理: Root分两类:1。临时root,2。永久root Root后的问题:1。系统不稳定,2。易中毒,3。隐私泄露 Android权限检查机制:没有权限而执行 阅读全文
posted @ 2019-06-04 23:21 黑箱 阅读(425) 评论(0) 推荐(0)
Dalvik虚拟机结构——1
摘要:Dalvik核心内容:libdvm.so 主要有C语言实现,依赖于Linux内核的一部分功能:线程机制,内存管理机制,每一个Android应有都对应一个dalvik实例 Dalvik虚拟机功能:主要完成的 对象的生命周期管理,堆栈管理,安全和异常管理,垃圾回收 Dalvik虚拟机对:线程管理,类加载 阅读全文
posted @ 2019-06-04 21:02 黑箱 阅读(307) 评论(0) 推荐(0)
5.2 odex文件
摘要:odex是OptimizedDEX的缩写,是优化过的dex文件 odex两种存在方式: 1. 从apk程序中提取,和apk文件放在一起,后缀 odex,此类文件多是AndroidRom系统文件 2. 在cache/dalvik-cache缓存文件,后缀 dex a) Eg:system@app@ca 阅读全文
posted @ 2019-06-03 13:50 黑箱 阅读(1776) 评论(0) 推荐(0)
5.1 dex文件解析
摘要:1.DexHeader结构体占用0x70字节,源码位置 dalvik\libdex\DexFile.h文件中269/* 270 * Direct-mapped "header_item" struct. 271 */ 272struct DexHeader { 273 u1 magic[8]; /* 阅读全文
posted @ 2019-06-03 10:05 黑箱 阅读(573) 评论(0) 推荐(0)
3 Dalvik基础知识
摘要:Dalvik汇编基础知识: Dalvik指令:由位描述+指令格式标示 位描述: 1. 每16位空格隔开 2. 每个字母表示4位,每个字母按从高字节开始,排列到低字节。每四位之间可用 | 分开表示不同内容 3. 顺序采用A~Z单个大写字母作为一个4位操作码,op表示一个8位操作码 4. Ø表示这字段所 阅读全文
posted @ 2019-06-03 10:01 黑箱 阅读(498) 评论(0) 推荐(0)
8 smali文件格式
摘要:Apktool反编译apk后程序中每一个类都会有一个smali文件。 一、当前类信息:smali文件的头三行描述了当前类的一些信息。 Eg: .class <访问权限> [修饰关键字]<类名> .super<父类名> .source<源文件名> 根据DexClassDef结构解析获取三个字段的信息 阅读全文
posted @ 2019-06-03 09:06 黑箱 阅读(1088) 评论(0) 推荐(0)
5 dex文件
摘要:Dex文件中数据结构 类型 含义 u1 等同于uint8_t,表示1字节无符号数 u2 等同于uint16_t,表示2字节的无符号数 u4 等同于uint32_t,表示4字节的无符号数 u8 等同于uint64_t,表示8字节的无符号数 sleb128 有符号LEB128,可变长度1~5字节 ule 阅读全文
posted @ 2019-06-02 23:34 黑箱 阅读(274) 评论(0) 推荐(0)
13 ARM指令集与Thumb指令集
摘要:指令格式 ARM基本格式 <opcode>{<cond>}{S}{.W|.N}<Rd>,<Rn>{,<operand2>} opecode:指令助记符 cond:执行条件 助记符 标志 含义 EQ Z=1 相等 NE Z=0 不相等 CS/HS C=1 无符号数大于或等于 CC/LO C=0 无符号 阅读全文
posted @ 2019-06-02 20:11 黑箱 阅读(815) 评论(0) 推荐(0)
12 ARM汇编
摘要:Android系统采用java作为平台软件基础开发语言,NDK使Android平台可以运行C/C++代码这些代码汇编成ARM的elf可执行文件。 原生程序生成过程 经历4步:1。预处理2。编译3。汇编4。链接 经过第2步编译后C代码变成ARM汇编代码,NDK支持直接使用ARM汇编编写的 .s文件 A 阅读全文
posted @ 2019-06-02 20:09 黑箱 阅读(255) 评论(0) 推荐(0)
7 静态分析Android
摘要:静态分析两种方式: 1. 阅读反汇编的Dalvik字节码:使用IDA 分析dex文件或baksmali反编译的smali文件 2. 阅读反汇编的Java源码:使用dex2jar生成jar文件,用jd-gui阅读jar文件 每个apk文件中都含有一个AndroidManifest.xml文件,被加密存 阅读全文
posted @ 2019-06-02 20:04 黑箱 阅读(209) 评论(0) 推荐(0)
4 Android可执行文件
摘要:APK是Android Package缩写,使用zip解压文件即可打开。每个APK文件中都包含一个class.dex文件(odex过的APK文件除外)。class.dex文件就是Android系统Dalvik虚拟机的可执行文件 Android工程的打包方式两种: 1. Eclipse集成开发环境直接 阅读全文
posted @ 2019-06-02 19:59 黑箱 阅读(543) 评论(0) 推荐(0)
2 Android程序的执行
摘要:Android系统采用的是分层架构,分四层: 1. Applicitations:应用层 2. Applicitation Framework:架构层 3. Libraries:类库层 4. Linux Kernel:Linux内核层 执行流程: Zygote三种创建进程的方法: 1. frok() 阅读全文
posted @ 2019-06-02 19:57 黑箱 阅读(125) 评论(0) 推荐(0)
1 Dalvik和Java虚拟机
摘要:Dalvik虚拟机特点: 1. 体积小 2. DEX格式可执行文件,相比java运行速度快 3. 常量池采用32位索引值 4. 提供对象生命周期,堆栈,线程,权限,异常等管理 5. Android系统里每个进程对应一个Dalvik虚拟机 Dalvik虚拟机和Java虚拟机区别: 1. Java虚拟机 阅读全文
posted @ 2019-06-02 19:55 黑箱 阅读(155) 评论(0) 推荐(0)
Nexus6p手机root和安装xposed
摘要:进行root前需要两个前提条件 进入开发者选项:设置-〉关于-〉一直点版本号会出现,usb调试打开 手机连接pc命令行输入: adb reboot bootloader 进入bootloader模式 fastboot oem unlock(无效尝试:fastboot flashing unlock) 阅读全文
posted @ 2019-06-02 19:47 黑箱 阅读(953) 评论(0) 推荐(0)