델파이로 dll injection 하는 예
procedure TForm1.Button1Click(Sender: TObject);
var
aHandle, hProcess , ThreadHandle : THandle;
PID : Integer;
DllName : String;
DllNamePos : Pointer;
BytesWritten , TheadID : DWORD;
begin
DllName := ExtractFilePath(ParamStr(0)) + 'Inject.dll';
PID := 0;
aHandle := FindWindow('notepad', Nil);
if aHandle <> 0 then
GetWindowThreadProcessId(aHandle, @PID);
if PID <> 0 then
begin
hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if (hProcess = 0) then exit;
DllNamePos := VirtualAllocEx(hProcess, Nil, 1000, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, DllNamePos, Pointer(DllName), Length(DllName), BytesWritten);
ThreadHandle := CreateRemoteThread(hProcess, nil, 0, GetProcAddress(LoadLibrary('kernel32.dll'), 'LoadLibraryA'), DllNamePos, 0, TheadID);
WaitForSingleObject(ThreadHandle ,INFINITE);
VirtualFreeEx(hProcess ,DllNamePos ,0 ,MEM_RELEASE);
CloseHandle(ThreadHandle);
CloseHandle(hProcess);
end;
end;
반응형
'IT-개발,DB' 카테고리의 다른 글
[개발] 제로보드 스팸광고게시물,덧글 자동등록 방지 (0) | 2010.11.04 |
---|---|
[개발] 비스타 및 윈도우즈 7에서 Visual C++ 6.0 설치하기 (0) | 2010.11.02 |
[개발] VC++ 컴파일에러 StrStrIA 외부 참조 에러 (0) | 2010.11.02 |
[개발] VC++ 컴파일 빌드 시 MessageBoxA 외부 참조 에러 (1) | 2010.11.02 |
[개발] GridView에서 DataFormatString 적용 안되는 문제.. (0) | 2010.11.01 |
댓글