使用dlopen加载so时报错?

使用dlopen加载一个so时报错,报错情况见截图 这个so是使用DevEco Studio编译

阅读 697
1 个回答

解决方案

不支持通过dlopen加载so库,主要是为了避免缓解恶意代码的安全威胁。

执行管控规则

  1. 执行未包含合法签名的代码

设备要求所有执行的应用必须包含代码签名,即所有应用都需要通过代码签名工具重新签名发布。Openharmony SDK从4.1.3.3开始支持代码签名,因此业务需要使用该版本及以上SDK中的hap-sign-tool.jar重新签名才能被端侧校验通过并允许执行代码。

  1. 将文件的数据段映射到可执行内存

设备不允许将ELF的数据段(rw权限)映射到可执行内存,防止恶意应用将攻击代码放到已签名的可执行文件的数据段中,并在运行时将数据段映射为代码绕过执行管控。

  1. 将文件的代码段映射到可写内存

设备不允许将ELF的代码段(x权限)映射到可写内存,防止恶意应用在运行时篡改代码段,植入恶意代码,威胁系统安全。

请通过cmake编译时,包含so库的调用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进