我正在做一个使用 DLL 注入的项目,只是为了测试目的。如果一切正常,也许我会使用这种技术。但到目前为止,我只遇到了问题,可能是因为我是第一次编写 DLL 项目。为了快速理解,我正在创建一个暂停的 explorer.exe 进程并将这个 DLL 注入到暂停的资源管理器中。一切正常,但是当我试图在 DLL 中放置一个计时器时出现了问题。查看 DLL 代码:
uses
SysUtils,
Classes,
Windows,
ExtCtrls,
Dialogs;
{$R *.res}
type
TMyTimer = Class(TTimer)
public
procedure OnMyTimer(Sender: TObject);
end;
var
MyTimer: TMyTimer;
procedure EntryPoint(Reason: integer);
begin
if Reason = DLL_PROCESS_ATTACH then
begin
MessageBox(0, 'DLL Injected', 'DLL Injected', 0);
MyTimer := TMyTimer.Create(nil);
MyTimer.Interval := 5000;
MyTimer.OnTimer := MyTimer.OnMyTimer;
MyTimer.Enabled:= true;
end
else
if Reason = DLL_PROCESS_DETACH then
begin
MessageBox(0, 'DLL De-Injected', 'DLL De-Injected', 0);
end;
end;
procedure TMyTimer.OnMyTimer(Sender: TObject);
begin
MessageBox(0, 'Timer Running', 'Timer Running', 0);
end;
begin
DLLProc:= @EntryPoint;
EntryPoint(DLL_PROCESS_ATTACH);
end.
好的,所以当我在暂停的 explorer.exe 进程中注入 DLL 时,我收到消息“DLL Injected”...之后,它应该创建计时器,并且每 5 秒给我一条“计时器正在运行”的消息。 ..但是我没有收到此消息,尝试了一切,但没有任何效果...有帮助吗?这完全是一团糟还是什么?