摘要:
1、 2、push 3 push 2 push 1 只有ESP发生变化(ESP=ESP-c),1、2、3也被压入栈 3、CALL 00401005(按F7不按F8) 把这个值(它的下一行)压入堆栈,EIP修改00401005(与9相同) 按F7之后会生成一个JMP指令 4、PUSH EBP MOV 阅读全文
摘要:
一、函数 1、计算机的函数,是- 一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时还带有一入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带 阅读全文
摘要:
一、 1、找到画堆栈图从401168开始画,ctrl+g出来一个弹窗,在弹窗上输入要找到哪一行输入0x401168,他会直接跳转 2、在那一行f2下断点点开始运行让cpu运行到该行停止(画堆栈图要关注栈底EBP,栈顶ESP两个寄存器) (1)调用前 (2)push2:栈顶减4,2被压入,为压栈 pu 阅读全文
摘要:
一、CMP指令 MOV EAX,100 MOV ECX,100 CMP EAX,ECX 这个主要是通过观察Z位来判断EAX和ECX两个数相不相等 先用mov将eax和ecx变成100再进行相减,得到eax为0ecx为100,z位为1 再将eax改成100,把所有标志寄存器改为0,输入指令CMP EA 阅读全文
摘要:
一、eip 1、eip中存储了一个决定cpu下一行执行什么代码的地址,若想改变cpu的行为就修改eip寄存器 二、JMP指令(修改eip) 修改eip为4183FD,cpu自己跳转到相应位置 SHORT是跳转的位置离它所在的位置小于128字节会自动加上的,大于则没有 执行之后寄存器和堆栈都没有变化, 阅读全文
摘要:
一、ADC指令:带进位加法 1、格式:ADC R/M,R/M/IMM (ADC 寄存器/内存,寄存器/内存/立即数) 两边不能同时为内存,宽度要一样 2、 ①ADC AL,CL CL加到AL中1+2应为3,但是是ADC再进位加法变成了4,C位也从1变成了0(因为AL+CL后高位没有溢出,所以变成了0 阅读全文
摘要:
一、 1、进位标志寄存器CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则为0 MOV AL,0xEF MOV AL,0xFE ADD AL,2 ADD AL,2 先在EAX中放入5555FFFF再加1,EAX变成55560000,此时看EAX首位是5没有进位 阅读全文
摘要:
一、内存 1、寄存器和内存的区别(详见第一章) 2、计量单位 3、正常情况下,32位的计算机能识别的内存最多是4g,但是可以通过打补丁增加寻址范围来识别更多 4、内存读写(一定要指定内存宽度byte八位 word十六位 dword三十二位) (1)如:将FFFF十六位的数写到内存地址为0x12345 阅读全文
摘要:
一、 1、通用寄存器 32位寄存器可以分为后面那个16位寄存器的,16位的还可以分成两个八位的 2、mov的语法(MOV指令不影响标志寄存器,加减乘除异或等运算指令会影响) 3、指令 (1)mov指令(详见2) (2)add指令 (3)sub指令 (4)and指令 (5)or指令 (6)xor指令 阅读全文
摘要:
一、数据宽度 数据宽度指的是在计算机中表示数据时所占用的内存空间大小,它决定了数据在内存中的表示范围和精度。数据宽度通常以位(bit)或字节(Byte)为单位来衡量,不同的数据类型有不同的宽度要求。在计算机科学中,数据宽度是一个基本概念,它涉及到如何有效地在内存中存储和处理数据。 位(bit):是数 阅读全文