【发布时间】:2020-01-03 03:36:43
【问题描述】:
如何导入和使用从apk 文件中提取的.SO 文件?
我在 Linux 中使用过 ctypes 库,但每次尝试时都会出错。
.so 文件有 2 个版本:arm64 和 armeabi。
当我尝试导入 32 位 armeabi 版本时,它给了我
wrong ELF class: ELFCLASS32
于是我尝试了 arm64,不知何故我得到了
cannot open shared object file: No such file or directory
我可以向您保证,这不是一个拼写错误的路径,我尝试使用相同的路径复制它。但我无法导入它,因为没有这样的文件。
代码:
import ctypes
def main():
TestLib = ctypes.CDLL('/home/manalkaff/Desktop/arm64-v8a/nativelibrary.so')
if __name__ == '__main__':
main()
这是我应该做的吗?还是有别的办法?
【问题讨论】:
-
您使用什么类型的计算机来运行此代码?你有ARM CPU吗?
-
@kichik 不,我使用虚拟框,因为我无法在 Windows 中使用它,而且我有
x86_64cpu 架构 -
您无法在 x86 进程中加载和执行 ARM 代码。您需要一个模拟 ARM CPU 的虚拟机。
-
我怎么不知道,非常感谢。那清楚的事情。在我导入之后我可以使用apk使用的功能吗?
-
也许吧。它可能缺少来自 Android 的依赖项。使用 ARM Linux 后,您可以通过
ldd my.so进行检查。
标签: python linux ctypes decompiler android-native-library