delphi编程序如何注入其它程序?
答案:3 悬赏:60 手机版
解决时间 2021-04-18 14:22
- 提问者网友:wodetian
- 2021-04-17 15:39
delphi编程序如何注入其它程序?
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-04-17 16:33
function GetLocalIpAddress : String;
var
WSADataVar: WSAData;
HostName : array[0..255] of char;
HostEntVar: PHostEnt;
InetAddr : in_addr;
begin
Result := '';
if WSAStartup(MakeWord(2, 0), WSADataVar) = 0 then
begin
if GetHostName(HostName, 256) = 0 then
Result := HostName;
HostEntVar := GetHostbyName(HostName);
if not(HostEntVar = nil) then
begin
InetAddr.S_un_b.s_b1 := HostEntVar.h_addr_list^[0];
InetAddr.S_un_b.s_b2 := HostEntVar.h_addr_list^[1];
InetAddr.S_un_b.s_b3 := HostEntVar.h_addr_list^[2];
InetAddr.S_un_b.s_b4 := HostEntVar.h_addr_list^[3];
Result := Inet_NtoA(InetAddr);
end;
WSACleanUp;
end;
end;
var
WSADataVar: WSAData;
HostName : array[0..255] of char;
HostEntVar: PHostEnt;
InetAddr : in_addr;
begin
Result := '';
if WSAStartup(MakeWord(2, 0), WSADataVar) = 0 then
begin
if GetHostName(HostName, 256) = 0 then
Result := HostName;
HostEntVar := GetHostbyName(HostName);
if not(HostEntVar = nil) then
begin
InetAddr.S_un_b.s_b1 := HostEntVar.h_addr_list^[0];
InetAddr.S_un_b.s_b2 := HostEntVar.h_addr_list^[1];
InetAddr.S_un_b.s_b3 := HostEntVar.h_addr_list^[2];
InetAddr.S_un_b.s_b4 := HostEntVar.h_addr_list^[3];
Result := Inet_NtoA(InetAddr);
end;
WSACleanUp;
end;
end;
全部回答
- 1楼网友:零点过十分
- 2021-04-17 18:47
uses 引用其他单元
窗体的话,是可以使用继承的。
窗体的话,是可以使用继承的。
- 2楼网友:毛毛
- 2021-04-17 17:52
dll注入( 钩子注入 , 远程线程注入)
shellcode直接注入 (远程线程注入)
还有通过explorer的ShellExecuteHooks注入
QueueUserAPC 注入
方法多的一塌糊涂,我也不好一一列举
给你个简单的远程线程注入dll的代码
procedure InjectDllToProcess(hProcess:DWORD;lpDllName:PCHar);
var
dwWritten : DWORD;
dwThread : DWORD;
dwTid: DWORD;
pArg : Pointer;
begin
pArg := VirtualAllocEx(hProcess, nil, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pArg, Pointer(lpDllName), 4096, dwWritten);
dwThread := CreateRemoteThread(hProcess, nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), pArg, 0, dwTid);
WaitForSingleObject(dwThread, INFINITE);
VirtualFreeEx(hProcess, pArg, 0, MEM_RELEASE);
CloseHandle(dwThread);
CloseHandle(hProcess);
end;
这些方法都是病毒的伎俩,研究还好
不然写的程序大多要被杀软kill掉
shellcode直接注入 (远程线程注入)
还有通过explorer的ShellExecuteHooks注入
QueueUserAPC 注入
方法多的一塌糊涂,我也不好一一列举
给你个简单的远程线程注入dll的代码
procedure InjectDllToProcess(hProcess:DWORD;lpDllName:PCHar);
var
dwWritten : DWORD;
dwThread : DWORD;
dwTid: DWORD;
pArg : Pointer;
begin
pArg := VirtualAllocEx(hProcess, nil, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pArg, Pointer(lpDllName), 4096, dwWritten);
dwThread := CreateRemoteThread(hProcess, nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'), pArg, 0, dwTid);
WaitForSingleObject(dwThread, INFINITE);
VirtualFreeEx(hProcess, pArg, 0, MEM_RELEASE);
CloseHandle(dwThread);
CloseHandle(hProcess);
end;
这些方法都是病毒的伎俩,研究还好
不然写的程序大多要被杀软kill掉
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯