【发布时间】:2018-02-28 08:58:12
【问题描述】:
我已将asm INT 3 end; 放在主程序的第一行。
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
asm INT 3 end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
然而,SysInit._InitExe 调用被放置在它之前。 请参考下图。 从 uses 子句中删除 VCL 单元不是一种选择。
【问题讨论】:
-
简单的答案是没有破解编译的可执行文件,您无法在单元初始化之前运行您的代码。你想达到什么目的?
-
您是否尝试过将
Int 3放入新单元的Initialization部分,然后将该单元作为第一个单元添加到.Dpr 文件中?那行得通... -
@DavidHeffernan 说,我的程序由管理程序运行,它启动的线程有点“损坏”。在执行 VCL 代码之前,我需要在 TEB 中修复一些问题。
-
如何将中断放入DLL中,然后让EXE静态链接到DLL?这样,DLL 在 EXE 初始化之前就被初始化了。
-
图片有误。您标记为 VCL init 的是调用
SysInit._InitExe然后调用System._StartExe调用System.InitUnits最终调用模块中正在使用的单元的所有初始化部分,按它们在使用中出现的顺序(参见 docwiki.embarcadero.com/RADStudio/Tokyo/en/… )。首先放入 dpr 用途的单元将首先执行其初始化部分(如果它本身没有任何其他单元)
标签: delphi assembly compilation delphi-7 vcl