能力值:
( LV2,RANK:10 )
|
-
-
2 楼
求大神指教
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
请放代码
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
char desFile[400];
char desFile1[400];
sprintf(desFile, "/data/data/%s/lib/libnative-libs.so", buf);
sprintf(desFile1, "/data/data/%s/lib/libnative-lib.so", buf);
DL_ERR("open file is %s", desFile);
__system_property_get("ro.build.version.sdk", buf);
int version = 0;
sscanf(buf, "%d", &version);
//4.4 start
soinfo4_4 *soinfo4_41 = find_library_internal4_4(desFile);
if (soinfo4_41 == NULL) {
DL_ERR("find soinfo fail");
return JNI_VERSION_1_4;
}
DL_ERR("find soinfo success");
// xor_code(soinfo4_4->base,start_page_address4_4,start_page_filelength4_4);
jint (*real_JNI_OnLoad4_4)(JavaVM *, void *);
real_JNI_OnLoad4_4 = (jint (*)(JavaVM *, void *)) (lookup_in_library4_4(soinfo4_41,
"JNI_OnLoad"));
if (real_JNI_OnLoad4_4 == NULL) {
DL_ERR("cannot find sym %s\n", "JNI_OnLoad");
} else {
real_JNI_OnLoad4_4(vm, reserved);
}
soinfo4_4* src_so = dlopen(desFile1,0);
src_so->base=soinfo4_41->base;
src_so->size=soinfo4_41->size;
src_so->load_bias=soinfo4_41->load_bias;
src_so->strtab=soinfo4_41->strtab;
src_so->symtab=soinfo4_41->symtab;
src_so->nbucket=soinfo4_41->nbucket;
src_so->nchain=soinfo4_41->nchain;
src_so->bucket=soinfo4_41->bucket;
src_so->chain=soinfo4_41->chain;
src_so->ARM_exidx=soinfo4_41->ARM_exidx;
src_so->ARM_exidx_count=soinfo4_41->ARM_exidx_count;
最后于 2019-7-3 09:14
被Adench编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
或者说除了直接赋值还有什么方法可以把源so的soinfo放在系统linker下的soinfo链表里呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
同问 mark 源so的soinfo放在系统linker下的soinfo链表里
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
Adench
或者说除了直接赋值还有什么方法可以把源so的soinfo放在系统linker下的soinfo链表里呢?
做 SO 壳,一般是两种需求:
保护自己的库,解密后在 PROT_READ|PROT_EXEC 内存中运行,这种情况下一般不需要生成 soinfo
保护其他库,要求被加壳的库能够被其他库正确地加载, dlopen /dlsym 也正常工作。这要求 solist 中存在 这库的 soinfo 信息,同时 .dynsym 等信息正常。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
自己分配一个soinfo然后插到map里
|
能力值:
( LV1,RANK:0 )
|
-
-
10 楼
麻烦请教一下楼主有没有代码参考一下,现在无从下手啊
|
|
|