Ring3下远程注入DLL干掉IceSword
来源:互联网 发布:淘宝拍卖房产注意事项 编辑:程序博客网 时间:2024/05/17 22:11
IceSword在很多朋友中被视为国产软件中的骄傲。IceSword的确为手工杀毒带来了不少便捷,想必不少牧马者也十分痛恨吧。
去年……我偶尔发现了利用SetWindowLong 能准确找到IceSword窗口并且PostMessage关闭IS,此文发表到了黑防上,当时的方法的确很烂,:hugd: 今天的这个方法相对来说比较好了。
IceSword Hook 了关于远程DLL注入的API,使得在正常情况下无法启动远程线程注入DLL。旁门左道,歪门邪道,一样注入它!!!
:huge:
相信没有人会让IceSword开机自动运行……我们的木马倒是开机就运行的,所以我们的首要工作是Hook API CreateProcess(这个不在今天讨论范围,而且实现不难),然后注入DLL,接下来就是等待信号,DLL在目标进程内ExitProcess(0); 完美结束进程!:'(
///////////////////////
今天我们在CreateProcess上做手脚(不然我叫你Hook它干嘛?),这个是CreatePrcess的函数原型:
dwCreationFlags这个就是我们做手脚的地方。有个参数是CREATE_SUSPENDED,MSDN的解释是:
就是说,进程一创建,主线程就被挂起了,直到使用ResumeThread来恢复。
妙吧~哈哈,在这个时候IS什么也没得做,就被挂起了 直到我们注入DLL完毕,再叫它运行,它以是我们池中之物,做什么坏事就随便了。这个也是本程序的精华所在。
这个方法是被很多木马使用在傀儡进程身上的,这样启动程序占用资源少,不容易被发觉。以前我曾经试过用FindWindow去找灰鸽子所注入的傀儡IE,却总是返回个0,这就是使用CREATE_SUSPENDED启动的原因,程序还未加载完就被挂起了。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面是部分代码:
主程序: DLL工程相对简单 就不列出了。
注入以后的图片:
IceSword中已含有我们的DLL,模块列表中已经现实,IceSword能正常工作。
当确定关闭IceSword的时候 IceSword提示错误,确定后退出
///////////////////////////////////////////////////////////////////
今天做了一下修改,方便大家测试。把DLL和EXE放到IceSword目录下运行就OK了,退出要结束IceSword就用运行记事本……(这种通知方法……)
去年……我偶尔发现了利用SetWindowLong 能准确找到IceSword窗口并且PostMessage关闭IS,此文发表到了黑防上,当时的方法的确很烂,:hugd: 今天的这个方法相对来说比较好了。
IceSword Hook 了关于远程DLL注入的API,使得在正常情况下无法启动远程线程注入DLL。旁门左道,歪门邪道,一样注入它!!!
:huge:
相信没有人会让IceSword开机自动运行……我们的木马倒是开机就运行的,所以我们的首要工作是Hook API CreateProcess(这个不在今天讨论范围,而且实现不难),然后注入DLL,接下来就是等待信号,DLL在目标进程内ExitProcess(0); 完美结束进程!:'(
///////////////////////
今天我们在CreateProcess上做手脚(不然我叫你Hook它干嘛?),这个是CreatePrcess的函数原型:
引用:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
引用:
The primary thread of the new process is created in a suspended state, and does not run until the ResumeThread function is called.
妙吧~哈哈,在这个时候IS什么也没得做,就被挂起了 直到我们注入DLL完毕,再叫它运行,它以是我们池中之物,做什么坏事就随便了。这个也是本程序的精华所在。
这个方法是被很多木马使用在傀儡进程身上的,这样启动程序占用资源少,不容易被发觉。以前我曾经试过用FindWindow去找灰鸽子所注入的傀儡IE,却总是返回个0,这就是使用CREATE_SUSPENDED启动的原因,程序还未加载完就被挂起了。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面是部分代码:
主程序:
引用:
char DllName[MAX_PATH] = "KillDll.dll"; //我们注入的DLL
::GetFullPathName("KillDll.dll", MAX_PATH, DllName, NULL); //得到DLL的全路径,远程线程LoadLibrary 时候必须是完整路径
////////////Create Process//////////////
char LoadExe[MAX_PATH] = "D://Program Files//IceSword//IceSword.exe"; //我家IS的路径
STARTUPINFO si = {sizeof(si)};
ROCESS_INFORMATION pi;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = TRUE;
::CreateProcess(NULL,
LoadExe,
NULL,NULL,
FALSE,
CREATE_SUSPENDED, //暂停模式启动程序
NULL,
NULL,
&si,
&pi);
//////////////////////省略注入代码 具体参加源文件/////////////////////////
///////////////////////注入成功后 用ResumeThread恢复主线程 使程序运行/////////////////////////////////
::ResumeThread(pi.hThread); //恢复主线程
注入以后的图片:
IceSword中已含有我们的DLL,模块列表中已经现实,IceSword能正常工作。
当确定关闭IceSword的时候 IceSword提示错误,确定后退出
///////////////////////////////////////////////////////////////////
今天做了一下修改,方便大家测试。把DLL和EXE放到IceSword目录下运行就OK了,退出要结束IceSword就用运行记事本……(这种通知方法……)
- Ring3下远程注入DLL干掉IceSword
- ring3下的注入dll
- ring3层远程注入DLL方法
- Ring3下Dll注入方法整理汇总
- Ring3下Dll注入方法整理汇总
- Ring3下Dll注入方法整理汇总
- Ring3下的DLL注入工具
- Windows平台Ring3下DLL注入(HOOK)方法整理汇总
- 远程注入代码,一些过时的ring3技术(ASM、VC++、Delphi) (非Dll注入)
- windows下 远程DLL注入
- ring3层面函数HOOK从头来之(一)——无dll远程进程代码注入
- Ring3下的DLL注入工具 x86&x64(NtCreateThreadEx + LdrLoadDll方式实现,可以注入系统进程)
- (开源) Ring3下的DLL注入工具 x86&x64(NtCreateThreadEx + LdrLoadDll方式实现,可以注入系统进程)
- C++:远程注入DLL
- zz - DLL远程注入
- 学习:DLL远程注入
- 远程dll注入 C#
- DLL远程注入实践
- 得到函数 RVA
- JS做成像程序中的类一样
- 在进程空间中插入另一个进程的代码细节化
- 如何防止SQL注入
- 关于条件表达式
- Ring3下远程注入DLL干掉IceSword
- Linux 环境下文件写入.img
- 使用C来扩展python功能
- 另一个从内存中加载并运行EXE
- P2P技术的概念(即点对点)
- 从内存中加载并运行exe (c)
- 自制无限网卡增益器,最远可达30公里
- 在VS05里直接建数据库为什么有时对表增、删、改会没有作用?
- loadexe (delphi)