本文记录一些Android Root相关的内容
Continue reading- 无符号整数
- 有符号整数
- 截断
- 配合不安全函数进行栈溢出
windows 栈溢出
Continue readingx86跟ARM在一些指令集上有区别,但是大致逻辑一直。下面是以一个有栈溢出漏洞的vc6.0编写的C程序做示例。
Continue reading表现形式:
(参数类型参数类型参数类型参数类型)函数类型
例如:
1 | public int encrypt(int res, String test, long key) |
函数方法体为:
(ILjava/lang/String;J)I
- I 代表int
- Ljava/lang/String; 代表String。因为它不属于基本数据类型,是一个类,所以需要指定完整的路径
- J代表long
参数与参数之间无间隔,用括号包裹,紧接着跟函数的数据类型。
Continue readingso注入的主要思路是:
- 找到目标进程
- 使用ptrace跟踪目标进程,保存目标进程的状态
- 获得mmap、dlopen、dlsym等库函数在目标进程中的偏移地址
- 调用mmap在目标进程内部申请一段内存空间
- 将我们的ShellCode写入到刚才申请的内存空间中
- dlopen打开Shellcode,dlsym调用Shellcode库的函数
- 恢复原so状态,detach
Xposed的表现形式:
可以拦截任意应用的任意方法实现,将它替换为自设的功能代码。
主要逻辑:
- 通过包名匹配查看是否有需要hook的模块。如果有,修改它的java方法为本地方法(通过修改accessFlag实现)
- 当目标方法被调用时,由xposed方法的本地方法调度逻辑分发,回调java层的方法,一般就是各个hook模块,从而实现使用自行实现的方法替换原方法。