现在准备写一个与嵌入式主机通讯的PC端软件,通讯方式为TCP,但是为了保证项目的安全性,提高反编译的难度,请问各位推荐使用C#开发完成软件后用混淆工具加密还是用Qt C++的方式来开发呢?
现在准备写一个与嵌入式主机通讯的PC端软件,通讯方式为TCP,但是为了保证项目的安全性,提高反编译的难度,请问各位推荐使用C#开发完成软件后用混淆工具加密还是用Qt C++的方式来开发呢?
C++编译的是本地代码,C#编译的是托管代码,相对来说本地代码破解成本更高,托管代码反编译后基本等于源码了。你如果只是单纯的从防止破解的角度选择去选择语言的话,肯定选择C++更好。但是相对的,开发效率会低很多。
确实,如FANG所说,加固软件自身不如加固通信过程。
参考游戏业的破解/反破解技术进化道路,
早期的是纯软件的注册码激活(然后注册机出现了),
后来是配合硬件的,玩的时候必须插CD盘(然后虚拟光驱破解版出现),
今天,仙剑、古剑奇谭之类一个单机游戏,都要求online玩了。
题主可以根据自己的项目需求、可用资源、剩余工时等条件综合估算一下,做到哪一步比较合适。
3 回答2k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
从破解/攻击者的角度来看,他可以逆向,也可以抓包。
避免逆向的话,不论是C#还是C/C++都可以加混淆壳,但并不能防御技术高超的逆向人员。
至于通信过程中,中间人攻击什么的都不难。
因此个人建议与其在客户端下功夫,不如好好考虑如何给服务端加固,完善验证措施。