COM 学习笔记 (1) : COM 简明概念

COM 的简明概念面向组件编程的优点应用的可定制性用户希望能够定制他们的应用,而程序员可以为用户建立应用定制方案 —— 通过组件架构本身的可定制性 (用户能使用需要的组件来将某个组件替换掉)组件库组件架构拥有快速应用开发的优点,程序员可以某个组件库中取出所需的组件并将其快速地组装到一起,构造出所需的

x86 保护模式浅析 (3)

工具准备NASM 汇编器,以及一个文本编辑器VirtualBox 虚拟机 (或者 Bochs 也可以)开始实战进入保护模式的汇编代码gdt_base equ 7e00h ; gdt_base 表示 GDT 头部的地址; 这一段代码主要是将 GDT 的头部地址,转换为 “段:偏移” 的形式,在实模式

x86 保护模式浅析 (2)

走进保护模式A20 地址线在本文中,要完全解释 A20 地址线的作用以及原理是不太现实的。对于我们程序员而言,我们只需要了解一些大致的概念。简单来说,因为考虑到向下兼容性,A20 地址线在默认情况下是禁用的。于是,我们得启用它,这样我们就可以访问全部内存,这对于 CPU 在保护模式下正常工作是十分重

x86 保护模式浅析 (1)

实模式下的内存访问实模式下,CPU通过段寄存器 (16位) 和偏移地址 (16位) 来访问物理地址,这个过程可以抽象地简述成以下步骤:1、将段寄存器中存放的地址,左移4位 (乘以2的4次方,即乘以16) 得到基址 (为了方便理解暂且这么叫吧)2、将上一步得到的基址加上偏移地址,得到真实的物理地址在上

Windows 内核字符串

UNICODE_STRING 结构Unicode 字符串的结构定义如下typedef struct _UNICODE_STRING { USHORT Length; // 字符串长度(Byte) USHORT MaxiumLength; // 字符缓冲区长度(

C语言右移操作在汇编层面的相关解释

在 CSDN 看到帖子回复如下:x=y>>2;004122A8 mov eax,dword ptr [y] 004122AB sar eax,2 '算术移位 004122AE mov dword ptr [x],eax x=((uns

for 循环的反汇编浅析

for 循环for 循环是使用频度最高的循环结构,我们通过 C 语言反汇编实例,来分析 for 循环结构在计算机底层的原理和构造。首先,我们编写一个简单的 for 循环:为了方便观察,我们用十六进制来表示循环变量,编译后,我们用 OllyDBG 载入,我们可以看到对应的反汇编代码。禁用优化的情景这里

switch 语句的反汇编浅析

switch 的简单情景(case 不超过 3 项)首先,我们分析一下 switch 语句的一种简单情景,我们可以用 C 写出如下如下代码。编译后用 OllyDBG 载入,它将显示出如下的反汇编代码。首先,我们可以看到 ESP 减少了 8,除了定义变量 a 外,编译器还分配了一个临时变量(这里暂且叫

通过分析反汇编还原 C 语言 if…else 结构

让我们从反汇编的角度去分析并还原 C 语言的 if … else 结构,首先我们不看源代码,我们用 OllyDBG 载入 PE 文件,定位到 main 函数领空,如下图所示。在图示中,我已经做好了关键的注释,经过一步一步地分析,不难还原出以下的 C 语言代码段。

__cdecl、__stdcall、__fastcall 与 __pascal 浅析

call 指令与 retn 指令首先我们得了解 CALL 和 RETN 指令的作用,才能更好地理解调用规则,这也是先决条件。实际上,CALL 指令就是先将下一条指令的 EIP 压栈,然后 JMP 跳转到对应的函数的首地址,当执行完函数体后,通过 RETN 指令从堆栈中弹出 EIP,程序就可以继续执行
Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×