如何弄乱或者加密(主要为了保护)C/C++的源代码?

歪着看世界 2013-12-18 05:22:02
手头有一份程序,我必须把代码给客户,客户可以在他们自己的服务器上安装编译。我想保护这些源代码,那该如何做呢?
我在网上搜集了一些资料说,可以弄乱或者加密源代码,比如把title自动转化为i11iii1i1i1i等方法;还有说Dezend的,还有说用库的,还有用第三方软件等等各种方法。

本人是行内菜鸟,个人专业也完全不在这个方面,所以很多操作细节都不是很懂。恳请这里的大神能否具体指出哪些方法,并且指出具体如何操作或者有相关详细的参考操作案例链接也可。

若能提供多种方法,则多多益善。


恳请大神们帮帮小弟。
...全文
3492 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingshuiyimu 2015-07-17
  • 打赏
  • 举报
回复
代码混淆器:http://www.ithov.com/linux/110799.shtml
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
虽然没有很好的解决方案,还是结贴了。
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
楼上的建议很好,但实行起来有难度。一则,我不太懂C/C++,根本无法使用汇编、goto来改;二则,程序是别人写的,我改的话,很容易出错。估计只能使用现成的办法来混淆或者掩盖代码。 我倒发现了国外有个专门用于混淆C/C++代码的软件,我下了一个试用版。http://www.oschina.net/p/stunnix-cxx-obfus http://www.stunnix.com/prod/cxxo/overview.shtml 现在我倒有了新的担心,如果我只把一部分.h结尾的文件进行混淆,那是不是出现变量名或者函数名与其他文件对不上的麻烦啊? 还有,除了以.h结尾的文件,还有.m、.svn-base、.xib、.DS_Store等结尾的文件(是一个ipad的应用程序)。 混淆了.h文件,那这与其他文件的配合是不是成问题呢?
abnerW 2013-12-18
  • 打赏
  • 举报
回复
会用makefile不?稍微看下《跟我一起学makefile》,用gcc 带上fPIC 以及share之类的参数,打成动态库
max_min_ 2013-12-18
  • 打赏
  • 举报
回复
引用 9 楼 u011552243 的回复:
版主大驾光临啊,我是看到希望了。 总结版主的话,有两个方法:1. 编译成库,那该如何操作呢?大神们能否给个链接啥,我好研究如何具体操作? 2. 打包成执行文件,那又是如何从源文件操作到这一步呢? 另外,我在网上搜到说,可以用Dezend来打包啥的?是不是可以呢? 恳请大神们指示具体操作方法,或者能给个具体链接啥的,小弟我感激不尽了。 [quote=引用 6 楼 max_min_ 的回复:] [quote=引用 3 楼 u011552243 的回复:] 给人家只是用于安装和使用,但他们可能会利用这个基础代码自己开发或者找其他人开发,所以弄乱、混淆或者加密是为了保护源代码。 这个也是行内经常不得不做的事情。
功能模块全部独立生成库的形式!提供启动的部分源码就好! 或者一点源码都不给,直接打包成可执行文件就好![/quote][/quote] 不需要连接的阿,就是把代码稍微修改了,让一些功能模块独立出来生成库文件,提供出去就好! 至于你说的弄乱源码的话,这个里有个链接,试试吧 http://blog.csdn.net/haoel/article/details/4225974
大道曙光 2013-12-18
  • 打赏
  • 举报
回复 1
打包成库的话,看你要做成静态库还是动态库。 然后,搜索如何制作静态链接库、动态链接库就行了。 静态链接库很简单,动态链接库的制作方法:《VC++深入详解》、《Windows程序设计》、《Windows核心编程》上都有涉及。
帅得不敢出门 2013-12-18
  • 打赏
  • 举报
回复
引用 10 楼 u011552243 的回复:
[quote=引用 7 楼 zmlovelx 的回复:] 打包成库吧,源码给了,还怎么加密
是啊,是这个道理。 老板告诉我有这个需求,但他人不在这,具体我也不清楚。 现在就分为两种情况,给源代码,但让他们很难阅读、很难二次开发的方法; 第二种,就是给他们可以运行的东西,但是他们就是看不到里面的代码。 请各位大神能否指明具体操作呢?或给个链接说明具体操作步骤也行啊。谢谢先。[/quote] 内嵌汇编, 狂用goto, 函数命名打乱 ==
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
引用 7 楼 zmlovelx 的回复:
打包成库吧,源码给了,还怎么加密
是啊,是这个道理。 老板告诉我有这个需求,但他人不在这,具体我也不清楚。 现在就分为两种情况,给源代码,但让他们很难阅读、很难二次开发的方法; 第二种,就是给他们可以运行的东西,但是他们就是看不到里面的代码。 请各位大神能否指明具体操作呢?或给个链接说明具体操作步骤也行啊。谢谢先。
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
版主大驾光临啊,我是看到希望了。 总结版主的话,有两个方法:1. 编译成库,那该如何操作呢?大神们能否给个链接啥,我好研究如何具体操作? 2. 打包成执行文件,那又是如何从源文件操作到这一步呢? 另外,我在网上搜到说,可以用Dezend来打包啥的?是不是可以呢? 恳请大神们指示具体操作方法,或者能给个具体链接啥的,小弟我感激不尽了。
引用 6 楼 max_min_ 的回复:
[quote=引用 3 楼 u011552243 的回复:] 给人家只是用于安装和使用,但他们可能会利用这个基础代码自己开发或者找其他人开发,所以弄乱、混淆或者加密是为了保护源代码。 这个也是行内经常不得不做的事情。
功能模块全部独立生成库的形式!提供启动的部分源码就好! 或者一点源码都不给,直接打包成可执行文件就好![/quote]
baichi4141 2013-12-18
  • 打赏
  • 举报
回复
要保护源代码,就直接给可执行文件或者动态/静态链接库 给源代码还想保护?人看不懂的代码,编译器也看不懂,编译器不能编译,你给了又有啥用?
帅得不敢出门 2013-12-18
  • 打赏
  • 举报
回复
打包成库吧,源码给了,还怎么加密
max_min_ 2013-12-18
  • 打赏
  • 举报
回复
引用 3 楼 u011552243 的回复:
给人家只是用于安装和使用,但他们可能会利用这个基础代码自己开发或者找其他人开发,所以弄乱、混淆或者加密是为了保护源代码。 这个也是行内经常不得不做的事情。
功能模块全部独立生成库的形式!提供启动的部分源码就好! 或者一点源码都不给,直接打包成可执行文件就好!
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
对,楼上的说的方法是其中一个方法,我在网上搜集到了。 但该如何操作呢?小弟是搞php的,C的一套完全不懂,还请大神帮小弟指明细节,比如在vs studio上如何编译成库呢? 编译成库文件,是否客户肯定就不能看到代码呢?
滴答滴答D 2013-12-18
  • 打赏
  • 举报
回复
你把自己的源代码打包成一个动态库提供给客户,他们在编译的时候链接你的库不就得了。
歪着看世界 2013-12-18
  • 打赏
  • 举报
回复
给人家只是用于安装和使用,但他们可能会利用这个基础代码自己开发或者找其他人开发,所以弄乱、混淆或者加密是为了保护源代码。 这个也是行内经常不得不做的事情。
漫步者、 2013-12-18
  • 打赏
  • 举报
回复
代码都给别人了,你还加密做啥
翅膀又硬了 2013-12-18
  • 打赏
  • 举报
回复
给人家了,还加什么密。人家用这个对你会有什么不利吗?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧