资源描述:
《汇编基础知识46732》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、汇编基础知识46732[分享]汇编基础知识汇编基础知识一.机械码,又称机器码.ultraedit打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码.修改程序时必须通过修改机器码来修改exe文件.二.需要熟练掌握的全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了cmpa,b比较a与bmova,b把b的值送给aret返回主程序nop无作用,英文“nooperation”的简写,意思是“donothing”(
2、机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call调用子程序je或jz若相等则跳(机器码74或0F84)jne或jnz若不相等则跳(机器码75或0F85)jmp无条件跳(机器码EB)jb若小于则跳ja若大于则跳jg若大于则跳jge若大于等于则跳jl若小于则跳jle若小于等于则跳pop出栈push压栈三.常见修改(机器码)74=>7574=>9074=>EB75=>7475=>9075=>EBjnz->nop75->90(相应的机器码修改)jnz-
3、>jmp75->EB(相应的机器码修改)jnz->jz75->74(正常)0F85->0F84(特殊情况下,有时,相应的机器码修改)四.两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz)=>jmp相应的机器码EB(出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息xxxxxxxxxxxx出错信息,例如:注册码不对,sorry,未注册版不能...,"FunctionNotAvaibleinDemo"或"CommandNotAvaible"或"Can’tsaveinSha
4、reware/Demo"等(我们希望把它跳过,不让它出现)。。。。。。xxxxxxxxxxxx正确路线所在2.修改为nopje(jne,jz,jnz)=>nop相应的机器码90(正确信息向上找到的第一个跳转)nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处xxxxxxxxxxxx正确信息,例如:注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)。。。。。。xxxxxxxxxxxx出错信息(我们希望不要跳到这里,不让它出现)它们在存贮器和寄存器、寄存
5、器和输入输出端口之间传送数据.1.通用数据传送指令.MOV传送字或字节.MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP交换32位寄存器里字节的
6、顺序XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)XADD先交换再累加.(结果在第一个操作数里)XLAT字节查表转换.──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即0-FFH);返回AL为查表结果.([BX+AL]->AL)2.输入输出端口传送指令.INI/O端口输入.(语法:IN累加器,{端口号│DX})OUTI/O端口输出.(语法:OUT{端口号│DX},累加器)输入输出端口由立即方式指定
7、时,其范围是0-255;由寄存器DX指定时,其范围是0-65535.3.目的地址传送指令.LEA装入有效地址.例:LEADX,string;把偏移地址存到DX.LDS传送目标指针,把指针内容装入DS.例:LDSSI,string;把段地址:偏移地址存到DS:SI.LES传送目标指针,把指针内容装入ES.例:LESDI,string;把段地址:偏移地址存到ESI.LFS传送目标指针,把指针内容装入FS.例:LFSDI,string;把段地址:偏移地址存到FSI.LGS传送目标指针,把指针内容装入GS.例:LGSDI,str
8、ing;把段地址:偏移地址存到GSI.LSS传送目标指针,把指针内容装入SS.例:LSSDI,string;把段地址:偏移地址存到SSI.4.标志传送指令.LAHF标志寄存器传送,把标志装入AH.SAHF标志寄存器传送,把AH内容装入标志寄存器.PUSHF标志入栈.POPF标志出栈.PUSHD32位标志入栈.POPD