哈哈,即使用纸糊一个“盾”,也得动动脑筋才行啊,比如我在4楼糊的那个,被Hot大叔用NOP牌的矛就戳穿了  版主 发表于 2010-8-20 08:47
必须采用2级至上的防止代码被改写保护,否则简单的NOP即可搞定。
点赞  2010-8-20 10:39
                                 哈哈~~~有机会俺再写些如何对付虚拟机和注册机是正版软件之墓地的水文~~~
点赞  2010-8-20 22:01
要想不用自己挨个去读,就做个bootloader
用bootloader读这个ID,用加密算法算出来个数写到内存里一个位置,
应用程序启动后,同样用这个算法算出结果和bootloader的结果去比较,不符合就不运行
bootloader读保护+写保护
这个加密算法你自己掌握就行
点赞  2010-8-20 22:07
真是仁者见仁,智者见智。
24楼的方法 很好,也是可行的哈,又给我们提供了一种加密方法,这种方法便于生产了。
不用每个IC去读ID,然后写入
不过还真没应用过bootloader。。。再学习一下
谢谢各位了
点赞  2010-8-22 09:11
建议不要用24楼的将结果比较之言论…
解密菜鸟的第一课就是如何对付此类加密方法。
点赞  2010-8-22 12:21
要想不用自己挨个去读,就做个bootloader
用bootloader读这个ID,用加密算法算出来个数写到内存里一个位置,
应用程序启动后,同样用这个算法算出结果和bootloader的结果去比较,不符合就不运行
bootloader读保护+写 ...
不必自己写Bootloader,使用STM32内嵌的Bootloader就可以读出器件电子签名。
点赞  2010-8-22 13:22
看各位高手讨论,不免心动,借机询问:
以下是stm32 usb库中的一段程序:
/* Function Name  : Get_SerialNum.
* Description    : Create the serial number string descriptor.
* Input          : None.
* Output         : None.
* Return         : None.
*/
void Get_SerialNum(void)
{
  uint32_t Device_Serial0, Device_Serial1, Device_Serial2;

  Device_Serial0 = *(__IO uint32_t*)(0x1FFFF7E8);        //器件电子签名的首地址
  Device_Serial1 = *(__IO uint32_t*)(0x1FFFF7EC);
  Device_Serial2 = *(__IO uint32_t*)(0x1FFFF7F0);

  Device_Serial0 += Device_Serial2;

  if (Device_Serial0 != 0)
//这是否意味着电子签名还是有一定规律的?或都只是我乱猜?或都是写这个例子的人有点偷懒?

  {
    IntToUnicode (Device_Serial0, &Joystick_StringSerial[2] , 8);
    IntToUnicode (Device_Serial1, &Joystick_StringSerial[18], 4);
  }
}
点赞  2010-8-24 13:43
不明白,你凭什么说电子签名是有一定规律的?凭什么说写这个例子的人有点偷懒?

if (Device_Serial0 != 0)  这句话能说明什么?为什么?
点赞  2010-8-24 13:57
哦,我的理解是:
if (Device_Serial0 != 0)  条件成立则执行下面的行,否则不执行。
那么编程者必须要能肯定
Device_Serial0 += Device_Serial2;
运算以后的结果是Device_Serial0不等于0。

未知我的理解是否正确?
点赞  2010-8-24 14:09
                                 另:谢版主这么快就回复 ^_^
点赞  2010-8-24 14:10
谢谢指点,的确不懂...
点赞  2010-8-24 16:57
谢谢指点,的确不懂...
点赞  2010-8-24 17:29
军事秘密,只有通过至少三个id才能找到校验算法。
很难…但并非不可能。
点赞  2010-8-24 19:30
呵呵  HOT大叔  说得是 bootloader的做法 我也发现不 可行,因为这样很容易被破
要么每个bootloader 不一样! 还是麻烦的,我现在还是打算采用副ID的形式 来做 加密性可以达到我的要求了,试验程序 就塞BUG罢  没人能搞定 要是能搞定了 就相当于看懂代码,重写代码了,呵呵
点赞  2010-8-24 20:25
                                 用辅助id的方法已足够对付几个小毛贼的。
点赞  2010-8-24 20:38
                                 用辅助id的方法已足够对付几个小毛贼的。
点赞  2010-8-24 20:38
恐怕你不懂USB,所以也不知道这2行在做什么:
  IntToUnicode (Device_Serial0, &Joystick_StringSerial[2] , 8);
    IntToUnicode (Device_Serial1, &Joystick_StringSerial[18], 4);

这2行是要设置这个设备的USB ...
版主 发表于 2010-8-24 14:13
点赞  2010-8-24 20:47
12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复