Linux 堆

堆的管理策略取决于各操作系统的堆管理器实现。之前看Windows、Linux,发现他们是存在一些区别的。虽然总的策略类似但在一些细微实现上有很大的区别。

所以本文就着重介绍一下Linux/Android的堆管理策略吧,一些个人理解就想到什么写什么了。网上这方面的内容也很多。推荐下面两个:

Continue reading

Java函数签名

表现形式:

(参数类型参数类型参数类型参数类型)函数类型

例如:

1
public int encrypt(int res, String test, long key)

函数方法体为:

(ILjava/lang/String;J)I

  • I 代表int
  • Ljava/lang/String; 代表String。因为它不属于基本数据类型,是一个类,所以需要指定完整的路径
  • J代表long

参数与参数之间无间隔,用括号包裹,紧接着跟函数的数据类型。

Continue reading

So注入

so注入的主要思路是:

  1. 找到目标进程
  2. 使用ptrace跟踪目标进程,保存目标进程的状态
  3. 获得mmap、dlopen、dlsym等库函数在目标进程中的偏移地址
  4. 调用mmap在目标进程内部申请一段内存空间
  5. 将我们的ShellCode写入到刚才申请的内存空间中
  6. dlopen打开Shellcode,dlsym调用Shellcode库的函数
  7. 恢复原so状态,detach
Continue reading

Xposed

Xposed的表现形式:

可以拦截任意应用的任意方法实现,将它替换为自设的功能代码。

主要逻辑:

  • 通过包名匹配查看是否有需要hook的模块。如果有,修改它的java方法为本地方法(通过修改accessFlag实现)
  • 当目标方法被调用时,由xposed方法的本地方法调度逻辑分发,回调java层的方法,一般就是各个hook模块,从而实现使用自行实现的方法替换原方法。
Continue reading
Author's picture

CytQ

Security Engineer
Android、移动安全、逆向、漏洞挖掘、渗透


17本,任职百度、滴滴


Beijing