最近菜农被阶级敌人欺负,无奈再举"红色黑客"的义旗...
在PC端的加密方面,人们一直寻求1个固定不变的"介质",并用它做为加密/解密的依据.
常用的有硬盘序列号(非逻辑序列号),网卡号,加密狗等等...
这是因为它们必须通过专用的编程接口来访问,并得到一组不变且每台不同的序列.
它们都不会因为硬盘的格式化而消失.
虽然他们在注册表存放的信息可以被更改,但通过专用的编程接口读出的数据
可以发现何处被更改,以达到保护软件合法的作用.
MCU端也一样,也要寻求一种不变的"介质",像1-Wire系列的激光刻制的全球唯一码, 还有STM32的唯一序列码(还未实践过,不知是否1片1号)
以上是从加密方的硬件配置来分析的,但作为解密方也有对付的良策...
PC端的加密比较困难,这主要是汇编代码是公开的,如同MCU被暴力解密后的汇编代码.
所以我们都应该站在汇编代码公开的基础上来讨论加密和解密问题,任何想依据
MCU芯片不被**的想法都是徒劳的,也是单相思的~~~
故加密方应具备的"介质"---不变的唯一码(序列码)应该是必要的.
如果没有这些,"整盘/正片"的拷贝即成现实.
所以加密方在具备了"介质"后,还应该施加有关的代码,使其不能达到,"整盘/正片"拷贝的目的.
迫其对汇编代码进行改写(这是加密方不能阻止的~~~,但加密的目的已初步达到)
想通了---付出应该得到回报~~~(解密也是要劳动的~~~)
故施加防范代码就是加密方最需要做到的...
加密的理念有多种,菜农N十年来历来反对分枝判断~~~
可先行的软件大多采用这种分枝判断真伪,这就给解密者留下了突破口~~~
如果无分枝由将如何呢???
菜农一直**对输出流进行加密,这样就不会产生分枝.
举例WORD文档文件:
让任何人使用,但非正版用户看到的全是乱码~~~
难道这种理念不更气人码???哈哈~~~
做为解密方,如果不能"整盘/正片"的拷贝,那么他必定知道加密方施加了手段.
他们当然会采用"钩子"等"卑鄙"手段进行拦截,监听,最后直到**.
所以,PC端加密还是很困难的~~~理论是解密永远加密的胜利者~~~
很无奈,事实就是如此...
在MCU端就相对好些,首先他要暴力**芯片,从而拿到汇编代码.
然后通过对串行通讯的数据流拦截分析,对操作步骤的实践,对用户说明书的研究,对被控对象的相应动作表现等等...
这样的轮廓足已**一半的流程...
所以加密方要少使用分枝,字符串,IO地址等敏感语句...
多用函数指针(散转),对字符串进行些简单的处理而不要直读.
IO地址也用指针(51是没办法了~~~PX,PX.x将告诉敌人自己在干什么~~~)
就写到这里吧~~~继续农忙...
总之不要想自己的程序不被**~~~
说到另一层被**应该感到"荣幸"~~~这也证明了你的程序的"伟大"~~~
菜农HotPower@126.com 2008.8.3 于菜地 |