Open wsxk opened 3 months ago
https://wsxk.github.io/androdi_shell/
前言
Android加固原理
5.1 Android原理图 5.2 dex文件格式 5.3 Application类 5.4 android加固流程 5.5 常见加固平台以及安全加固的优劣
references
老规矩,看这篇前,建议了解一下我之前写得内容( https://wsxk.github.io/android_vm/
5.2 dex文件格式 说到安全加固,不得不了解dex的文件格式,先前的文章讲过,dex文件存放的是运行在Dalvik虚拟机内的字节码 其整体结构如下:
如果用010 editor查看某个dex文件的话,会发现如下结构:
基本对应
数据名称 功能解释 dex_header dex文件头部记录整个dex文件的相关属性 string_ids 记录一些字符串常量的索引 type_ids 记录了android中的类的字符串名称索引 proto_ids 记录函数的返回值,参数等等信息的索引 field_ids 记录类的field名称的索引 method_ids 记录类的method名称的索引 class_def 记录类的定义及名称的索引 data 数据区,保存了各个类的真实数据 link_data 静态链接数据区
dex_header中,有几个字符需要重点关注:checksum、signature、fileSize
checksum: 使用alder32算法校验从该字段开始(不包括checksum本身)到文件末尾(即从文件的第12字节开始到文件末尾)的完整性 signature:使用SHA-1算法校验文件的完整性(checksum发现错误,就无需进行SHA-1校验,也算是双重保险) fileSize : 记录dex文件大小
在使用加固技术对dex文件进行加固后,这三个字段是必须要修改的!!!
5.3 Application类 Application类比程序中的其他类启动的都要早,因此在分析Android程序中,需要先查看该程序是否具有Application类,如果有,就要看看它的oncreate()方法是否做了一些影响逆向分析的初始化工作 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。 绝大部分加壳apk,都会在application类做些文章 通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。 <application android:name=
https://wsxk.github.io/androdi_shell/
前言
Android加固原理
5.1 Android原理图 5.2 dex文件格式 5.3 Application类 5.4 android加固流程 5.5 常见加固平台以及安全加固的优劣
references
前言
老规矩,看这篇前,建议了解一下我之前写得内容( https://wsxk.github.io/android_vm/
5.2 dex文件格式 说到安全加固,不得不了解dex的文件格式,先前的文章讲过,dex文件存放的是运行在Dalvik虚拟机内的字节码 其整体结构如下:
如果用010 editor查看某个dex文件的话,会发现如下结构:
基本对应
dex_header中,有几个字符需要重点关注:checksum、signature、fileSize
在使用加固技术对dex文件进行加固后,这三个字段是必须要修改的!!!
5.3 Application类 Application类比程序中的其他类启动的都要早,因此在分析Android程序中,需要先查看该程序是否具有Application类,如果有,就要看看它的oncreate()方法是否做了一些影响逆向分析的初始化工作 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。 绝大部分加壳apk,都会在application类做些文章 通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。 <application android:name=