
汇编
文章平均质量分 53
dittozzz
这个作者很懒,什么都没留下…
展开
-
汇编学习(3)x86常用汇编指令学习
刚学习汇编,根据我的学习进度会逐渐更新指令详细用法,以便以后复习,写的比较通俗,面向初学者。mov指令:mov 目标操作数,源操作数; (类似高级语言的等于号)拷贝 源操作数 到 目标操作数。例如 mov eax,ebx前后的位数(宽度)必须是相同的,8位对应8位,16对应16, 32位对应32位。(汇编有三种操作数:寄存器操作数,存储器操作数,立即数。寄存器操作数就是寄存器中的数,存...原创 2018-11-10 23:41:12 · 1493 阅读 · 0 评论 -
汇编学习(4)函数调用
菜鸡刚学汇编,总结下。哪里有错误欢迎指出。函数调用一般有个模板。push ebpmov ebp,esp//这里提升堆栈sub esp,0x40 //这里是开辟缓冲区,不同编译器开辟的缓冲区大小不同。push edipush esipush ebx//保留现场lea edi, dword ptr ss:[ebp-0x40]mov ecx,0x10mov eax,0xccc...原创 2018-11-21 23:39:52 · 3204 阅读 · 0 评论 -
汇编学习笔记(5)x86汇编 栈中数据的存储。
菜鸡刚学汇编,总结下。调用函数后,函数会开辟一块缓冲区,例如push ebpmov ebp,espsub esp,0x40这个sub esp,0x40 就是开辟了缓冲区,不同编译器开辟的缓冲区的大小不同,不用在意这个大小。开辟的这块缓冲区用来存放局部变量。堆栈中 单独存储的变量 ,每个都占4个字节的大小。并不是挨着存储的,这样虽然会造成空间浪费,但是可以减少寻址时间。例如 c语言中...原创 2018-11-22 09:44:13 · 1901 阅读 · 0 评论 -
汇编学习(2)x86汇编的几种寄存器
菜鸟一枚,刚学汇编总结下八个通用寄存器(没有段寄存器)EAX,EBX,ECX,EDX,EBP,ESP,EDI,ESIESP 指向栈顶 PUSH一个值进栈,是存放在ESP上面那个地方,push后ESP值减少,再次指向栈顶。POP是将ESP指向的值 POP出去,POP后ESP的值增加,再次指向栈顶。例如 AAAAAAAA ←ESP 则PUSH eax后,变为...原创 2018-11-17 11:13:06 · 802 阅读 · 0 评论 -
汇编学习(1)汇编的一些基础知识。
刚学汇编的菜鸡,总结一下。底层中数字的存储方式和运算假设为8位cpu1.无符号数直接将正数转化为二进制数。2.符号加绝对值数。(原码)先将整数转化为二进制数。不足7位在左边补0,如果是正数在最左边加0,是负数在最左边加1,。3.反码。将除符号位以外的数取反。4.取补码运算。所有的数取反,再加上1(正常运算)。5.以二进制补码形式存储整数。如果是正数,其原码即是补码。如果是...原创 2018-11-17 11:29:05 · 673 阅读 · 0 评论 -
逆向学习笔记(1)函数参数
菜鸡刚学汇编,总结下。一般情况下:首先观察函数调用前的代码:例如push 1push 2call 函数再看堆栈平衡处:如果 是add eax,0x8 或者是 ret 0x8由于0x8/4=2 则传入的参数的个数就是2个。以上是一般情况下。但是由于函数调用约定的不同例如__ fastcall约定,最左边的两个参数用 ecx,edx来传递,其余的参数通过堆栈push传递(由...原创 2018-11-22 23:10:14 · 803 阅读 · 0 评论 -
汇编学习(6)深入理解little-
菜鸡初学汇编,总结下 little-endian。这个破东西也困扰我好久,也算终于搞明白了。little-endian 简单来说即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。首先,明确一点,最小的单元都是字节;数据在内存中的存放是以字节为单位的。字节内的内容没有所谓的高位高址,低位低址。在内存中存放数据时,先将这个数据拆分为一个一个的字节。再将高位字节放在高址,低位字节放低址...原创 2018-11-25 22:55:44 · 435 阅读 · 0 评论