저는 테스트 용으로 DLL Injection을 사용하는 프로젝트를하고 있습니다. 모든 것이 잘 작동한다면 아마도이 기술을 사용할 것입니다. 그러나 지금까지는 문제가 발생했습니다. 아마도 DLL 프로젝트를 처음 코딩하기 때문일 것입니다. 빨리 이해할 수 있도록 일시 중단 된 explorer.exe 프로세스를 만들고 일시 중지 된 탐색기 안에이 DLL을 주입합니다. 모든 것이 작동했지만 DLL에 타이머를 넣으려고 할 때 문제가 발생했습니다. DLL을 코드 봐 :DLL과 TTimer가 작동하지 않습니다.
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 주조'는 메시지가 나타납니다 ...이 후, 타이머와 매 5를 만들어야합니다 몇 초 만에 'Timer Running'이라는 메시지가 나옵니다. 그러나이 메시지를받지 못했고, 모든 것을 시도했지만 아무것도 작동하지 않았습니다 ... 어떤 도움이 필요합니까? 그게 완전히 엉망 이냐, 뭐야?
힌트 :'EntryPoint'에'DLL_THREAD_DETACH'로 사례를 넣으십시오. –
당신이 "모든 것"에 포함시키는 것을 열거하십시오. –
모든 것이 : 일시 중지 된 explorer.exe 프로세스를 작성하고 DLL을 삽입하여 DLL을 삽입하십시오. 삽입 됨 .... – user1526124