(1) 明白一件事,破解者能做什么?不能做什么?
我的理解:破解者能编辑修改可执行文件的极少部分内容,如去除一段判断条件,修改一个控制符、将变量变为常量。
他们不能做什么?他们并不能在exe中添加复杂的业务逻辑。
有了这个思路就好办了。我把部分逻辑放到服务器上。这样不就行了。
(2)你的程序一定不要搞完全的单机版本。一定要和服务器做某做耦合。
(3)客户端与服务器通信HTTP协议一定不要用明文,要进行加密后进行传输。要弄得神仙都认不得。否则Fiddler得容易被侦测到。(我自己的方式是:对base64加密,然后再执行自己写一个二次加密算法,进行错综移位。且根据随机状态位的不同,移位方式不一样。一共设置100套移位方法)。
(4)一定要对客端端环境建立监控,且软件在运行过程中最好也做检测。而不是打开软件或登录时检测一次。(记录好客户IP、地市、MAC地址、碰盘ID、CPU、操作系统类型与版本、软件安装目录、是否为虚拟机等等。还有很多可以收录:如碰盘分区模式、磁盘大小)。
没有这些信息,即使用破解者你也是瞎子,都不知道你的软件已经被破发。
而有了这些信息,软件被破你可以在第一时间知道。可以进一步在服务器进行拉黑处理。
(5)关键行为网关。之里之所以称为“网关”,寓意对界面操作行为的控件(另一方面可能也因自己在电信行业工作几年,长时间接触电信协议有关)。不要让上一步操作直传到下一步操作。而是通过服务器绕一下,并在服务器做一下转换。如在发送方数据装为A, 在服务器转换为B格式,而“下一步”操作直接处理B格式。
这就像七巧板一样,软件被破了,可发现脱离了服务器犹如七巧板少了一块,无论怎么破都没办法的。
(6)事件请求与事件处理必须分隔在线程或进程中执行。不要直接(特别是用C#、.net的程序员要注意:可能习惯了双击UI, 编程软件自动创建一个处理函数)。 ===》必须做到UI与处理分离,请求与响应分离。
(7)做好版本协商,且软件开启的第一时间做版本协商。
(8)自定义协议方面,大家有兴趣可以参考《中国电信业务网络设备技术规范-移动增值业务信令监测系统接口规范(V0.5.0)》,百度上搜索可下载。
具体参考: 参考: https://user.qzone.
我的理解:破解者能编辑修改可执行文件的极少部分内容,如去除一段判断条件,修改一个控制符、将变量变为常量。
他们不能做什么?他们并不能在exe中添加复杂的业务逻辑。
有了这个思路就好办了。我把部分逻辑放到服务器上。这样不就行了。
(2)你的程序一定不要搞完全的单机版本。一定要和服务器做某做耦合。
(3)客户端与服务器通信HTTP协议一定不要用明文,要进行加密后进行传输。要弄得神仙都认不得。否则Fiddler得容易被侦测到。(我自己的方式是:对base64加密,然后再执行自己写一个二次加密算法,进行错综移位。且根据随机状态位的不同,移位方式不一样。一共设置100套移位方法)。
(4)一定要对客端端环境建立监控,且软件在运行过程中最好也做检测。而不是打开软件或登录时检测一次。(记录好客户IP、地市、MAC地址、碰盘ID、CPU、操作系统类型与版本、软件安装目录、是否为虚拟机等等。还有很多可以收录:如碰盘分区模式、磁盘大小)。
没有这些信息,即使用破解者你也是瞎子,都不知道你的软件已经被破发。
而有了这些信息,软件被破你可以在第一时间知道。可以进一步在服务器进行拉黑处理。
(5)关键行为网关。之里之所以称为“网关”,寓意对界面操作行为的控件(另一方面可能也因自己在电信行业工作几年,长时间接触电信协议有关)。不要让上一步操作直传到下一步操作。而是通过服务器绕一下,并在服务器做一下转换。如在发送方数据装为A, 在服务器转换为B格式,而“下一步”操作直接处理B格式。
这就像七巧板一样,软件被破了,可发现脱离了服务器犹如七巧板少了一块,无论怎么破都没办法的。
(6)事件请求与事件处理必须分隔在线程或进程中执行。不要直接(特别是用C#、.net的程序员要注意:可能习惯了双击UI, 编程软件自动创建一个处理函数)。 ===》必须做到UI与处理分离,请求与响应分离。
(7)做好版本协商,且软件开启的第一时间做版本协商。
(8)自定义协议方面,大家有兴趣可以参考《中国电信业务网络设备技术规范-移动增值业务信令监测系统接口规范(V0.5.0)》,百度上搜索可下载。
具体参考: 参考: https://user.qzone.