反汇编
dclchj
这个作者很懒,什么都没留下…
展开
-
汇编--32寄存器大全
文章由(www.pulog.cn)网上搜集,来源:http://www.cppblog.com/merlinfang/archive/2007/07/07/27643.html32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP转载 2009-08-13 02:11:00 · 1055 阅读 · 0 评论 -
汇编基础学习29
文章转自 http://www.mcany.cn/article/304.htm博主 没落的残阳 这节来学习下有符号整数除法指令 IDIV,此指令进行有符号的除法运算,使用的操作数格式与DIV指令格式相同。 在进行8位除法之前,被除数(AX)必须进行符号扩展,余数的符号和被除数总是相同。 那么符号扩展顾名思义其实就是将它的符号位进行扩展,那么符号扩展有无相关的指令呢?转载 2009-08-13 18:56:00 · 313 阅读 · 0 评论 -
残阳汇编学习基础第三课
文章转自 http://www.mcany.cn/article/229.htm博主:没落的残阳 大家好,今天我们来讲解下JMP指令和遇见后的修改方法。JMP的指令意思我想都知道吧,它是无条件跳转的意思,这里我就不讲它多深奥了,说了不明白的人也很多,而看了就会像看天书一样,这里我直接讲讲遇见JMP怎么修改,反正有的人在乎的不是技术,而是结果。遇见JMP后,方法:替换 p转载 2009-08-13 07:06:00 · 308 阅读 · 0 评论 -
汇编基础学习4
文章转自 http://www.mcany.cn/article/278.htm博主 没落的残阳 今天我们来学习下eip寄存器。。它可存储着我们cpu要读取指令的地址,没有了它,cpu就无法读取下面的指令(通俗点讲cpu就无法执行。每次相应汇编指令执行完相应的eip值就会增加。 因为80386 cpu的寻址范围是4GB。所以它的寻址模式是平坦模式的。这里我描述下转载 2009-08-13 08:08:00 · 444 阅读 · 0 评论 -
汇编基础学习7
文章地址 http://www.mcany.cn/article/282.htm博主 没落的残阳 这节来讲解一下栈的延伸,“堆栈”。算是把昨天的整个理论基础概念,给大家讲解下。 运行时栈(RUNTIME stack)--我们通常称为“堆栈”,这是由我们cpu硬件直接支持的,也是实现过程的调用和过程返回机制的基本组成部分。 不知道大家是否知道RTL是什么意思。如果学过程转载 2009-08-13 08:46:00 · 308 阅读 · 0 评论 -
汇编基础学习9
文章转自 http://www.mcany.cn/article/284.htm博主 没落的残阳 这节我们来讲解下“标志位”。 因为无论何时,当程序执行算术运算时都有可能发生因溢出而导致的错误。。 高级语言并不侦测溢出错误。。 这导致我们往往很难发现BUG。 于此相反,在汇编语言中由于执行每步操作后,检查cpu的状态值。因为(因此)可以很好的控制溢出错误。。。 所以从以上我转载 2009-08-13 08:59:00 · 292 阅读 · 0 评论 -
汇编基础学习10
文章转自 http://www.mcany.cn/article/285.htm博主 没落的残阳 这节来学习下其他的几个标志。“PF标志位”“OF标志”, 其他还有一些标志位,但是我们并不常用。所以这里就不讲解了,等以后如果课程中需要的话,在讲解。如果有兴趣的可以去Intel官方下个Intel开发手册,自己看看。。上节课程学的3个标志位不知大家是否还记得。 它们分别是ZF SF CF转载 2009-08-13 09:08:00 · 304 阅读 · 0 评论 -
汇编基础学习11
文章转自 http://www.mcany.cn/article/286.htm博主 没落的残阳 这节来学习下loop循环指令。我们高级语言的堆栈分配初始化可是靠它了呵呵。 首先我们来看下它的指令格式。。 LOOP 标号 ;ECX不为零时跳转至标号循环.标号只是写汇编程序时用来表示一个内存地址的。 例如 token: xor eax, eax 此时to转载 2009-08-13 09:15:00 · 291 阅读 · 0 评论 -
汇编基础学习12
文章转自 http://www.mcany.cn/article/287.htm博主 没落的残阳 今天我们来学习下XCHG(Exchange Instruction)指令。它是交换指令。 交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。其指令格式如下: XCHG OPRD1,OPRD2 其中的OPRD1为目的操作数转载 2009-08-13 09:23:00 · 327 阅读 · 0 评论 -
汇编基础学习14
文章转自 http://www.mcany.cn/article/289.htm 博主 没落的残阳 这节来学习下NOT求反指令和XOR异或指令。这两个指令以后用的也很广泛,而且很多人都对这 个不是很了解。 NOT指令就是取反,那么16进制取反我在上上节课在讲解求数值的补码的时候已经说过了。。 16进制数值取反是用15-相应16进制数值相应位。举个例子转载 2009-08-13 09:26:00 · 265 阅读 · 0 评论 -
汇编基础学习20
文章转自 http://www.mcany.cn/article/295.htm博主 没落的残阳 这节来继续讲解移位指令---循环移位指令,今天我们学到的这两个指令比较有用,通常我们可以用来调换一个寄存器中的数据。。 以后我们学到win32汇编的时候,你就知道我们现在学习这些指令集的用处了。。 循环移位指令 1.循环左移 指令名转载 2009-08-13 17:10:00 · 330 阅读 · 0 评论 -
汇编基础学习21
文章转自 http://www.mcany.cn/article/296.htm博主 没落的残阳 这节来学习与我们字符串处理相关的指令,今天这节课程非常重要学好了以后就可以使自己的代码优化的更加完美。、 我们的目前80386系列的处理器提供给我们几组处理字节、字和双字数值的指令,尽管这些指令成为基本字符串指令,但他们的用法并不局限于字符数组。 指令:转载 2009-08-13 17:17:00 · 280 阅读 · 0 评论 -
汇编基础学习24
文章转自 博主 没落的残阳 这节来学习下另一组与字符串处理的指令。这组指令需要以指定的字符填充整个字符串或数组时比较有用。那么我们这节学习的这组指令就是stosb, stosw, stosd。这三个指令把al/ ax/ eax的内容存储到edi指向的内存单元中,同时edi的值根据方向标志的值增加或者减少。 同REP前缀联合使用的时候,这组指令需要填充整个字符串或数组时候比较有用。例如我转载 2009-08-13 17:42:00 · 384 阅读 · 0 评论 -
汇编基础学习26
文章转自 http://www.mcany.cn/article/301.htm博主 没落的残阳 这节课中我们来深入的学习下乘法指令。乘法指令有两种,一种是有符号整数乘法另一种是无符号整数乘法,今天我们来学习无符号整数乘法。 MUL是进行无符号乘法的指令。MUL(无符号乘法)指令有三种格式:第一种是将8位的操作数于al相乘。第二种是将16位的操作数与a转载 2009-08-13 18:23:00 · 309 阅读 · 0 评论 -
汇编基础学习28
文章转自博主 没落的残阳 这节来学习下无符号整数的除法运算指令,div(无符号)指令执行8位、16位和32位无符号整数的除法运算。指令中必须是唯一的一个寄存器或内存操作数是除数。 div指令格式: div 8位寄存器/8位内存操作数 div 16位寄存器/16位内存操作数 div 32位寄存器/32位内存操作数转载 2009-08-13 18:52:00 · 333 阅读 · 0 评论 -
汇编基础学习27
文章转自 http://www.mcany.cn/article/302.htm博主 没落的残阳 这节来学习下有符号整数的乘法运算,IMUL指令。这个指令保留了乘积的符号位。IMUL指令,IA - 32指令集中有三种格式: 单操作数、双操作数和三操作数。 在单操作数格式中,乘数和被乘数尺寸大小相同,乘积的大小是乘数/被乘数大小的两倍。 单操作数格式: 单操作数格式把乘积存转载 2009-08-13 18:48:00 · 336 阅读 · 0 评论 -
残阳汇编基础学习(一)
文章转自 http://www.mcany.cn/article/202.htm博主:滑落的残阳 因为汇编指令,寄存器,标志位等我觉得没什么必要给大家在列成一节课程去讲,即使去讲。也没什么成效。因为一节课程,大家根本就不可能消化掉。。 我想到了一个方法。那就是每天我给大家讲解一个汇编指令。每天大家只需几分钟的时间上论坛来消化掉一个,10天就10个。100天就是100个转载 2009-08-13 04:34:00 · 474 阅读 · 0 评论 -
汇编基础学习(二)
文章转自 http://www.mcany.cn/article/206.htm博主:没落的残阳 通用寄存器:80386有8个32位通用寄存器。。。 这8个寄存器名位eax ecx edx ebx esp ebp esi edi 这些寄存器的低16位的寄存器可以独立访问,并且把它们命名为ax cx dx bx sp bp si di 。 这些就是8086系列寄存器以前的8个16位通转载 2009-08-13 05:56:00 · 392 阅读 · 0 评论 -
汇编基础深入接触
文章转自 http://www.mcany.cn/article/272.htm博主 没落的残阳 说明:文章很长怕累就别看了直接关闭浏览器或者本站关于汇编语言 汇编语言是创造出来代替原始的只能由处理器理解的二进制代码的,也就是在OD中常见的机器码!用机器码来写程序,可以想象其难度吧,所以汇编语言就出现了,汇编代码是直接描述处理器可以执行的代码,也就是在OD中最常见的反汇编代码转载 2009-08-13 07:38:00 · 394 阅读 · 0 评论 -
汇编基础学习5
文章转自 http://www.mcany.cn/article/280.htm博主 没落的残阳 今天我给大家来讲解下我们内存中数据的存储以及存取。这节课的基础也是非常重要的。。因为80386的数据地址线是32根,所以它一次可以传送数据是4个字节。所以我们内存单元是按照4个字节来对齐的。 用高级语言的话,就是DWORD类型也就是4个字节。 首先来看下00403025h在转载 2009-08-13 08:12:00 · 311 阅读 · 0 评论 -
汇编基础学习6
文章转自 http://www.mcany.cn/article/281.htm博主 没落的残阳 这节我给大家讲解的是栈。 这对你以后调试程序是非常有帮助的。因为我们程序中的局部变量以及一些函数的参数都是栈中分配内存的。栈也是由我们编译器自动分配释放的。 那么栈到底是什么呢? 栈是一种具有特殊的访问方式的存储空间。它的特殊就是在于最后进入这个空间的数据,最先出转载 2009-08-13 08:26:00 · 298 阅读 · 0 评论 -
汇编基础学习8
文章来源 http://www.mcany.cn/article/283.htm博主 没落的残阳 这节我们来学习下数据传送mov指令的延伸。。,也没有准备,就讲解下movzx指令吧 因为这为我们以后课程的寻址打下基础。。 前面我已经对mov指令进行讲解了。今天我们来进行mov指令的延伸。 movzx。movzx一般用于将较小值拷贝到较大值中。 这个指令是非常有用的,大家以后学转载 2009-08-13 08:54:00 · 286 阅读 · 0 评论 -
汇编基础学习15
文章转自 http://www.mcany.cn/article/290.htm博主 没落的残阳 这节来学习下call和ret指令,它们都是转移指令,也都修改eip寄存器。他们经常的被用来实现在自程序设计。一般我们调用子程序都是通过call来实现的。 那么一般我们的call指令格式是 call 内存地址 这个内存地址就是我们子程序的地址,我们程序执行完call转载 2009-08-13 10:02:00 · 372 阅读 · 0 评论 -
汇编基础学习16
文章转自 http://www.mcany.cn/article/291.htm博主 没落的残阳 这节来学习下寻址方式。 1.首先我们来看什么是直接寻址? 直接寻址是我们创建一个直接偏移的操作数。 举例 mov eax, dword ptr [00403020h] ,那么[00403020h]就是直接寻址的形式。。加上dword ptr [] 表示获取的是我们目标内存地址的内容, do转载 2009-08-13 16:24:00 · 287 阅读 · 0 评论 -
汇编基础学习17
文章转自 http://www.mcany.cn/article/292.htm博主 没落的残阳 这节讲来下test指令。和相应的跳转指令所依据的标志位。 首先我们来学习test指令。 test指令在每对操作数的对应数据位之间进行隐含的“与”操作,并设置标志位,但不修改目的操作数。这点和cmp指令有点相似。 test指令与and指令的操作数格式相同。 格式:转载 2009-08-13 16:38:00 · 288 阅读 · 0 评论 -
汇编基础学习19
文章转自 http://www.mcany.cn/article/294.htm博主 没落的残阳 这节来学习算术移位的两个指令sal和sar指令。 那么逻辑移位和算术移位的区别是什么呢? 逻辑移位后,以0填充最后移出的位。 算术移位: 算术移位,SAL和我们的SHL等价。 SAR处理无符号数和我们的SHR是一样的。但是处理有符号数的话,SAR将以符号位填充移出的位。转载 2009-08-13 16:55:00 · 326 阅读 · 0 评论 -
汇编基础学习22
文章转自 http://www.mcany.cn/article/297.htm博主 没落的残阳 这节来学习下另一组字符串处理相关的指令,这组指令一般用于比较字符串。 比较由ESI和EDI寻址的两个内存地址的值。 指令: CMPSB , CMPSW , CMPSD 很明显,这不和那啥啥相同嘛。。 呵呵,不知道大家是否还记得昨天学的那仨指令。 MOVSB MOVSW M转载 2009-08-13 17:25:00 · 315 阅读 · 0 评论 -
汇编基础学习23
文章转自 博主 没落的残阳 这节来学习下另外一组字符串处理相关的指令。这一组指令一般用于查找指定的字符串。 比较累加器(al, ax或者eax) 与 edi寻址的内存地址处的内容。、 那么今天我们的这三个指令开始登场了。。 那就是SCASB,SCASW, SCASD。这三个指令吧al/ ax/ eax中的值同edi寻址到的目标内存中的字节或字或双字相比较。这些指令在一个长字符串转载 2009-08-13 17:37:00 · 331 阅读 · 0 评论 -
汇编基础学习25
文章转自 http://www.mcany.cn/article/300.htm博主 没落的残阳 这节来学习一下最后一组处理字符串相关指令。那么今天这组指令是LODSB, LODSW, LODSD。这组指令大家知道就可以了,因为基本我们以后很少用到。今天这组指令是从esi指向的内存位置向al/ ax/ eax装入一个值,同时esi根据方向值增加或者减少。 我们很少把rep前缀同lods转载 2009-08-13 18:16:00 · 280 阅读 · 0 评论 -
如何在下面的test函数里加入代码可以使程序运行起来输入和输出的相等
文章转自 http://hi.baidu.com/litomboy/blog/item/2237a28f660758e6f11f3622.html博主 小彬哥(环境是vc6Debug方式下)#includevoid test(){int t;scanf("%d",&t);在这里加入代码}main(){int m;test();printf转载 2009-08-14 12:36:00 · 554 阅读 · 0 评论