
2个回答
2015-06-26
展开全部
function show:integer;stdcall; //声明函数
external 'sos.dll';
procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
hProcess_N: THandle;
ThreadAdd, ParamAdd: Pointer;
hThread: THandle;
ThreadID: DWORD;
lpNumberOfBytes:DWORD;
begin
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
WriteProcessMemory(hProcess_N, ThreadAdd, Func, 4096, lpNumberOfBytes);
ParamAdd := VirtualAllocEx(hProcess_N, nil, ParamSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess_N, ParamAdd, Param, ParamSize, lpNumberOfBytes);
hThread := CreateRemoteThread(hProcess_N, nil, 0, ThreadAdd, ParamAdd, 0, lpNumberOfBytes);
ResumeThread(hThread);
WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess_N, ThreadAdd, 4096, MEM_RELEASE);
VirtualFreeEx(hProcess_N, ParamAdd, ParamSize, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess_N);
end;
上面的注入函数
procedure TForm1.Button2Click(Sender: TObject);
var
inhwnd:Hwnd;
ThreadID: DWORD;
hProcess_N: THandle;
begin
inhwnd:= FindWindow(nil,'shadow');
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
injectfunc(InHWND,@show,nil,0);
end;
这个是调用函数,请大大门看看. injectfunc(InHWND,@show,nil,0);这个句。我第3个和第4个参数不太明白是什么意思.因为我自己写个EXE推测市的时候,那个注入函数并不需要传参的,哪位有这方面的例子最好拿出来了.谢谢
在打包生成exe的时候,native executable builder,在第三步,选择数据库,在选择 include required classes and known resource这一项。在后面的选项中手动指向你的主类。试一下。原来我也遇到过这样的问题,按照上面的设置后可以正常使用了。
external 'sos.dll';
procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
hProcess_N: THandle;
ThreadAdd, ParamAdd: Pointer;
hThread: THandle;
ThreadID: DWORD;
lpNumberOfBytes:DWORD;
begin
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
WriteProcessMemory(hProcess_N, ThreadAdd, Func, 4096, lpNumberOfBytes);
ParamAdd := VirtualAllocEx(hProcess_N, nil, ParamSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess_N, ParamAdd, Param, ParamSize, lpNumberOfBytes);
hThread := CreateRemoteThread(hProcess_N, nil, 0, ThreadAdd, ParamAdd, 0, lpNumberOfBytes);
ResumeThread(hThread);
WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess_N, ThreadAdd, 4096, MEM_RELEASE);
VirtualFreeEx(hProcess_N, ParamAdd, ParamSize, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess_N);
end;
上面的注入函数
procedure TForm1.Button2Click(Sender: TObject);
var
inhwnd:Hwnd;
ThreadID: DWORD;
hProcess_N: THandle;
begin
inhwnd:= FindWindow(nil,'shadow');
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
injectfunc(InHWND,@show,nil,0);
end;
这个是调用函数,请大大门看看. injectfunc(InHWND,@show,nil,0);这个句。我第3个和第4个参数不太明白是什么意思.因为我自己写个EXE推测市的时候,那个注入函数并不需要传参的,哪位有这方面的例子最好拿出来了.谢谢
在打包生成exe的时候,native executable builder,在第三步,选择数据库,在选择 include required classes and known resource这一项。在后面的选项中手动指向你的主类。试一下。原来我也遇到过这样的问题,按照上面的设置后可以正常使用了。
展开全部
function show:integer;stdcall; //声明函数
external 'sos.dll';
procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
hProcess_N: THandle;
ThreadAdd, ParamAdd: Pointer;
hThread: THandle;
ThreadID: DWORD;
lpNumberOfBytes:DWORD;
begin
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
WriteProcessMemory(hProcess_N, ThreadAdd, Func, 4096, lpNumberOfBytes);
ParamAdd := VirtualAllocEx(hProcess_N, nil, ParamSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess_N, ParamAdd, Param, ParamSize, lpNumberOfBytes);
hThread := CreateRemoteThread(hProcess_N, nil, 0, ThreadAdd, ParamAdd, 0, lpNumberOfBytes);
ResumeThread(hThread);
WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess_N, ThreadAdd, 4096, MEM_RELEASE);
VirtualFreeEx(hProcess_N, ParamAdd, ParamSize, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess_N);
end;
上面的注入函数
procedure TForm1.Button2Click(Sender: TObject);
var
inhwnd:Hwnd;
ThreadID: DWORD;
hProcess_N: THandle;
begin
inhwnd:= FindWindow(nil,'shadow');
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
injectfunc(InHWND,@show,nil,0);
end;
这个是调用函数,请大大门看看. injectfunc(InHWND,@show,nil,0);这个句。我第3个和第4个参数不太明白是什么意思.因为我自己写个EXE推测市的时候,那个注入函数并不需要传参的,哪位有这方面的例子最好拿出来了.谢谢
在打包生成exe的时候,native executable builder,在第三步,选择数据库,在选择 include required classes and known resource这一项。在后面的选项中手动指向你的主类。试一下。原来我也遇到过这样的问题,按照上面的设置后可以正常使用了。
希望对你有点帮助!
external 'sos.dll';
procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
hProcess_N: THandle;
ThreadAdd, ParamAdd: Pointer;
hThread: THandle;
ThreadID: DWORD;
lpNumberOfBytes:DWORD;
begin
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
WriteProcessMemory(hProcess_N, ThreadAdd, Func, 4096, lpNumberOfBytes);
ParamAdd := VirtualAllocEx(hProcess_N, nil, ParamSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess_N, ParamAdd, Param, ParamSize, lpNumberOfBytes);
hThread := CreateRemoteThread(hProcess_N, nil, 0, ThreadAdd, ParamAdd, 0, lpNumberOfBytes);
ResumeThread(hThread);
WaitForSingleObject(hThread, INFINITE);
VirtualFreeEx(hProcess_N, ThreadAdd, 4096, MEM_RELEASE);
VirtualFreeEx(hProcess_N, ParamAdd, ParamSize, MEM_RELEASE);
CloseHandle(hThread);
CloseHandle(hProcess_N);
end;
上面的注入函数
procedure TForm1.Button2Click(Sender: TObject);
var
inhwnd:Hwnd;
ThreadID: DWORD;
hProcess_N: THandle;
begin
inhwnd:= FindWindow(nil,'shadow');
GetWindowThreadProcessId(InHWND, @ThreadID);
hProcess_N := OpenProcess(PROCESS_ALL_ACCESS, False, ThreadID);
injectfunc(InHWND,@show,nil,0);
end;
这个是调用函数,请大大门看看. injectfunc(InHWND,@show,nil,0);这个句。我第3个和第4个参数不太明白是什么意思.因为我自己写个EXE推测市的时候,那个注入函数并不需要传参的,哪位有这方面的例子最好拿出来了.谢谢
在打包生成exe的时候,native executable builder,在第三步,选择数据库,在选择 include required classes and known resource这一项。在后面的选项中手动指向你的主类。试一下。原来我也遇到过这样的问题,按照上面的设置后可以正常使用了。
希望对你有点帮助!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询