- 博客(8)
- 收藏
- 关注
原创 Delphi对象创建过程
编译器创建vmt,从vmt中vmtSelfPtr表项中读取vmt地址,将vmt的地址送到临时寄存器中,然后分配对象内存,并初始化,将对象的前4个字节初始化为vmt地址,对于类方法,将self编译为vmt地址,然后根据vmt表项计算.vmt表项(system单元){ Virtual method table entries } vmtSelfPtr = -88; vmtInt
2008-11-09 11:36:00 412
翻译 编写多线程应用程序
协调线程 1. 共享内存的其他技术当使用VCL对象时,使用主线程执行你的代码。使用主线程确保对象不会间接访问那些同时由其他线程的VCL对象访问的内存。 如果全局内存不需要被多线程访问,考虑使用线程局部变量代替全局变量。通过使用线程局部变量,你的线程不需要等待或锁定任何其他线程。 2.避免同时访问 要避免当访问全局对象或者变量时与其他线程间的冲突,需要使用阻塞其他线程的执行知道你的线程代
2008-10-02 08:44:00 432
原创 var 和class var用法
字段类似于变量。字段可以是任何类型,也可以是类类型。字段可以像变量一样声明。例如type TNumber = class var Int: Integer; end; var是个可选的关键字,如果省略,则变量的声明必须在声明属性和方法之前。字段是静态的,也就是说字段的类型的是在编译时确定。用Class var声明的变量可以不通过
2008-09-30 09:21:00 2018
翻译 注册内存漏洞
This section describes how to register and unregister expected memory leaks. When you allocate memory that you dont expect to free, you can register it with the Memory Manager. The Memory
2008-09-28 21:05:00 191
翻译 类类型
接下来讨论的类类型内部层次结构只适用于Win32平台。在Win32平台,一个类类型值被存储为32位指针指向类的一个实例,这个实例就叫做对象。一个对象的内部数据格式类似于记录。对象的字段被存储按照声明排列成相邻变量的序列。字段总是对齐的,符合未压缩的记录类型。从父类继承的任何字段被存储在子类定义的新字段之前。每个对象开始的4字节字段是一个指针指向类的虚拟方法表(VMT)。每个类有一张
2008-09-27 18:26:00 250
翻译 动态数组类型
在Win32平台,动态数组变量占4字节内存,包含一个指向动态分配数组的指针。当变量为空(未初始化)或者指向一个长度为0的数组时,指针值为nil且没有与变量相关的动态内存。的对于非空的数组,变量指向一个动态分配的内存块,包含额外的32位长度标示和32位引用计数。下表显示了动态数组内存块的层次结构。OffsetContents-832-bit reference-count -432-bit le
2008-09-27 17:47:00 198
转载 两个EXE文件共享内存数据块
发送数据端程序代码文件:unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;const WM_DATA = WM_USER + 1024;type PShareMem = ^TShareMem; TShareMem = rec
2008-09-21 08:47:00 514
转载 OllyDBG 入门系列(一)-认识OllyDBG
OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址
2008-09-20 20:21:00 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人