gpt4 book ai didi

forms - 创建一个 Delphi Dll 并使用 DllMain 加载它

转载 作者:行者123 更新时间:2023-12-04 08:05:40 24 4
gpt4 key购买 nike

friend 们
我有一个小问题。我正在尝试创建一个 在 RAD Studio 中带有表格的 delphi Dll , 但我不知道 如何使用 DllMain 加载它.我想在 中注入(inject)这个 Dll 之后运行时的第三方进程.
我用没有问题的表单创建了 Dll 项目,但是我找不到与“如何使用 DllMain 加载它”相关的任何好东西,或者至少我发现的教程/东西对我没有帮助(或者我只是哑的)。
有人能帮我吗?给我一些提示或我可以学习的网站/视频?
我真的很感谢你们的时间! =)

最佳答案

您可以使用程序集将基于 ebp 的堆栈注入(inject)到一些变量中。这是一个例子:

library Project1;

uses
System.SysUtils,
Windows,
System.Classes;

var
hInstDLL: THandle;
fdwReason: DWORD;
lpReserved: DWORD;
begin
asm
push eax; // Save the current eax
mov eax, [ebp+$8] // Put into eax the first argument of the current function (DLLMain)
mov [hInstDLL], eax; // Put into hInstDLL this argument
mov eax, [ebp+$c] // Load into eax the second argument
mov [fdwReason], eax; // Save to fdwReason
mov eax, [ebp+$10] // Put into eax the last argument
mov [lpReserved], eax; // Put into lpReserved (unnecessery)
pop eax; // Restore the original eax value
end;

if fdwReason = 1 {DLL_PROCESS_ATTACH} then
begin
// Do your stuff;
end;
end.

关于forms - 创建一个 Delphi Dll 并使用 DllMain 加载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66233151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com