手动脱壳步骤较多,时间久了容易忘记,遂将一次完整脱壳步骤记录于此。 1.工具准备 IDA6.6  android_server  adb jdb等 2.运行android_server 用adb连上真机,运行android_server。 ./android_server 1 ./android_server 打开android_server后,它会默认在手机端监听23946端口。...

在脱壳的时候经常见到在dvmDexFileOpenPartial这个函数下断点,但是为什么要在这里下断点呢,这篇文件就从源码的角度跟踪一下Dex的加载流程。 源码可以在这里查看:/dalvik/dexopt/OptMain.cpp OptMain中的main函数就是加载dex的最原始入口,是用c代码写成的native函数: int main(int argc, char* const argv[]) { set_process_name("dexo...

在上篇文章中(回顾点这)介绍了混淆的基本原理,但是那种方法实现的混淆Dex在安装的时候会报错: INSTALL_FAILED_DEXOPT 1 INSTALL_FAILED_DEXOPT 经过一段时间研究后在源码(/dalvik/libdex/DexSwapVerify.cpp)中找到答案: 在加载dex...

1.Dex混淆原理 Dex文件中以类为核心,方法字段等数据都需要归属于某个类,所以在混淆时主要针对3类数据: 类名 类中的方法名 类中的字段名 为了更好的理解Dex文件中的类,先让我们看看类数据之间的关系图: 对于每个类而言,都有一个class_def_item结构体,其中class_idx指明了这个类的类名,superclass_idx指明了这个类的父类,在这个class_def_item结构体中最重要的就是class_dat...

这个解析器可以读取dex文件中的各个数据,比如string,field,method,class等。通过写这个解析器对dex文件格式有了比较清晰的认识,也算是为以后学习dex文件的混淆和加壳做准备把。 Python import struct import binascii import hashlib import zlib class DexFile: def __init__(self,filepath): self.dex = open(filepath,"r") ...

Dex文件中最重要的就是各个class了,method tale,field table,string table这些的存在都是为了class服务的,每个方法和字段最终都要归属与某个具体的类,它们之间的关系大致如下: header中的class_def_off指向了第一个类的class item,所有类的item都可以由class_def_off加上一个偏移获得,每个item中有8项,共32bytes,指明了这个类的名字,权限,类数据等,其中class_data_off指出...

Checksum Dex文件头中的checksum是用来校验文件的完整性,使用adler32算法。在python中的zlib库中有该算法: Python import zlib 1 import zlib checksum计算dex文件中checksum字段之后(12字节之后)的数据,主要代码如下: def CalChecksum...

Proto table中每一项占12个字节,每一项包括3个元素: shorty_idx(uint):函数原型(函数类型的简写),指向string table的索引 return_type_idx(uint):返回类型,指向type table的索引 parameters_off(uint):指向这个函数的参数列表(如果这个字段为0表示这个函数没有参数) shorty_idx 这个字段的内容是函数原型的简写形式,它遵循ShortyDescriptor语法。其中,第一个字母...

1.Dex文件格式 在上篇Dex文件解析文章中大致介绍了Dex文件的格式,回顾点这里:Android 文件解析之Dex文件头 这一节主要介绍string字符串是如何保存在Dex文件中的。 下面这张图很清晰的表示了string字符串在Dex文件中的存储方式: 在Dex的header中string_ids_size和string_ids_off分别表示了字符串的个数和string table的偏移,而string table中又存储着每个string数据的真实偏移...

1.Android apk文件结构 Android的apk文件相当于一个压缩文件,解压apk文件后目录下文件大致如下: 其中,META-INF文件夹一般存放apk的签名文件,res文件夹存放资源文件,AndroidManifest.xml是程序的全局配置文件,classes.dex是Dalvik下的可执行程序,resources.arsc是编译后的二进制资源文件。要想实现对apk文件的加壳脱壳首先得熟悉dex文件的结构,接下来就一步步的分析并...

+
跳转到评论