最优源码保护方案——只有你能看懂的代码

本文全程无代码高亮,请自备狗眼.

作为一个常年混迹于编程群的基佬,我见过的代码应该不算少,下面摘录一些写的结构比较好的代码.

由于编程语言大多数都有共通性,又不知道读者会使用什么编程语言,所以代码内容将会用伪代码进行替代.

===============================高级代码分割线================================

第一种保护方案,高级缩进,也是高手中比较常见的代码保护手段.

主要特征是缩进长短不一,扰乱代码的层次感,玩的好的高手甚至可以将代码写出花式效果.

例如这段代码,就是很好的学习例子:

   男孩类 男孩=new 男孩类();

           男孩.设置名称("Lily");

        男孩.设置性别(女孩类);

                    女孩类 女孩=(强制转换)男孩;

作者使用了多种缩进长度,想必简单的二空格缩进,四空格缩进,八空格缩进和Tab缩进已经无法阻止他了.

下面是一个较为失败的新手模仿高手使用高级缩进的例子,请各位同学引以为戒:

           男孩类 男孩=new 男孩类();

             男孩.设置名称("Lily");

              男孩.设置性别(女孩类);

          女孩类 女孩=(强制转换)男孩;

很明显作者使用了右对齐,大大增强了代码的可读性,反而起不到对代码的保护作用.

===========================高级代码分割线==============================

第二种代码保护方案,本地化语言加密,这也是高手中比较常见的一种代码保护手段.

简单的说,这种写法的主要优势在于本地化的语言只有你能看懂,令非本地的编码人员一头雾水.

作为一个中国人,我们必须使用母语进行编程,绝对不用美利坚帝国和大英帝国的语言.

所以上面的男孩女孩示例可以这样写:

   nanhailei nanhai=new nanhailei();

           nanhai.shezhimingcheng("LiGang");

        nanhai.shezhixingbie(nvhailei);

                    nvhailei nvhai=(qiangzhizhuanhuan) nanhai;

笔者水平较低,只会拼音,如果高手你会五笔,肯定能写出更好的代码.

===========================高级代码分割线==============================

第三种代码保护方案,大小写错乱,这种写法在高手中不怎么常见.

因为大小写错乱写法很容易被修改为标准写法,笔者也不推崇使用这种方法.

原理在于依靠部分编程语言对大小写不敏感的特性,对代码进行加密.

所以上面的男孩女孩示例可以这样写:

   nAnHAilei nANhAi=new nAnhAilei();

           nAnhAi.sHezHiMinGchenG("hAonAnrEn");

        nANhaI.sHeZHiXiNgbIE(NvhaIlEI);

                    nvHAIleI NVhAi=(QiAngZhIZhuaNHuAn) NaNhAi;

新手常见的失败例子:

   NanHaiLei NanHai=new NanHaiLei();

           NanHai.SheZhiMingCheng("LiGang");

        NanHai.SheZhiXingBie(NvHaiLei);

                    NvHaiLei NvHai=(QiangZhiZhuanHuan) NanHai;

很明显,作者没有基本的代码编写常识,不但大小写的位置太过于整齐,而且不遵守驼峰法,匈牙利法等命名规则.

===========================高级代码分割线==============================

第四种代码保护方案,利用代码空隙.此写法非常危险,因为很容易使高手们自身也无法分清代码.

这种代码的优势在于只有机器可读,人类可读性较低,对源代码的保护可谓到了极致.

以下是此种代码的优秀示例:

   nAnHAilei      nANhAi=               new nAnhAilei();          nAnhAi.

sHezHiMinGchenG(                    "hAonAnrEn"); nANhaI.

sHeZHiXiNgbIE(NvhaIlEI)        ;nvHAIleI           NVhAi=

               (QiAngZhIZhuaNHuAn)          NaNhAi;

错误示例:

       nAnHAilei      nANhAi=               new nAnhAilei();          nAnhAi.

             sHezHiMinGchenG(               "hAonAnrEn"); nANhaI.

      sHeZHiXiNgbIE(NvhaIlEI)               ;nvHAIleI                 NVhAi=

          (QiAngZhIZhuaNHuAn)               NaNhAi;

看到这段代码你肯定会认为作者患有严重的强迫症.

===========================高级代码分割线==============================

第五种代码保护方案,代码压缩,此种方案手动编写难度较高,多为程序转换得到.

依然是男孩女孩作为示例,代码示例如下:

A b=new A();b.c("hAonAnrEn");a.d(E);E f=(G)b;  

在大型项目中效果显著.

===========================高级代码分割线==============================

第六种代码保护方案,转义加密,多用于字符串的保护.

由于很多符号和unicode编码的字符可以用非人类可读的形式进行表示,故发展成为了一种新兴的加密手段.

加密前:

优质的代码需要优质的保护方案

加密后:

\xd0\xb4\xb3\xf6\xd5\xe2\xd6\xd6\xb4\xfa\xc2\xeb\xc4\xe3\xd4\xf5\xc3\xb4\xb2\xbb\xc8\xa5\xcb\xc0

当然,你也可以自己写一套加密字符串专用的函数,当然前提是这种加密手段可逆.

===========================高级代码分割线==============================

第七种代码保护方案,注释扰乱,这也是一种利用注释进行源代码加密的手段,此写法非常危险,因为很容易使高手们自身也无法分清代码.

依然用男孩女孩作为例子:

   nAnHAilei      nANhAi=               new nAnhAilei();          nAnhAi.//;nvHAIleI           NVhAi=

           sHezHiMinGchenG(                    "hAonAnrEn");                 nANhaI.                 //NaNhAi;

        sHeZHiXiNgbIE(NvhaIlEI)        ;nvHAIleI           NVhAi=// nAnHAilei

                    /* nANhAi=*/               (QiAngZhIZhuaNHuAn)          NaNhAi;

===========================高级代码分割线================================

本次的最优源码保护方案就到此结束了,如果有更好的代码保护方案,请写在评论中,我会取优质的代码写入文章(当然也会保留您的帐户信息供新人学习),谢谢合作.