首页
社区
课程
招聘
[讨论]线程注入的奇怪问题
发表于: 2010-11-26 08:15 3914

[讨论]线程注入的奇怪问题

2010-11-26 08:15
3914
我在某论坛看到的,其中的现象一直未解
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.

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没有发现winexec('calc',1);这行有什么特殊的
倒是觉得和GetWindowThreadProcessId(FindWindow('ieframe',nil),h);有一定关系。
2010-11-30 23:33
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不好意思我这个地方误写了,
GetWindowThreadProcessId(FindWindow('ieframe',nil),h);
因为同时拿IE做对比,所以如此,此处原来应该是
GetWindowThreadProcessId(FindWindow(nil,'计算器'),h);
对我贴代码时的一点粗疏表示致歉!
2010-12-6 06:24
0
游客
登录 | 注册 方可回帖
返回
//