Android安全

关于Android逆向破解以及Android应用保护。

看到原来有把原始的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 […]