欢迎来到天天文库
浏览记录
ID:8793836
大小:111.50 KB
页数:22页
时间:2018-04-08
《averyindepthtutorialonautoassembler(已翻译)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、------------------------------内容表------------------------------I.介绍II.寄存器II.a32位寄存器II.b16位寄存器III.指令III.aJMPIII.bMOVIII.cPush/Pop+TheStackIII.dalloc/label/registersymbolIII.eCallandRetIII.f其他IV.ArrayofBytesV.结尾VI.人员名单/致谢词额外内容:写一个脚本------------------------------I.介绍------------------------------
2、'哟,我猜你在读这个是因为下面两件事中的一个。1)你正在试图学习自动汇编(我不会叫你菜鸟,因为每个人都是从哪里开始的,对吧=))or2)你想测试你的自动汇编知识(作为扩展)。那么,如果你是前者,那就慢慢的体会好每个部分,并且在继续进行前确认自己已经明白了这章。DarkBytewrote:大多数人都认为AA很难,其实它可容易了。来自CE作者自己的话如果是后者,那我不会给你提任何的建议,即使我想帮忙。如果你发现有什么错了,或者含糊或者认为我可以做的更好,请告诉我。我一直处于自我学习的状态!等等!别问,我知道你在想什么。Youwrote:为什么我非要听一个还在学习的人的话?好,我来告诉你
3、,我的朋友。即使我仍然在学习,我了解AA,并且我认为与你分享知识是一件很棒的事。=)Edit:这个是很久以前写的,但是现在我学到了很多,并且已经重新检查了。现在,让我们投身入奇幻的电脑世界------------------------------II.寄存器------------------------------这些也许你已经在一些脚本中看到过,它们被非常广泛的使用。有两种寄存器被使用,接下来来进行讲解。---------------II.a32Bit---------------首先,我将解释每个寄存器是如何得到它们的名字的,这会帮助你记住它们哪个是哪个。首先,以E开头(如
4、果你注意了下面,你会发现所有的寄存器都是以E开头的)它告诉你这个寄存器是32位寄存器。而A,B,C,D的含义你看完描述就能明显得体会到了。像SI,DI,BP,SP,IP也是一样。在EAX,EBX,ECX,EDX后面的X,他简单的表示已经没有更多的字母了。有点像一个NOP命令(之后你将读到)。如果你注意了,你会发现每个32位寄存器都是3个字母。EAX:累加器(Acculmulatorregister)。能够用来当存储器EBX:从前,它是个基础寄存器,但现在只是个闲着的存储器ECX:计数器(Countingregister)。也能用来当存储器EDX:数据寄存器(Dataregister
5、)。跟之前三个一样,能用来当存储器。ESI:源址变址寄存器(SourceIndexregister)。是字符串形式的指针变量,但你现在还不用担心那部分。能够用来当存储器。EDI:目的变址寄存器(DestinyIndexregister)。又一次,能够当作存储器,并且是个字符串形式的指针变量,但别担心。EBP:机制指针寄存器(BasePointerregister)。是用来临时存储ESP,当然也可以像常规的存储器那样使用。ESP:原址指针寄存器(SourcePointerregister)。它在堆栈里指向寄存器和地址(这个内容待会再说)。EIP:指令指针寄存器(Instruction
6、Pointerregister)。错误的使用会使你正在试图修改的程序崩溃。---------------II.b16Bit---------------16位寄存器和32位寄存器很相似,他们间有两个区别。一是,32位寄存器名字是三个字母,而16位寄存器是两个字母。还有一件事就是16位寄存器比32位寄存器多但别担心。16位寄存器我们一般都用不上。AX:参照EAXBX:参照EBXCX:参照ECXDX:参照EDXSI:参照ESIDI:参照EDIBP:参照EBPSP:参照ESPIP:参照EIP---------------关于寄存器的内容还很多。如果你想学习更多关于寄存器的只是,那就去拜G
7、oogle大神吧。对于绝大多数的学习者来说求知欲都是很重要的。------------------------------III.命令------------------------------当今,什么语言没有它自己的函数和命令呢?与英文相比,命令像个单词,而操作代码像个句子。操作代码并不难,比如:Code:jmp00123EAA关于操作代码你应该知道两点。首先,在操作码里,一般都会有个地址或者寄存器,以及一个显而易见的命令。地址是Hex形式的,是Hexadecim
此文档下载收益归作者所有