缘起
ELF文件格式的讨论已经存在非常多的文章,这里试图从另一个角度来讨论如何学习ELF文件格式。OAID SDK已经更新到1.0.30了,发现代码保护方式变化了,采用了自实现Linker方式来保护代码,libmsaoaidsec.so 就是负责释放真实的so。但本文不讨论释放和 …
ELF文件格式的讨论已经存在非常多的文章,这里试图从另一个角度来讨论如何学习ELF文件格式。OAID SDK已经更新到1.0.30了,发现代码保护方式变化了,采用了自实现Linker方式来保护代码,libmsaoaidsec.so 就是负责释放真实的so。但本文不讨论释放和 …
在Android安全开发中,经常需要获取进程内模块的加载基地址,获取方法一般有:
上述这些方法比较慢,用于一些检测任务是可以的,考虑这 …
最近开发一个基于unicron的模拟执行库,为了更好地模拟进程和线程的一些特性(比如线程本地存储),需要知道Android进程的实际内存布局,这里主要介绍线程栈的布局,非主线程可以通过分析pthread_create实现过程 …
最近分析一个Android平台上的so,发现JNI函数命名如下:
函数名字和自己平时写代码不一样,故重新学习JNI方法的签名规则。
可以使用javah自动生成JNI函数签名,来探索函数命名规则。
javah -jni 包名.类名
一般类的普 …
/* Unicorn Emulator Engine */
/* By Nguyen Anh Quynh, 2015 */
/* Sample code to demonstrate how to emulate ARM code */
#include <unicorn/unicorn.h>
#include <string.h>
// code to be emulated
#define THUMB_CODE "\x10\xb5\x4f\xf6\x00\x74\xe8\xbf\x10\xbd"
// memory address where emulation starts
int STACK_MEMORY_BASE = 0x00000000;
int STACK_MEMORY_SIZE = 0x00800000;
int HOOK_MEMORY_BASE = 0x1000000;
int HOOK_MEMORY_SIZE = 0x0800000;
static void hook_code …