Android安全–从defineClassNative看类的加载过程
前面一篇文章中讲到Dex的加载过程,其中涉及到的结构体有: struct DexOrJar { char* fileName; bool […]
前面一篇文章中讲到Dex的加载过程,其中涉及到的结构体有: struct DexOrJar { char* fileName; bool […]
看到原来有把原始的dex文件加密保存,然后解密后使用DexClassLoader加载文件的方法,就来分析下DexClassLoader的加载流程: 源码地址:http://androidxref.com/4.4_r1/xref/libcore/dalvik/src/main/java/dalvik/system/DexClassLoader.java 该class加载器是加载包含classes.d […]
这次分析是参考大神的步骤来的,主要是为了熟练下IDA的使用。 apk下载地址:http://pan.baidu.com/s/1dD357XZ 一、安装apk文件,打开软件如下: 而我们破解的目的就是得到真正的密码。 二、首先使用apktool反编译apk,找到按钮的监听函数,在里面可以看到调用一个check函数来对用户输入进行验证,然后返回结果。 而我们看到这个函数申明为native,所以这个函数 […]
很多脱壳教程里面经常看到在dvmDexFileOpenPartial这个函数下断点,但是为什么在这个函数下断点就能把dex dump下来呢,下面从源码来看看dex的优化流程。 源码传送门:http://androidxref.com/4.4_r1/xref/dalvik/dexopt/OptMain.cpp OptMain中的main函数就是优化dex的原始入口: int main(int arg […]
系统加载so,在完成装载、映射和重定向以后,就首先执行.init和.init_array段的代码. 首先来看看加载so的流程:http://androidxref.com/4.4_r1/xref/bionic/linker/linker.cpp soinfo* do_dlopen(const char* name, int flags) { if ((flags & ~(RTL […]
有的时候我们需要注入smali调用Log输出,打印字符串的值。 比如说: 如果我们要打印下面v1的值。 new-instance v1, Ljava/lang/String; const-string v7, “this is my string” invoke-direct {v1, v7}, Ljava/lang/String;-><init>(Lja […]
有时候需要检测是否在模拟器上运行还是在真机运行,话不多说。检测代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 […]
通过NDK开发,可以使用C++编写代码,生成so文件,然后通过Android应用的Java代码调用接口使用C++里面的函数。 一、首先下载ADT和NDK 下载地址: ADT:http://developer.android.com/sdk/installing/installing-adt.html NDK:http://developer.android.com/ndk/downloads/in […]
前面讲到使用Cydia Substrate进行hook,原文链接:http://www.alonemonkey.com/cyidasubstrate.html 刚刚试了下Xposed框架进行HOOK,顺便记录下: 首先下载Xposed Installer,也就是Xposed安装器,下载地址为:http://repo.xposed.info/module/de.robv.android.xposed […]
首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压。可以看到里面有一个META-INF文件夹,里面就是签名验证的文件。有三个文件MANIFEST.MF、CERT.SF、CERT.RSA分别保存着不同的签名信息,下面一个一个来分析: 首先是MANIFEST.MF文件,打开MANIFEST.MF文件如下: Manifest-Version: 1.0 Created-By: 1.0 (An […]