能力值:
( LV5,RANK:60 )
|
-
-
2 楼
晕,刚用WinHex查看了一下
写进去了……
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
CreateRemoteThread执行后,返回的句柄是0x744
说明执行应该正常吧
但到后面:
WaitForSingleObject那儿就停那儿了……
再单步就单步不过去了~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
貌似这个WaitForSingleObject 是等你那个线程结束时才返回的吧...
|
能力值:
( LV12,RANK:240 )
|
-
-
5 楼
dllName 全路径?
你可以在 IE中下断 LoadLibrary 看看哪里问题
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
恩
dllName是全路经名
WaitForSingleObject是等待线程结束的,不过线程应该会很快结束的,因为我往Wscript.exe里面注入的时候,就很轻易的注入进去了~。
但现在实际上,线程没有结束,因为我将INFINITE改为3000之后,3秒之后就会将IE启动起来,但是,IE里面没有我的DLL
在IE中下断??
应该怎么操作?
这时候用OD也没法附加到IE上~,提示无法附加到进程
难道用SoftICE???
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
WaitForSingleObject 不返回说明的你线程肯定没有结束,检查你的DllMain函数是不是有问题
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
应该没有问题的
我的另一个程序,用了相同的方法,也用了同一个DLL
往Wscript.exe(脚本宿主)中注入,可以正常注入~
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
楼主,最近写木马发了不少财吧?小心为妙
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
晕,呵呵,做毕业设计呢,我可不会写马
|
能力值:
( LV5,RANK:60 )
|
-
-
11 楼
对了,还是有点区别的
我往Wscript.exe里面注入的时候,因为是在我的程序里面创建的Wscript.exe进程,所以创建进程的时候使用了CREATE_SUSPEND标志,以暂停进程,然后往里面注入就可以。
但是,用相同的方法,我启动IE进程的话,IE就不会出现~
运行之后没有任务反应。
所以我用了调试API,用了DEBUG_PROCESS标志,然后当进程刚启动之时,产生异常,转到我的程序,我在程序中,将入口点的代码设为0xcc,然后再运行程序,捕获断点异常,捕获到之后,就说明到了入口点,这样保证程序能进行完必要的初始化。从而再将DLL注入。然后我再将Eip-1,继续运行。
但是,就是这个时候,DLL注入不进去,这时候查看IE进程,有两个线程在执行,一个是我的线程,一个是主线程,我的线程好像就根本没法结束…………
|
能力值:
( LV10,RANK:170 )
|
-
-
12 楼
有可能是编译器知道你想写马。
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
超级智能编译器啊,可以从根本上解决马的问题啊,你这可是原创啊,把这个思想卖给编译器厂商,呵呵,发达了以后别忘了我,可是我提醒你这个有商业价值的。正所谓苟富贵,勿相忘
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
是不是注入之前IE进程的LoadLibraryA已经被HOOK了?
|
能力值:
( LV5,RANK:60 )
|
-
-
15 楼
具体的原因我还不太清楚
不过昨天晚上突然想到的:
当用Debug API的时候,如果父进程得到某个异常的发生,这时候,父进程得到通知后,子进程里面的全程应该全部是停止的,此时即使你用CreateRemoteThread,创建了线程也不能运行。
但是,今天早上我又改了一下,即:
得到CREATE_PROCESS_DEBUG_EVENT后,进行一些处理
然后,调用ContinueDebugEvent函数,继续执行被调试进程
调用完ConTinueDebugEvent函数后,立刻暂停主线程,即:
::SuspendThread(pi.hThread);
然后将DLL注入,此时用CreateRemoteThread后,该线程应该可以在被调试进程中执行,当注入完之后,我再ResumeThread
但事实证明,这样做还是不行……
单步的时候发现,还是CreateRemoteThread后,WaitForSingleObject函数一直无法返回……
貌视LoadLibrary函数还是执行不成功……
代码:
if (dbgEvent.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT)
{
//继续执行进程
::ContinueDebugEvent(dbgEvent.dwProcessId, dbgEvent.dwThreadId, DBG_CONTINUE);
//将主线程停止,等待DLL注入成功之后再恢复
::SuspendThread(pi.hThread);
//将目标DLL注入到子进程中
CInjectDll injDll;
injDll.InjectDll(pi.hProcess, myDllName);
::ResumeThread(pi.hThread);
continue;
}
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
楼猪:参考下这段代码,或许对你有帮助.
http://bbs.pediy.com/showthread.php?t=63344
|
能力值:
( LV5,RANK:60 )
|
-
-
17 楼
刚刚知道:
CREATE_PROCESS_DEBUG_EVENT发生时,DLL一般还未加载……
|
能力值:
( LV5,RANK:60 )
|
-
-
18 楼
哇哈哈!!!
注入DLL的问题终于解决了!!!!
用了Tls CallBack,激动…………
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
两种解决方法:
一将参数改为dll的全路径名;
二将dll放在环境变量path路径中
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
不要调 WaitForSingleObject ,直接返回
|
|
|