delphi 注入指定进程


本文整理自网络,侵删。

 {delphi 注入指定进程。 }
function InjectToSpecificProcess(AProcess: string): BOOLEAN;
var
Module, NewModule: Pointer;
Size, BytesWritten, TID, PID: LongWord;
ProcessHandle: LongWord;
hRemoteThread: Cardinal;
begin
Module := Pointer(GetModuleHandle(0)); //这句偶尔会出错。获得自身模块句柄
Size := PImageOptionalHeader(Pointer(Integer(Module) +
PImageDosHeader(Module)._lfanew + SizeOf(DWORD) +
SizeOf(TImageFileHeader))).SizeOfImage;

//GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @PID);
//ProcessHandle为需要注入的进程 PID
PID := GetProcessIDFromExename(AProcess);
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID); //打开进程

VirtualFreeEx(ProcessHandle, Module, 0, MEM_RELEASE);
NewModule := VirtualAllocEx(ProcessHandle, Module, Size, MEM_COMMIT or
MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if NewModule <> nil then
begin
WriteProcessMemory(ProcessHandle, NewModule, Module, Size,
BytesWritten);
//远程打开进程,传递注入函数入口地址@CodeToRunAfterInjection
hRemoteThread := CreateRemoteThread(ProcessHandle, nil, 0,
@CodeToRunAfterInjection,
Module, 0, TID);
if BOOLEAN(hRemoteThread) then Result := True else Result := False;
end else
Result := False;
CloseHandle(ProcessHandle); //关闭线程句柄
end;

相关阅读 >>

Delphi real控件 rm格式的播放器

Delphi xe中使用tchart绘制平滑曲线

Delphi Delphi tparallel cleanup needed用法

Delphi 获得memo、richedit的光标位置

Delphi 如何让程序在按了 android 的 back 键后不关闭当前 from 或者不 app 退出

Delphi simple resource api replacement

Delphi xe strpas 遇到的问题

Delphi几个进制相关的代码(hextoint、hextoasc)

Delphi 获取cpu monitor使用率

Delphi sysutils.lastdelimiter - 判断一个字符串在另一个字符串中最后出现的位置

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...