代码加密:糟糕的写法也是一种加密
副标题#e#
哎!
惨……
最近接连维护两个很烦人的项目,我的第一想法就是重写!但是上头的意思是说我的想法太猖獗。
可每次有这种环境我都感受照旧重写划算点……
之前的之前一个东东重写也就一周时间,而上头照旧抉择用着,对那东东很贫苦怕新写的别人不适应 以及不变性的担忧。而功效就没重写,接下来的几个月我都被那玩意烦。哎
回正题
这两个项目一个是C++的,一个是C#的,两个都是关于网络的。都长短常有各自语言的特色
C++的谁人项目是所有要处理惩罚动静的函数都是统一的 void xxxx(void* pData);
然后进去就
int* pxx = (int*)pData;
pxx= XXX(sss);
pData += sizeof int;
SH_XXX* pshxx = (SH_XXX*)pData;
Mxxxk(pshxx,xxxixx);
sss;
Send(g_Buf);//所有处理惩罚函数的最后都是这一句
写的是行云流水,畅快淋漓啊。逐步看也大白,可是人都容易草率的,许多时候调的时候一不小心, 就不知道跑哪儿去了。
所有函数利用同一个全局缓冲区,读和写是同时举办的。有大概读了一些对象,偏移一段后进入某个 函数又退回一段距分开始写对象。前前后后,读读写写。哎,烦啊
至于C#的谁人,导出是委托,每一个对象都有一个父类。好比
Code;
DoubleCode : Code;
ThreeCode : DoubleCode;
SessionCode : TreeCode;
StreamCode : SessionCode;
#p#副标题#e#
而事实上上面的类,每一个都只是在父类基本上加一个属性罢了。用的时候常常是base.xxx;常常是类 型转来转去的
许多类都在开线程,并且线程的执行函数是base.xxx
也等于Thread th = new Thread(new ThreadStart(base.Receive));
然后在base.Receive函数又挪用子类的DealCode函数处理惩罚动静。
哎,让人看着很不爽。常常跟的时候本身都忘了跟到那边去了。
因为尚有许多函数都是“署理函数”,也就是仅仅挪用别的一个函数罢了;
好比
void Doxxx(object data)
{
xxxx.Doxxx(data);
}
xxxx的Doxxxx(object data)
{
yyyy.Doxxx(data);
}
yyyy.Doxxxx(object data)
{
base.xxxx(data);
}
我就不大白为什么要这样写?类型化?照旧为了让别人不容易看懂本身的代码?
或者后者多一点吧?
那既然这样自信就不要推给我来维护啊……
哎……
最近他们又在开动一个猖獗的项目,很担忧最后又是我来收摊。
为什么我就这么惨呢?
措施员天天上十二三个小时的班是不该该的……
本日早上想到一个代码加密的举措,那就是将代码中所有的名称(类名,接口名,函数名,工具名, 变量名,函数的参数变量名都不要放过)通通的瞎改。改成下面的样子
void sekrj394329428 siweuirweiru234oodk(vdkdfnsdflk23dfkj dkf8s0fd0dsf,dsfklsdfklje sdfjffjj)
{
dkf8s0fd0dsf.sl3n34klsfkljdsklfjl();
sfnekr234l324j = sdfjffjj.skjl3j4klj32lkj();
dkf8s0fd0dsf.fmnelrwejrkl234 (new skfdjls324jklsjifosjf());
for(int simrweiro234uo324 = sdfjffjj.gklejlk23j4lk23j4();sdfjffjj.sldkjfkljkl32423kl4(simrweiro234uo324 );simrweiro234uo324 ++)
{
dkf8s0fd0dsf.skldfjlsdfjklwjrlw();
}
return sdfjffjj.sdfkljsdlfjl (sfnekr234l324j );
}
筹备今后有时间写这么一个加密的东东出来。没想到老天存心让我不要挥霍时间似的,看一个对象时 意外发明已经有人这么弄了……
那就是Xenocode.Fox. 他的库就给改成这个样子了。呵呵
不外有空我照旧弄一个出来吧,好好研究下System.CodeDom;本身写的东东用起来更有感受,呵呵呵
并且可以越发本性化,嘿嘿