官网:http://www.teorex.com/ 判断注册是否成功的起始地址: 004888B0 /$ 55 push ebp 关键函数: 004888E4 |. E8 27010000 call Inpaint.00488A10注册机编写: #include "stdafx.h" #includ... ...
分类:
其他好文 时间:
2018-01-04 13:09:44
阅读次数:
173
今天我们来看一下函数的调用过程与栈帧。 我们通过一段简单的代码和图示来介绍这个过程: 将这个过程用图示表示出来: 在cpu中,两个寄存器EBP、ESP分别指向栈的底端和顶端。 当程序开始运行时,先会创建两个变量a、b, 这时在栈中就会创建两段空间,地址中分别存放a和b的值,且由于a比b先创建,所以a ...
分类:
其他好文 时间:
2017-11-05 13:17:39
阅读次数:
133
在使用for循环接收处理数组的时候,有时候要回到数组的首位置。以前没有注意这个问题,以为循环变量置0就可以,实际不是这样的。先来看一下for循环的反汇编代码,如下:Unit1.cpp.595:for(inti=0;i<3;i++)
0040293833C0xoreax,eax
0040293A8945F4mov[ebp-0x0c],eax
Unit1.cp..
分类:
编程语言 时间:
2017-09-20 16:24:24
阅读次数:
121
1.(mov ecx,dword ptr [ebp-0Ch])将this指针压入ecx 2.(mov edx,dword ptr [ecx])this指针指向该对象的首地址,而该处的前四个字节存放着该对象的虚函数表的首地址,将虚表指针放到edx中。 3.(call dword ptr [edx+4] ...
分类:
其他好文 时间:
2017-09-02 01:05:55
阅读次数:
115
转自:here 这里以一个简单的C语言代码为例,来分析函数调用过程 代码: 首先说明,在堆栈中变量分布是从高地址到低地址分布,EBP是指向栈底的指针,在过程调用中不变,又称为帧指针。ESP指向栈顶,程序执行时移动,ESP减小分配空间,ESP增大释放空间,ESP又称为栈指针。 下面来逐步分析函数的调用 ...
分类:
编程语言 时间:
2017-08-24 23:58:52
阅读次数:
401
1. ABI规定桢栈结构 (1)栈帧的内存布局(以Linux为例) (2)栈帧的形成方式 (3)栈帧的销毁方式 2. ebp寄存器 (1)ebp为当前栈帧的基准(存储上一个栈帧的ebp值) (2)通过ebp能够获取返回值地址、参数和局部变量等。 3. 函数调用发生时的细节 (1)调用者通过call指 ...
分类:
其他好文 时间:
2017-08-23 12:00:41
阅读次数:
198
0x00前言: ESC定律脱壳一般的加壳软件在执行时,首先要初始化,保存环境(保存各个寄存器的值),一般利用PUSHAD(相当于把eax,ecx,edx,ebx,esp,ebp,esi,edi都压栈),当加壳程序的外壳执行完毕以后,再来恢复各个寄存器的内容,通常会用POPAD(相当与把eax,ecx ...
分类:
其他好文 时间:
2017-08-20 14:11:25
阅读次数:
669
1.1 寄存器 寄存器其实是一个统称,是一些CPU芯片里用于快速计算的小型存储器,寄存器其实是通用的,但还是有一些约定。(计算机组成原理) eax:拓展累加寄存器;ecx:循环计数器;edx:数据寄存器;ebx:基址寄存器; esp:栈顶;ebp:栈底;栈:数据结构中一种存储数据方式,可以看成是竖着 ...
分类:
其他好文 时间:
2017-08-13 20:45:21
阅读次数:
110
32位通用寄存器 32位:EAX EBX ECX EDX ESP EBP ESI EDI 每个寄存器的最大宽度是32位 16位:AX BX CX DX SP BP SI DI 8位 :AL BL CL DL AH BH CH DH 想寄存器存一个数字可以用mov指令 mov eax,1 就是把1存到 ...
分类:
其他好文 时间:
2017-08-13 20:09:53
阅读次数:
310
寄存器 主要用途 存储范围 EAX 累加器 32位 ECX 计次 32位EDX I/O指针 32位EBX DS段的数据指针 32位 ESP 堆栈指针 32位EBP SS段的数据指针 32位ESI 字符串操作的源指针; SS段的数据指针 32位EDI 字符串操作的数据指针;ES段的数据指针 32位 因 ...
分类:
其他好文 时间:
2017-08-10 22:32:35
阅读次数:
109