2016-10-19 135 views
0

我有一个大项目可以共享,有几个文件和链接库。我的合作者需要修改一些特定的功能。有什么方法可以部分混淆代码中不需要开发的部分?部分混淆C代码

+6

组织您的代码库,使得您的协作者不需要修改的部分可以以编译和可链接的形式呈现给他们,只留下要以源代码格式提供的部分。这足够吗? –

回答

0

如果您提到的功能是以函数的形式出现,那么您可以在头文件中提供函数指针类型定义,并让用户注册自己的函数。你还应该在你的头文件中添加一个Register_Func()函数。 该函数修改这些函数的静态指针。

在头

typedef void (*myfunc_p)(int); 

void Register_Func(myfunc_p F); 

然后在你的代码:

static myfunc_p Modified_Function; 

void Register_Func(myfunc_p F) 
{ 
    Modified_Function=F; 
} 

那么你只能共享一个DLL,用你的头一起。他们可以注册他们的定制代码。

0

这取决于它得到多么混乱。我只是创建一个API来公开他们需要的功能,并为他们提供他们想要修改的源代码作为单独的库。这样他们只会看到原型(并且可以使用伪参数对这些原型进行混淆)以及任何源代码示例。这样,大多数情况下,为他们提供.dlls或.so文件以供他们构建。如果他们不断要求更多的代码,可能是公开拒绝的时候。

顺便说一句,如果这是一个协作,那么你不必给他们任何东西,但如果他们已经委托你做一些工作,他们可能有权访问所有的代码,如果没有另外规定。因此,检查你的协议,你可能没有选择。

事实上,如果你使用类似C的东西(以及少于10,000行的代码库),那么拆卸代码和反向/后端工程并不需要太多的工作。一个好的汇编程序员在这里不会有太多问题。用优化进行编译会稍微困难一些。

0

由于我们都将使用VS,我删除了源代码并添加了obj文件。这是工作。