//往别的进程插入线程(高级木马常用方法)
//这样的话,就可以隐藏进程, 如果病毒传染方式叫静态传染,那么这种方式就叫动态传染,普通病毒是传染可执行程序文件,而这个则是传染进程。
/*tinsert.cpp 往目标进程插入线程的例子
author: littlebob
all rights reserved.
date: 2002.10.22
*/
//tinsert.cpp
//此程序往目标进程插入显示一个对话框的线程
//然后退出, 你可以发现, 该程序退出后线程依然存在, 只有目标进程结束后才线程结束
//请在windows 2000 下测试该程序
#include
#include
#include
void usage(void)
{
cerr<<"Usage:tinsert ";
}
long __stdcall thread_func(LPVOID p)
{
typedef BOOL (*MESSAGEBOX)(DWORD, LPCTSTR, LPCTSTR, DWORD);
char a[] = {'H', 'e', 'l', 'l', 'o', ',', 'W', 'o', 'r', 'l', 'd', '!', '\n', 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'r', 'e', 'm', 'o', 't', 'e', ' ', 't', 'h', 'r', 'e', 'a', 'd', ' ', 'c', 'r', 'e', 'a', 't', 'e', 'd', ' ', 'b', 'y', ' ', 't', 'i', 'n', 's', 'e', 'r', 't', 0};
char b[]={'c', 'r', 'e', 'a', 't', 'e', 'd', ' ', 'b', 'y', ' ', 't', 'i', 'n', 's', 'e', 'r', 't', 0};
MESSAGEBOX mbox=(MESSAGEBOX)0x77E1776C; //0x77E1776C是windows 2000下user32.dll 中MessageBoxA的函数入口.
mbox(NULL, a, b, MB_OK);
return 0;
}
int main(int argc, char* argv[])
{
cerr<<"Thread insertor.\n";
if (argc != 2)
{
usage();
exit(-1);
}
ULONG processid=0;
sscanf(argv[1], "%u", &processid);
if (processid == 0)
{
usage();
exit(-1);
}
ULONG threadid=0;
HANDLE hprocess=0,hthread=0;
hprocess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, processid);
if (hprocess == NULL)
{
cerr<<"OpenProcess failed.\n";
exit(-1);
}
LPVOID d_proc_addr=NULL;
d_proc_addr = VirtualAllocEx(hprocess, NULL, 0x1000, MEM_COMMIT, 4L);
if (d_proc_addr == NULL)
{
cerr<<"VirtualAllocEx failed."< |