辞职了,打算过一段时间,休息一两个月了再找工作,不想把自己搞的太累,做人要大气洒脱一点~~嘿嘿~~现在也没事可做,反正闲着也是闲着,就给大家写些东西,罗索罗索吧~~高手可以直接飘过~~


我就简单谈谈自己对壳的一些了解与认识,可能不完全对,必是咱也是新手,不足之处请原谅~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
从去年五月份开始才正式加入看雪这个论坛,说实话,学了不少东西,我想很多人知道看雪,只是因为爱好破解,然后~~~~其实这里我要申明一点正确的观点:逆向和开发是相辅相成的,如果你的代码量没有达到一定的行数,或者你的编程功底不到位,我想你可以先把破解放一放,努力把自己的编程能力提高,扎实的编程能力是破解与逆向的关键~~(仅个人观点)这是我跟前辈们学的~~学习的事贵在坚持,别想一两天学会什么东西,就高枕无忧~~如果汇编与C不行的,就不要搞驱动了,C++不扎实的就不要去天天整MFC之类的了,没用~~~如果你想成为一名真正优秀的程序员,而不是代码工人,你就照我说的去做~~也许会比别人花更多时间,但你会比别人站的更高,看的更远~~一份付出,一份收获!!---

------因为我怕别人说我误人子弟,小弟愚见,仅供参考
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

好了,废话不多说了,还是进入正题~~


今天花了一些时间写了一个小程序,我把它取名为文件加密器~~其实原理很简单,就是利用了aplib压缩库对文件进行加缩,然后利用简单的XOR对文件进行加密,然后添加了一个加密标志,以判断是不是我们之前加密的文件~~(代码在附件中,附加上来,是给一些新手看的,基本是按汇编的规范写的,有不当之处请指出,因为以前我在论坛上下载一些别人的代码,感觉风格之类的不是很好~~代码写的很挫,关键看风格,嘿嘿~~

壳~~

(1)壳是什么?
这是你要学会脱壳的关键!!一定要有个清醒的认识,以前我也是什么都不懂,反正就知道别人说AsPack,UPX,PECompact,Asprotect,TMD,VM之类的,于是就在网上下了一大堆视频去看,怎么样脱壳之类的,然后就照着视频去搞,什么ESP定律,两次内存断点法之类的,遇到了强壳之类的,也同样是像上面那样,对着视频上说的,怎么弄怎么弄,然后还真的脱了,但最后我发现,没用~~真的如果你老是去按别人的思路去搞,别人说什么就做什么,而不知道为什么?我想你和我上面说的代码工人是做的一样的工作,根本就是在胡弄,到头来,还是一无所有~~别人今天教你在LoadLibrary下断,明天教你在GetProcAddress下断,然后下几次断,为什么在最后一次要停下来,你是否都弄明白了,这就好像今天别人推出一个MFC,你就拼命照着它去弄,然后明天别人觉得MFC不行了,又换了XXX之类的,你又得拼命去弄,你知道其中的原理吗?你觉得这样有意思吗?其实别人老是在忽悠你,洋鬼子很聪明的,一直想把中国人牵着走,这就是为什么现在全要推行要自主创新,其实就是想我们自己推出CFM,让洋鬼子们去玩~~壳,不要把它想的很神秘了,其实没什么大不了的,一些软件的作者或者玩病毒木马的人不想让你知道他写的代码,于是就用各种方面,让你看不到它的源代码,不知道它在做什么,以及软件和病毒木马的开发思路,因为程序最重要的是思路,不是代码~~

总结一句话:壳就是用各种"乱七八糟"的手段,让程序的代码变得让你用反汇编之类的软件看不懂它在做什么的,以保护它的代码的目的

(2)壳的分类
壳分为两类:压缩壳和加密壳
上面是很早以前的一种分类的,现在壳基本上都用到了这两种技术,至于流行的还用到什么虚拟机之类的技术~~我们就从最简单的壳看起吧~~

压缩壳,其实原理很简单就是调用了一些压缩引擎然后对程序进行压缩,至于压缩引擎那是数学家发明的算法加上程序员写出来的代码,这里你就知道算法在程序开发方面是多么重要了吧,没有算法,写不出程序来~~程序不是Printf("hello world!")!

加密壳,其实原理同样很简单,就是用到一些加密的手段去程序进行加密,然后在程序运行之前进行解密~~就像我前面用的XOR一样~~~复杂点的就无非就用到了输入表加密,代码乱序之类的

现代流行的壳:
现在人们越来越多的将这两个技术结合起来,并加到一些反调试的技术,强一点的还加入虚拟机技术~~这样一来就使壳越来越脱,但壳的本质没变,就是使你看不懂它在做什么,加入反调试也是为了使你无法用OD之类的调试器进行调试的目的,常用的反调试技术,可以参考《脱壳的艺术》~~

(3)脱壳的关键~~~
如果看了我这篇文章的新手们,在看那些视频的时候,一定要多问问自己为什么他要那么做????这点很重要~~只有这样,你才能真正学会脱壳!!
前几天看雪上有一位朋友写--Themida 1.2.0.1 全过程分析,说实话很佩服他的毅力~

上面说脱壳做四件事,我觉得还是有一定道理:anti 解码 IAT OEP到达

当我们拿到一个程序的时候,不要怕,没什么大不了的,要有一种:只要你能加,我就能脱的心态~~人只要有恒心,不怕不成事!!

不管它有多复杂,其实本质还是一样,就像Window7又怎样,操作系统的本质还是那样~~

好了,说了这么多,其实脱壳并不难,只要我们对壳的本质了解了,不管脱什么壳,都是一样,不要把它想的有多难,其实说白了,就那样~~至于现在用到很流行的虚拟机之类的

技术,我也没有什么研究,在这里就不误导大家了~~


总结一下吧:其实写这篇文章,只是想给一些新手一些指导,现在很多新手,很迷茫,说高手写的文章看不懂,其实我敢说有些“高手”,他们写的文章,他们自己都未必搞的很清楚~~不要被那些所迷惑了,不要想什么事都可以一天两天学会,有些新手,连汇编的几条指令的都没搞清楚,是从本质上,不是表明上仅仅知道他的意思,就学明人去搞虚拟机之类的,当然迷茫了!!!我给你的建意是:临渊羡渔,不如退而结网,扎扎实实去把那些基础打扎实,老老实实去学,不要整天幻想,更不要成为代码工人之类的人~~那样的话,你的路走不长,不要永远被别人牵着走,人一定要有自己的思想~~~~只要你能坚持做下去,有一天,你会发现你才是真正的高手~~让我们一起努力吧~~成为真正的高手,真正的程序员,而不是现在大部分IT的代码工人,我们和他们不同~~我们要做得优秀~~学习贵在坚持,趁我们还年轻~~N年之后,我们都将是真正的高手~~

(说的不好的,不对的,请大家原谅!)

上传的附件 FileEncrypt.rar