首先先解释下ASM的含义:ASseMbly..也就是计算机中仅次于机器语言的汇编语言,在计算机编程语言中算比较低级的,也是最没人用的...有次我兄弟说:“计算机只有两种语言:一种是天天被人骂的,另一种是没人用的”。汇编就是那位每年计算机编程语言排名时总是落在最后面的那位大叔..可他的空间和时间效率是其他中级,高级其他语言无法比拟的..说的简单点吧,学过编译原理的都知道..一个高级程序在编译过程中都是需要经过编译器转换成机器硬件相对应的指令集..而各个指令集都有其一一对应的汇编指令,也就是说汇编的所有指令都与机器硬件的指令集一一对应具体就是cpu的型号有关因为我都是接触的intel汇编所以列举一些(x86,80286,80386,80486,80586(奔腾)以及奔腾系列的MMX,3DNow,SSE,SSE2,x86-64指令集等)..所以执行效率高也就很正常了..经常听到网上有人说汇编难学,而且就算学了也没用。
汇编难学我承认,当初我为了80x86的指令集就折腾了好久,刚开始看到一堆指令时,我也傻眼了,什么东西呀!是人学的么!...也记得有一段时间都不想去碰它(那段时间貌似去研究病毒的)...发现汇编是个“好”东西,BTW..呵呵..可以写病毒!我立刻重拾汇编..然后疯狂的到了汇编的世界..
从《汇编程序设计教程与实验》(清华版的,我当时是拿它入门,如果大家现在想学我还是推荐王爽老师的《汇编语言》入门不错,学校开的都是IBM汇编程序设计个人感觉太单调没几个学的下去),到后来的《80x86汇编语言与计算机体系结构》,我算是汇编入门了,因为是16位的汇编在windows下用的不是很顺,屏蔽了很多特权指令而且也不能随便修改中断向量表来做自己喜欢的事都由我们的API大哥给接手了..所以我16的汇编我基本都是在VM中的Dos下完成的..第一个程序:“hello world”..费了好大的劲..因为汇编连+,-,*,/都要自己去写.打印到屏幕上就更别提了,还好《80x86体系》这本书的作者把常用的atoi,itoa,dtoa,atod等都给我用宏定义好了,我就直接“拿来主义”啦..不过代码还是研究了下..继而开始写一些简单的中断服务程序..也就是hook中断向量表然后执行自己的代码,当年dos下的virus基本技术手法都是篡改中断向量表,然后大肆的...呵呵..最后我还是没写成dos的virus..原因是我发现在现在的windows下它几乎无作用(简单而言,windows 9x及其后的MS都将文件格式都改成PE,而非dos时代com和exe和windows 3.x的LE)不过dos程序在CMD中还是可以执行的..
而且我发现网上所有的汇编virus都是用32位的汇编程序写的,所以我又开始了32位的征程,这次买对了书《windows 环境下32位汇编程序设计(第二版)》这本可是牛人写的我们罗云彬大哥,不过我听说他因为犯事被抓了,是否真实不管了,只要这本书在行了我要的是他的技术..^_^...PS:最近想买本书可死活都买不到。。我那心情真不爽跑遍网上书店和南京有名的书店就没有..哎.. 难道那本书的技术太牛B了..都禁止出版了..我更想看它,宁愿折磨眼睛看它的电子版了~
发现32位对于16位最大的优点在与让汇编程序员摆脱了中断的无尽痛苦,取而代之的是API(应用程序编程接口Application Programming Interface)大哥..它方便了windows下的应用程序的开发,可苦了virus的制造者们..不过他们过人的智慧还是将比尔大叔的那句“有了windows,virus将不复存在”给毁了,大叔估计现在后悔说那句话了..当初学16位最费劲的寻址,而现在是面对API一大堆的Parameter...OMG..写个窗口程序竟然用了多达12个..(还好我不用32位来写UI那是会“死人的”象罗大哥的的确没几个)..virus不需要UI! PS:(年前我们学院科协有个抢答活动,我和我那YangQ兄商量了下打算也个抢答器程序好减轻大家负担,也好说明我们科协还是有点技术的....我们两商量一人写一个然后看谁的好用谁的...结果是:我的cut了,关键我的ASM的UI表现确实不如他的C#那么强大,YangQ说:“你没输在技术上,而是输在了工具上”^_^....我从此不写UI了..(^_^)呵呵)
看完罗大哥的那书后来了句感慨:好书!可我faint了.. 发现我还是写不出virus,所以我阅读了一大堆virus源码:紫色心情,莫国防,广外女生, Win32.Iced Earth ,Win32.Molly..还是发现了很多crazy的技术..Ring3下Hook Api ,Ring3->Ring0,怎么使用SEH使自己的程序更Stronger,PE文件结构以及怎么将病毒代码插入PE的节和间隙中,“VMM”插入技术,“进入调用门”,修改“IDT”表,以及病毒线程驻留...都是很实用的技术至于怎么实现这里就不多说,想知道的话自己研究才最有收获而且对计算机底层了解也很有帮助。 至于我最后的virus的进程:也过一个被Rising AV 给Kill了,结果发现疏忽了“壳”...现在几乎所有的virus都给自己加了各种各样的“壳”逃避杀软的追杀..还有的在源码做手脚...最多的就是添加“花指令”..其实就是加了一堆没用的代码骗反汇编器的..不过OD还是能分辨的~....写壳?还是破壳?
至此我走上了加密与解密的道路,软件破解和脱壳技术.PEDIY变成了我常去的论坛...他的标语:“云集了密界众多高手!”..很好很强大! ..看雪老大很强大! 他的那本《加密与解密》很经典...我正在研究中..发现了很多优秀的黑客软件,反编译器,反汇编器(IDA Pro W32Dasm),调试工具(OD TRW2000 SoftIce)因为softice兼容性不太好而且UI不太友好...还没用过...