首页
社区
课程
招聘
[求助]关于jni inject后 init_array反复执行的困惑
发表于: 2016-10-12 03:20 5178

[求助]关于jni inject后 init_array反复执行的困惑

2016-10-12 03:20
5178
我用硬编码的方式 修改了libc.so的init_array表 在初始化时 dlopen了我的so文件 libckis.so

为代码如下:
jmp in...
dlopen("libckis.so",0);
jmp out...


我的libckis.so的大概内容如下

static int n=0;
static bool hooked=false;

void init(void) __attribute__((constructor));

void init(void)
{
    if(hooked) return;
    hooked=true;
    n++;
    printf("libckis.so loaded! by %s pid :%d  loop: %d addr:%X loop_addr:%X\n",AppName,getpid(),n,(uint32_t)my_init,&n);
}


以下是加载后的结果


也就是说 void init()被反复执行了
之前我在小米3上执行是没有问题的 但是到了小米3就变成这样了 求解

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 241
活跃值: (231)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
也就是说 每次加载的pid都是2620这个进程 进程反复的调用了libc.so触发了init_array后 被动的调用了libckis.so  连带libckis.so的init()也被反复执行 这是为什么?求原理

已经解决了 说出来可笑 自己犯二就不解释了...
2016-10-12 03:22
0
雪    币: 1
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我照着楼主的写,也遇到了楼主的问题,新手求解
2018-4-10 01:11
0
雪    币: 4
活跃值: (347)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
lz自己hook  了  libc.so  。。。然后里面去调用  libckis.so  了吧?
2018-4-12 18:00
0
游客
登录 | 注册 方可回帖
返回
//