我编写了一个C库,其中包含几个.h文件和.c文件.我将其编译为.a静态库.
我想仅向用户公开某些功能,并使其余功能尽可能"模糊",以使逆向工程变得相当困难.
理想情况下,我的图书馆将包括:
1-一个.h文件,只显示向用户公开的功能
2- myLibrary.a:尽可能不可逆转
有什么最好的做法?我应该在哪里看,是否有一个很好的教程/书?
进一步来说:
为 - 1
我已经拥有了所有的.h和.c工作,我想避免更改它们,将函数声明从.h移动到.c并进入循环引用潜在的pbs.那可能吗?
例如,创建一个新的.h文件是一个好主意,我只会用我的.a文件进行分发?.h将包含我想要公开的函数的副本以及我使用的类型的转发声明.这是一个好主意吗?
为 - 2
a)我应该注意哪些gcc标志(或xcode)(用于剥离,没有调试符号等)b)一个很好的指针来学习如何进行代码混淆?
任何想法都会有帮助,
谢谢,巴巴
我想提供一个C静态库并尽可能地隐藏内部实现.我在我的代码上使用代码混淆器,这对于使符号对人类来说难以理解非常有效.我正在使用xcode 4,我假设它有GCC之类的标志.
我的问题是我的图书馆仍然包含我想隐藏或让人难以理解的可读信息:
1-目标文件名:当我在.a上运行nm时,我仍然看到每个目标文件的名称.(即myObect1.o myObject2.o等).有没有办法从我的.a中删除这些名称?
2-文件路径:当我在我的库上运行字符串时,我仍然看到头文件的路径以及一些.c文件路径(包含在#include中).有没有办法删除这些.(GCC旗帜或其他方式)?
谢谢你的帮助,
巴巴
ps:我知道nm和字符串,但是如果你知道任何其他工具,或者如果你能建议我应该检查的任何其他东西,我的.a中都有正确的隐藏,欢迎提出所有建议.
如何在drupal 7中为特定节点添加特定的javascript?现在我通过"javascript librairies"模块添加我的.js javascript.但是这会将.js添加到所有节点.我想为节点1启用myjavascript1.js,为节点2启用myjavascript2.je吗?
有没有办法实现这一点?我必须制作自己的模块吗?