能力值:
( LV9,RANK:610 )
|
-
-
2 楼
DllMain中开完线程马上返回,千万别在这里死循环
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
不循环不行啊..不然就达不到目的了
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
你要非在DllMain中循环不返回那肯定假死啊,要循环开线程循环去
|
能力值:
( LV5,RANK:60 )
|
-
-
5 楼
我当然知道
是开线程循环的..
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
怎么感觉看雪的朋友们没以前热情了呢
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
开线程就没事呀 我就是这么做的
|
能力值:
( LV9,RANK:610 )
|
-
-
8 楼
我只是看看…哪里不对?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
sleep一下行不行呢?
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
要用到线程! 你要在这个被注入的程序内创建一条线程!
|
能力值:
( LV9,RANK:250 )
|
-
-
11 楼
最好代码再贴多一点。建议启动线程后,先让其suspend,过会Ⅱ在恢复其运行。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
线程循环的时候 Application.processmessage一下看 行不
|
能力值:
( LV5,RANK:60 )
|
-
-
13 楼
今天上班过来一看,很多朋友回复了,很开心....谢谢大家的关心
sleep测试过,还是很卡
Application.ProcessMessages要用到FORM单元才行.会让DLL变得很大的
不知道有什么可以替代的办法
如果可以的话哪位大大给我一份DLL注入(要循环直到目标进程退出)的DELPHI代码
我的邮箱是277406378@QQ.COM
先谢过了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
hthread2:=CreateThread(nil,0,@writereg,nil,0,@ThreadID2);
好象CreateThread最后一个参数是DWORD *吧
|
能力值:
( LV5,RANK:60 )
|
-
-
15 楼
经过各位的提点,问题已经得到解决.现把关键代码贴一下
procedure injfun(dwReason:DWord); //DLL注入主函数
var
hthread2:Thandle;//定义一个句柄
threadid2:DWord;
begin
//writereg为循环写注册表函数
hthread2:=CreateThread(nil,0,@writereg,nil,0,ThreadID2);
MessageBox(0,'create thread success!','lzwx',MB_OK);
ExitThread(0); //这里必须加上,不然会卡死的
end;
希望朋友们解决问题以后都能贴上解决的办法,不然讨论就没意义了
另外还有一个不明白的地方,请各位朋友指教:
1. 在DLL主注入函数中不加ExitThread(0)的时候注入,会在注入成功的时候弹出三次创建线程成功的提示,然后退出注入目标进程的时候会再弹出一次,好像这个注入函数一直在循环一样,请问这是怎么回事?
|
能力值:
( LV9,RANK:610 )
|
-
-
16 楼
注入时的三次分别是加载DLL时一次,线程创建时一次,线程退出时一次;退出注入时一次是DLL卸载时那一次。你必须进行判断
|
能力值:
( LV5,RANK:60 )
|
-
-
17 楼
有种恍然大悟的感觉!
但是我加了exitthread(0)为什么就没有了呢?
|
能力值:
( LV9,RANK:610 )
|
-
-
18 楼
你应该在DllMain中判断一下dwReason再做相应动作,否则创建线程那部分代码会多次运行,我想这不是你想要的结果
|
能力值:
( LV9,RANK:610 )
|
-
-
19 楼
还有,你那里不应该使用ExitThread,return TRUE就可以了。再加上对dwReason的判断你再试一下
|
能力值:
( LV5,RANK:60 )
|
-
-
20 楼
谢谢..你是用VC的吧
|
能力值:
( LV9,RANK:610 )
|
-
-
21 楼
我是用VC的,语言表达不一样,步骤是一样的
|
|
|