昨天写了一篇关于文件破坏病*的分析文章,就是通过加密的方式,让文件打不开。
看到有网友评论,认为这个是加壳,加壳很早就听说过,因为一直都是自己开发软件,自己使用,没有想过到网上去分享自己的软件,所以没有研究加壳。
下面我自己弄个简单的加了壳的易语言程序。
代码如下图。
这个代码我开始还以为简单,真的写起来,问题多得很。
主要是流程控制命令的选择上,如果,如果真,还有判断,这些命令,平时看不出来有什么区别,写代码的时候区别就来了,果然名称不同,自然意义就不一样,古代人名字都好几个,什么字什么号的,既然这个搞肯定区别很大,还以为是搞起好玩的。
先说说如果。
我们把上图的判断命令修改为如果,如下图。
运行后,发现输入,这个就会出错。
点击了确定按钮后,就会再次提示注册失败。
分析下代码,发现这个如果命令,在眼睛看花了的情况下,很可能就弄错了。
我们注意下图框内箭头,这个箭头指向的代码位置放错了。
正确的放法应该如下图。
运行后如下图。
完全没有问题了。
再来说说如果真。
我们把代码修改下如下图。
这样一弄,运行的时候,我们输入的不是就正确,但是一旦输入就会错误,如下图,先显示注册成功,又显示注册失败。
这里我们就需要添加一个命令,这个命令,我编写代码的时候都没有想起来,写文章的时候想到的,如下图框内,所以说光看不写,不操作,怎么想得到。
这样运行后,就正确了,接着就是判断命令的写法。
这个命令弄起来简单,不容易出错,我一次性就解决了。
命令之间的差别,有一点就很重要,有的命令用起来就很顺手,不容易出错,有的就老火得很,用起来点都不习惯,还容易出错,虽然都可以完成功能。
记得以前听过一个营销面试案例,面试官提出,为什么一家卖洗发水的公司,要开发多个品牌,比如你看看宝洁公司,飘柔、潘婷、海飞丝等,都是一家公司的,为什么这么搞?
一个牌子就可以了,有个应聘者是这么回答的。
因为这个是出于营销的考虑,把利益最大化,如果是一家公司,一个品牌,有人喜欢肯定就有人不喜欢,在一定时期是恒定的。
多搞几个品牌,也许图案或者名称,还有风格,又能吸引一批粉丝,这样总的粉丝就会多。
本来洗发水质量都差不多,主要是营销手段。
所以一个编程语言,一个流程控制,相同的功能,都搞这么多命令出来,我猜想目的就是多吸引人来操作,现在编程语言市面上多得是,搞点命令,把其他编程语言的粉丝抢过来。
下面我们把文件编译了,如下图。
我们用昨天写的加密程序进行加密,然后如下图,图标也变化了,也打不开了,这个就是加密的后果,所以加密和加壳有着本质的区别。