灰虫轨迹

我热爱编程

博客园 首页 新随笔 联系 订阅 管理

   来自看雪学院
      明码泄漏最有名的利用就是+ORC提出的数据约束性的秘诀(Data_constraint),其依据参数
或局部变量通常都是存储在堆栈中的,而软件作者一般都使用局部变量存放临时计算出来的
注册码,以比较真假,使得它们的位置很接近.

  像"序列号"=F(用户名)算法计算出来的序列号是以明文形式在内存中出现的,很容易
在内存中找到它,从而获得注册码.
  虽然有时算法控制的好,但稍不留意还会造成明码泄漏,这样的例子很多,本期话题就讨论如
何避免明码泄漏.


1.我想就是把序列号分步算,分步验证,就算泄漏也不会同时全部泄漏.再就是算法中故意出
来很多假的明码,迷惑破解者

2.F(序列号)==F(用户名)
    F(序列号)==用户名
比如对序列号采用一种算法处理,生成tempSn,然后对用户名采用另外一种算法处理,生成
tempName,如果tempSn ==tempName  
  这些算法可以采用对称密码学算法或者公钥密码学算法实现

3.编程的时候写个字符串加密类继承处理所有处理的明文的字符串类,并且修改编译器的头文
件,将所有定义字符串和字符的关键字改名,并用具有加密性质的宏替代.

4.如果真的需要储存计算出来的数据,以不想直接存放到stack或heap,可以考虑用
linke list把每一个字节分散储存
typedef struct tagDATA
{
   char data;
   struct tagDATA*next;
}DATA;
每一个新建的结构都用malloc或VirtualAlloc(可以指明位置)来取得空间

posted on 2005-03-07 14:04  灰虫轨迹  阅读(285)  评论(0)    收藏  举报