关闭

一些Android sys_call_table获取的方法

659人阅读 评论(1) 收藏 举报
分类:

前天为这个问题纠结好久,搜索了好多方法,成功的不多。这里记下前天用的

在su的情况下,用su权限执行

echo 0 > /proc/sys/kernel/kptr_restrict

cat  /proc/kallsyms | grep sys_call_table 

Android4.4之前的版本可以如下获取

unsigned long* get_vector_swi_addr()
{
  const void *swi_addr = 0xFFFF0008;
  unsigned long vector_swi_offset = 0;
  unsigned long vector_swi_instruction = 0;
  unsigned long *vector_swi_addr_ptr = NULL;
 
  memcpy(&vector_swi_instruction, swi_addr, sizeof(vector_swi_instruction));
  vector_swi_offset = vector_swi_instruction & (unsigned long)0x00000fff;
  vector_swi_addr_ptr = (unsigned long *)((unsigned long)swi_addr + vector_swi_offset + 8);
  return *vector_swi_addr_ptr;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19639次
    • 积分:537
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:4篇
    • 译文:2篇
    • 评论:3条
    最新评论