搜索
bottom↓
回复: 8

咨询下RTT动态库的问题

[复制链接]

出0入0汤圆

发表于 2019-12-25 09:30:00 | 显示全部楼层 |阅读模式
请问大家谁用过RTthread的动态库,动态库的对程序代码的安全性如何评价?

我曾用IDA研究过,貌似.mo文件可以清楚的看出来调用的逻辑过程和逻辑关系,包括底层函数。
这一点让我对此做法的安全性存疑。
如果对方直接破解我的应用代码和动态库,知道底层的情况下就会非常不安全。

尤其是在别人的平台上开发自己的应用,这个非常存疑。

另外,据我的经验RTthread的动态库和动态应用,必须使用系统提供的函数,才能去实现预定的功能,这个逻辑是否正确呢?

出0入0汤圆

发表于 2019-12-25 10:13:44 | 显示全部楼层
模块应用是需要在系统编译的时候导出相应的函数才行,如果有些函数没有导出,mo文件是跑不起来的,模块内部本身也可以实现一些自己的私有函数,要求跟系统无关的。但如果你确定了自己的芯片类型,也可以是自己去定义一些寄存器去调用的,只是通用性就差些。关于你提到的这个.mo反编译可以看到一些调用逻辑,其实在哪个平台都是可以反汇编看到一些调用关系的,所以像Windows上的一些应用才有了加壳这些操作。RTT内部也有微内核的版本,如果你们企业有这方面的需求或许找他们做些深入的定制比较适合。

出0入0汤圆

发表于 2019-12-25 10:19:20 | 显示全部楼层
电脑上一样存在,才有加壳。

出0入0汤圆

发表于 2019-12-25 10:33:52 | 显示全部楼层
本帖最后由 MurphyZhao 于 2019-12-25 10:35 编辑

没用过,rtthread 应该是支持的,我看到内核代码里很多 RTM_EXPORT,貌似就是用来支持动态模块的。

  1. #define RTM_EXPORT(symbol)                                            \
  2. const char __rtmsym_##symbol##_name[] SECTION(".rodata.name") = #symbol;     \
  3. const struct rt_module_symtab __rtmsym_##symbol SECTION("RTMSymTab")= \
  4. {                                                                     \
  5.     (void *)&symbol,                                                  \
  6.     __rtmsym_##symbol##_name                                          \
  7. };
复制代码


我的理解是,rtthread 将所有内核函数放到 ROM 中统一的段 RTMSymTab 中,然后动态模块在使用内核接口的时候,通过遍历这个段的方式来进行函数调用。

不知道我的理解是否正确,请大神指教。

出0入0汤圆

 楼主| 发表于 2019-12-25 10:44:11 | 显示全部楼层
nongxiaoming 发表于 2019-12-25 10:13
模块应用是需要在系统编译的时候导出相应的函数才行,如果有些函数没有导出,mo文件是跑不起来的,模块内部 ...

好的,谢谢分析。
那个寄存器的操作提醒也是挺绝的

出0入0汤圆

 楼主| 发表于 2019-12-25 10:45:39 | 显示全部楼层
MurphyZhao 发表于 2019-12-25 10:33
没用过,rtthread 应该是支持的,我看到内核代码里很多 RTM_EXPORT,貌似就是用来支持动态模块的。

你的理解基本正确,所以动态模块和动态库,都需要加载进那个列表才可以使用。这我才引申了关于加密逻辑的需求。
逆向这个方法,我也是很熟悉的

出0入0汤圆

 楼主| 发表于 2019-12-25 10:48:02 | 显示全部楼层
huangqi412 发表于 2019-12-25 10:19
电脑上一样存在,才有加壳。

嗯,如果只是自己的产品还好,如果是依托于别人的产品,那就比较麻烦,加壳的话,自己其实也可以加,增加了加密算法就好了

出0入0汤圆

发表于 2019-12-25 10:59:33 | 显示全部楼层
bryan_lia 发表于 2019-12-25 10:48
嗯,如果只是自己的产品还好,如果是依托于别人的产品,那就比较麻烦,加壳的话,自己其实也可以加,增加 ...

如果系统的BSP是你们自己开发的,那样你可以自己在执行mo文件前做些加解密的处理,然后执行就可以,就是发布mo文件的时候自己按自己的加解密算法处理过就可以了。mo文件本身就是load到内存执行的。

出0入0汤圆

 楼主| 发表于 2019-12-26 08:56:45 | 显示全部楼层
nongxiaoming 发表于 2019-12-25 10:59
如果系统的BSP是你们自己开发的,那样你可以自己在执行mo文件前做些加解密的处理,然后执行就可以,就是 ...

是的,问题就在于BSP 不是自己开发的,自己做的是核心功能和算法,所以用动态库就会被暴露

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 01:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表