1:函数传参数的方式是将数据进行拷贝传递的。 2:基本数据类型编译器一般是通过PUSH指令来将参数入栈的,但是当传入的参数是结构体时,会采取,函数堆栈初始化的方式进行参数的拷贝 PUST EBP MOVE EBP,ESP SUP ESP,40H MOV ESI,[EBP-40] MOV EAX,0C ...
分类:
其他好文 时间:
2016-10-14 07:19:13
阅读次数:
122
一、push xxxxx指令和ESP的关系 ESP的值,是由Push指令后面的操作数的宽度决定的。也就是xxxxx的宽度,假如Puh后面跟的是一个立即数,由于整数是四字节,所以esp-4。 假如Push 后面跟的是容器,那么就看这个容器的宽度。 例:假如目前ESP的值是FFFFFFFF 当PUSH ...
分类:
Web程序 时间:
2016-10-07 20:08:00
阅读次数:
155
1.基础知识。 在x86处理器中:EIP(Instruction Pointer)是指令寄存器,指向处理器下条等待执行的指令地址(代码段内的偏移量),每次执行完相应汇编指令EIP值就会增加。 ESP(Stack Pointer)是堆栈指针寄存器,存放执行函数对应栈帧的栈顶地址(也是系统栈的顶部),且 ...
分类:
其他好文 时间:
2016-09-25 10:43:23
阅读次数:
124
今天下午写篇博客吧,分析分析c语言中函数调用的本质,首先我们知道c语言中函数的本质就是一段代码,但是给这段代码起了一个名字,这个名字就是他的的这段代码的开始地址 这也是函数名的本质,其实也就是汇编中的标号。下面我们会接触到一些东西 比如 eip 就是我们常常说的程序计数器,还有ebp和esp (这里 ...
分类:
编程语言 时间:
2016-09-24 18:58:47
阅读次数:
227
ps:先做草稿,以后有时间再整理并贴图,:) 主要是利用栈底寄存器(ebp)、栈顶寄存器(esp)跟eax寄存器(存储返回值)来实现。 假设P调用Q: P() { Q(1,2); } 1.调用前准备,将Q的参数放到栈中(非push) mov $1, (%esp) mov $2, 4(%esp) 2. ...
分类:
编程语言 时间:
2016-09-21 21:25:43
阅读次数:
187
一、32位通用寄存器(EAX,ECX,EDX,EBP,ESP,EBP,ESI,EDI) 二、十六位通用寄存器(AX,CX,DX,BX,SP,BP,SI,DI) 三、八位通用寄存器(AH,AL,CH,CL,DH,DL,BH,BL) 四、32位,16位,8位寄存器之间的关系 1.寄存器都是高位在前,低位 ...
分类:
其他好文 时间:
2016-09-19 06:43:52
阅读次数:
143
Borland Delphi 6.0 - 7.000509CB0 > $ 55 PUSH EBP 00509CB1 . 8BEC MOV EBP,ESP 00509CB3 . 83C4 EC ADD ESP,-1400509CB6 . 53 PUSH EBX 00509CB7 . 56 PUSH E ...
分类:
编程语言 时间:
2016-09-17 01:57:38
阅读次数:
404
这款壳不是什么强壳,属于普通的压缩壳 首先OD载入程序中断在此处 我们单步步跟踪 来到这里,esp定律下硬件访问word断点! 程序在0042d03d处弹栈,之后F8单步跟 一个大JMP之后程序来到这里 鼠标右键,从模块中删除分析,就来到了程序的OEP,看着样子应该是VB程序 ...
分类:
其他好文 时间:
2016-09-17 01:51:33
阅读次数:
458
新入一二手X240 ,直接格式化,装archLinux。 一、引导程序安装 1、首先搞清楚什么是UEFI EFI System Partition 必须是物理分区(不支持lvm、软raid等) esp分区与操作系统无关,EFI firmware会直接读取该分区内的bootloader和启动程序。 推 ...
分类:
系统相关 时间:
2016-09-13 01:26:16
阅读次数:
912
最近在看张银奎先生的《调试软件》一书,想将关键的技术记录下来,以便日后查阅,也分享给想看之人吧。 1 通用寄存器 EAX,EBX,ECX,EDX:用于运算的通用寄存器,可以使用AX,BX等16位或AL,AH等8位短寄存器,访问长寄存器的相应地址 ESP,EBP:Extended Stack/Base ...
分类:
其他好文 时间:
2016-09-08 18:07:30
阅读次数:
158