Android4.2 libdvm.so找不到dexFileParse的功能

时间:2013-08-30 03:38:09

标签: android dalvik dlsym

在Android2.3里面的libdvm.so,我可以用代码来调用dexFileParse 码: void * handle = dlopen(“/ system / lib / libdvm.so”,RTDL_LAZY); void * pFunc = dlsym(handle,“dexFileParse”);


但libdvm.so导出_Z16dexFileParseXXX,我不会从中获取dexFileParse的地址 对dlsym(手柄, “dexFileParse”)。 你说:你可以dlsym(句柄,“_ Z16dexFileParseXXX”),是的,它会没事的, 但是_Z16 * * ** XXX是由cplusplus的编译器重命名的,当我不知道cplusplus的编译器时我不能用它


我如何调用dexFileParse?

感谢

1 个答案:

答案 0 :(得分:0)

当源代码从.c更改为.cpp时,符号已更改。 dexFileParse函数是libdex的一部分,不公开。您不仅不能依赖名称错误having a specific value,还不能依赖函数存在或按预期工作的事实。

如果您的用例可以使用私有API,那么使用dlsym(即尝试dexFileParse,然后_Z16dexFileParseXXX)探测该功能应该没问题。如果这是不可接受的,那么您应该尝试找到一个公共API来处理您尝试解决的问题。