技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1425|回复: 1
收起左侧

如何遍历linux程序的so模块

[复制链接]

272

主题

446

帖子

4795

积分

用户组: 真·技术宅

UID
2
精华
61
威望
148 点
宅币
3617 个
贡献
131 次
宅之契约
0 份
在线时间
617 小时
注册时间
2014-1-25
发表于 2016-5-6 13:09:15 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
借助linker.h中定义的soinfo结构


  1.         soinfo* si = (soinfo*)dlopen("libdl.so",3);
  2.         while(si)
  3.         {
  4.                 printf("ptr=%08x name=%s entry=%08x base=%08x size=%08x\n",si,si->name,si->entry,si->base,si->size);
  5.                 int i;
  6.                 for(i=0;i<si->preinit_array_count;i++)
  7.                 {
  8.                         printf("preinit_array:%08x\n",si->preinit_array[i]);
  9.                 }
  10.                 for(i=0;i<si->init_array_count;i++)
  11.                 {
  12.                         printf("init_array:%08x\n",si->init_array[i]);
  13.                 }
  14.                 for(i=0;i<si->fini_array_count;i++)
  15.                 {
  16.                         printf("fini_array:%08x\n",si->fini_array[i]);
  17.                 }
  18.                 printf("init_func:%08x,fini_func:%08x\n",si->init_func,si->fini_func);
  19.                 si = si->next;
  20.         }
复制代码

ptr=b6fdc0a8 name=libdl.so entry=00000000 base=00000000 size=00000000
init_func:00000000,fini_func:00000000
ptr=b6fc8004 name=./test entry=b6fde704 base=b6fde000 size=00005000
preinit_array:ffffffff
preinit_array:00000000
init_array:ffffffff
init_array:00000000
init_array:ffffffff
init_array:00000000
fini_array:ffffffff
fini_array:00000000
init_func:b6f56140,fini_func:00000000
ptr=b6fc8128 name=libNimsWrap.so entry=00000000 base=b6fc3000 size=00004000
init_array:b6fc3881
fini_array:b6fc3824
init_func:00000000,fini_func:00000000
ptr=b6fc824c name=libc.so entry=00000000 base=b6f68000 size=0005b000
init_array:b6f76471
init_array:b6f7abc9
init_array:b6f7abdd
init_array:b6f7b585
init_array:b6f7b6bd
init_array:b6f8d675
fini_array:b6f771b9
init_func:00000000,fini_func:00000000
ptr=b6fc8370 name=libcutils.so entry=00000000 base=b6f5d000 size=0000b000
fini_array:b6f6038c
init_func:00000000,fini_func:00000000
ptr=b6fc8494 name=libAndroidBootstrap0.so entry=00000000 base=b6f55000 size=00008000
init_array:b6f56ac4
init_array:00000000
fini_array:b6f585f4
fini_array:00000000
init_func:00000000,fini_func:00000000
ptr=b6fc85b8 name=libstdc++.so entry=00000000 base=b6f52000 size=00003000
fini_array:b6f52828
init_func:00000000,fini_func:00000000
ptr=b6fc86dc name=libm.so entry=00000000 base=b6f37000 size=0001b000
fini_array:b6f39940
init_func:00000000,fini_func:00000000
ptr=b6fc8800 name=liblog.so entry=00000000 base=b6f12000 size=00005000
fini_array:b6f12f50
init_func:00000000,fini_func:00000000
ptr=b6fc8924 name=libAndroidLoader.so entry=00000000 base=b6f0d000 size=00005000
init_array:00000000
fini_array:b6f0e16c
fini_array:00000000
init_func:00000000,fini_func:00000000
ptr=b6fc8a48 name=libsubstrate.so entry=00000000 base=b6f07000 size=00006000
init_array:00000000
fini_array:b6f09244
fini_array:00000000
init_func:00000000,fini_func:00000000
soinfo是个链表结构,从打印的信息来看,是从高地址到低地址排序的,因此要打开一个未加载的so,自然排在高地址位置,因此往后遍历即可

272

主题

446

帖子

4795

积分

用户组: 真·技术宅

UID
2
精华
61
威望
148 点
宅币
3617 个
贡献
131 次
宅之契约
0 份
在线时间
617 小时
注册时间
2014-1-25
 楼主| 发表于 2016-5-6 14:05:17 | 显示全部楼层
本帖最后由 元始天尊 于 2016-5-6 19:45 编辑

android so api全表.rar (590.67 KB, 下载次数: 4)

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-6-18 07:45 , Processed in 0.099914 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表