应用程序加密请教。

现在准备写一个与嵌入式主机通讯的PC端软件,通讯方式为TCP,但是为了保证项目的安全性,提高反编译的难度,请问各位推荐使用C#开发完成软件后用混淆工具加密还是用Qt C++的方式来开发呢?

阅读 5.2k
3 个回答

从破解/攻击者的角度来看,他可以逆向,也可以抓包。
避免逆向的话,不论是C#还是C/C++都可以加混淆壳,但并不能防御技术高超的逆向人员。
至于通信过程中,中间人攻击什么的都不难。
因此个人建议与其在客户端下功夫,不如好好考虑如何给服务端加固,完善验证措施。

C++编译的是本地代码,C#编译的是托管代码,相对来说本地代码破解成本更高,托管代码反编译后基本等于源码了。你如果只是单纯的从防止破解的角度选择去选择语言的话,肯定选择C++更好。但是相对的,开发效率会低很多。

确实,如FANG所说,加固软件自身不如加固通信过程。
参考游戏业的破解/反破解技术进化道路,
早期的是纯软件的注册码激活(然后注册机出现了),
后来是配合硬件的,玩的时候必须插CD盘(然后虚拟光驱破解版出现),
今天,仙剑、古剑奇谭之类一个单机游戏,都要求online玩了。
题主可以根据自己的项目需求、可用资源、剩余工时等条件综合估算一下,做到哪一步比较合适。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题