-
-
[讨论]线程注入的奇怪问题
-
发表于:
2010-11-26 08:15
3915
-
我在某论坛看到的,其中的现象一直未解procedure TForm1.Button1Click(Sender: TObject);
var
h:longword; //放句柄,中间顺便暂放下PID
tmp:longword;//这个专门来占格式收集
DllName:pchar;
Mysize:longword;//放字符串长度
Parameter:pointer;//放那个参数的指针(位置在目标进程内) }
begin
DLLName:='Testdll.dll';
Mysize:=strlen(Dllname)+1;
winexec('calc',1);
GetWindowThreadProcessId(FindWindow('ieframe',nil),h);
h:=OpenProcess(PROCESS_ALL_ACCESS, False, h);
Parameter:= VirtualAllocEx(h, nil, Mysize, MEM_COMMIT, PAGE_READWRITE);
ShowMessage(IntToHex(Cardinal(parameter),8));
WriteProcessMemory(h, Parameter, Pointer(DllName), MySize, tmp);
CreateRemoteThread(h,nil, 0, GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'),
Parameter, 0 , tmp);
end;
正常情况下会弹出两个对话框,其中的winexec('calc',1);注销这句先手动打开计算器则怎么也不会弹出对话框
“notepad.exe”也是一样
--------------------------------
测试用的dll:
library TestDll;
uses
Windows;
{$R *.res}
procedure func_a;
begin
MessageBox(0,'I love delphi','Function form Tset DLL',0);
end;
procedure func_b(MSG:pchar);
begin
MessageBox(0,MSG,'Function form Tset DLL',0);
end;
begin
func_a;
func_b('I like it too!');
end.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课