硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3710|回复: 4
收起左侧

[MDK] Keil如何隐藏Library中的符号(函数名,全局变量等)?

[复制链接]
回帖奖励 90 个金币 回复本帖可获得 10 个金币奖励! 每人限 1 次

1

主题

109

回帖

112

积分

初级会员

固件開發工程師

积分
112
QQ
发表于 2019-10-21 09:52:35 | 显示全部楼层 |阅读模式
本帖最后由 ----- 于 2019-10-21 09:56 编辑

在使用Keil官方Lib的时候发现,这些库里面的.o文件,不是ELF格式,但仍然能链接通过。
用Linux的file工具查看,显示是data,而不是Keil直接编译出来的ELF 32。
自己平时使用一些第三方Lib,也是做成这样子。可以隐藏Lib的很多内部信息,比如看不到函数名和全局变量。
请问大家知道这是怎么做到的吗?
用Keil可以直接做到,还是需要外部工具做后处理?
li@pc:/mnt/d/USB_CM3_L$ file usbd_lib_core.o
usbd_lib_core.o: data
li@pc:/mnt/d/USB_CM3_L$ file ../flash_otp.o
../xtx_flash_otp.o: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), with debug_info, not stripped

这是如何隐藏的?

这是如何隐藏的?


回复

使用道具 举报

1

主题

109

回帖

112

积分

初级会员

固件開發工程師

积分
112
QQ
 楼主| 发表于 2021-12-21 10:00:10 | 显示全部楼层
最近组内有购买MDK-Plus,顺便咨询了Keil这个问题。
Keil官方的答复是,MDK-Middleware里的object文件是加密格式,不是标准的ELF/DWARF格式,不对客户公开。
这个格式只有MDK-Plus/Pro版才支持。虽然普通的Linux ELF Tools不能识别这种格式、印出内部Symbols,但仍然可以用fromelf来显示Public Symbols。所以这个问题看起来不是通过配置一下Keil编译选项就可以解决的,需要深入理解ELF的链接格式后,自己编写Tool来解决了。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106995
QQ
发表于 2019-10-21 10:00:01 | 显示全部楼层

回帖奖励 +10 个金币

这个问题很有研究价值,就是没有研究过,看看坛友有清楚的不。
回复

使用道具 举报

7

主题

125

回帖

146

积分

初级会员

积分
146
发表于 2019-10-21 19:35:34 | 显示全部楼层
其他的不清楚,keil的话,直接生成就可以,不需要其他外部工具处理
上家公司权限比较严,很多文件都是直接给o文件,调试的时候难受的要死
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106995
QQ
发表于 2021-12-21 10:05:10 | 显示全部楼层
----- 发表于 2021-12-21 10:00
最近组内有购买MDK-Plus,顺便咨询了Keil这个问题。
Keil官方的答复是,MDK-Middleware里的object文件是加 ...

不知道他这个格式,自己做貌似也麻烦的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 11:57 , Processed in 0.176576 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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