一个远程注入的例子(让本机的所有程序弹出一个sylar对话框)
来源:互联网 发布:淘宝号刷了单会跑吗 编辑:程序博客网 时间:2024/06/06 00:05
1#include"stdafx.h"
2#include"windows.h"
3#include"stdio.h"
4#include<Tlhelp32.h.>
5 /*熊健
62009.12.23 武汉
7perfectxiong@gmail.com
8/////////////////////////////////////////////*/
9 // ========== 定义一个代码结构,本例为一个对话框============
10struct MyData
11{
12char sz[64];// 对话框显示内容
13DWORD dwMessageBox;// 对话框的地址
14};
15
16// ========== 远程线程的函数 ==============================
17DWORD __stdcall RMTFunc(MyData *pData)
18{
19typedefint(__stdcall*MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);
20MMessageBox MsgBox= (MMessageBox)pData->dwMessageBox;
21MsgBox(NULL, pData->sz, NULL, MB_OK);
22return0;
23}
24
25int inject(DWORD dwProcessId)
26{
27HANDLE hProcess= OpenProcess(
28PROCESS_ALL_ACCESS,
29FALSE,
30dwProcessId);
31
32// ========= 代码结构 ================================================
33MyData data;
34ZeroMemory(&data,sizeof (MyData));
35strcat(data.sz,"sylar");
36HINSTANCE hUser= LoadLibrary("user32.dll");
37if (! hUser)
38{
39printf("Can not load library.\n");
40return0;
41}
42data.dwMessageBox= (DWORD)GetProcAddress(hUser,"MessageBoxA");
43FreeLibrary(hUser);
44if (! data.dwMessageBox)
45return0;
46
47// ======= 分配空间 ===================================================
48void*pRemoteThread
49= VirtualAllocEx(hProcess, 0,
501024*4, MEM_COMMIT|MEM_RESERVE,
51PAGE_EXECUTE_READWRITE);
52if (! pRemoteThread)
53return0;
54if (! WriteProcessMemory(hProcess, pRemoteThread, &RMTFunc,1024*4,0))
55return0;
56
57MyData*pData
58= (MyData*)VirtualAllocEx(hProcess,0,
59sizeof (MyData), MEM_COMMIT,
60PAGE_READWRITE);
61if (!pData)
62return0;
63
64if (! WriteProcessMemory(hProcess, pData, &data,sizeof (MyData),0))
65return0;
66
67// =========== 创建远程线程 ===========================================
68HANDLE hThread
69= CreateRemoteThread(hProcess, 0,
700, (LPTHREAD_START_ROUTINE)pRemoteThread,
71pData,0,0);
72if (! hThread)
73{
74printf("远程线程创建失败");
75return0;
76}
77CloseHandle(hThread);
78VirtualFreeEx(hProcess, pRemoteThread,1024*3, MEM_RELEASE);
79VirtualFreeEx(hProcess, pData,sizeof (MyData), MEM_RELEASE);
80CloseHandle(hProcess);
81printf("Hello World!\n");
82return1;
83}
84
85int main(int argc,char* argv[])
86{
87// ===== 获得需要创建REMOTETHREAD的进程句柄 ===============================
88//or
89HANDLE hSnapshot= NULL;
90hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
91PROCESSENTRY32 pe;
92pe.dwSize=sizeof(PROCESSENTRY32);
93Process32First(hSnapshot,&pe);
94do
95{
96//if(stricmp(pe.szExeFile,"NOTEPAD.EXE")==0)
97// {
98inject(pe.th32ProcessID);
99// break;
100// }
101}
102while(Process32Next(hSnapshot,&pe)==TRUE);
103CloseHandle (hSnapshot);
104/*
105HWND hWnd = FindWindow("notepad", NULL); // 以NOTEPAD为例
106DWORD dwProcessId;
107::GetWindowThreadProcessId(hWnd, &dwProcessId);
108inject(dwProcessId);
109*/
110return0;
111}
112
113
2#include"windows.h"
3#include"stdio.h"
4#include<Tlhelp32.h.>
5 /*熊健
62009.12.23 武汉
7perfectxiong@gmail.com
8/////////////////////////////////////////////*/
9 // ========== 定义一个代码结构,本例为一个对话框============
10struct MyData
11{
12char sz[64];// 对话框显示内容
13DWORD dwMessageBox;// 对话框的地址
14};
15
16// ========== 远程线程的函数 ==============================
17DWORD __stdcall RMTFunc(MyData *pData)
18{
19typedefint(__stdcall*MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);
20MMessageBox MsgBox= (MMessageBox)pData->dwMessageBox;
21MsgBox(NULL, pData->sz, NULL, MB_OK);
22return0;
23}
24
25int inject(DWORD dwProcessId)
26{
27HANDLE hProcess= OpenProcess(
28PROCESS_ALL_ACCESS,
29FALSE,
30dwProcessId);
31
32// ========= 代码结构 ================================================
33MyData data;
34ZeroMemory(&data,sizeof (MyData));
35strcat(data.sz,"sylar");
36HINSTANCE hUser= LoadLibrary("user32.dll");
37if (! hUser)
38{
39printf("Can not load library.\n");
40return0;
41}
42data.dwMessageBox= (DWORD)GetProcAddress(hUser,"MessageBoxA");
43FreeLibrary(hUser);
44if (! data.dwMessageBox)
45return0;
46
47// ======= 分配空间 ===================================================
48void*pRemoteThread
49= VirtualAllocEx(hProcess, 0,
501024*4, MEM_COMMIT|MEM_RESERVE,
51PAGE_EXECUTE_READWRITE);
52if (! pRemoteThread)
53return0;
54if (! WriteProcessMemory(hProcess, pRemoteThread, &RMTFunc,1024*4,0))
55return0;
56
57MyData*pData
58= (MyData*)VirtualAllocEx(hProcess,0,
59sizeof (MyData), MEM_COMMIT,
60PAGE_READWRITE);
61if (!pData)
62return0;
63
64if (! WriteProcessMemory(hProcess, pData, &data,sizeof (MyData),0))
65return0;
66
67// =========== 创建远程线程 ===========================================
68HANDLE hThread
69= CreateRemoteThread(hProcess, 0,
700, (LPTHREAD_START_ROUTINE)pRemoteThread,
71pData,0,0);
72if (! hThread)
73{
74printf("远程线程创建失败");
75return0;
76}
77CloseHandle(hThread);
78VirtualFreeEx(hProcess, pRemoteThread,1024*3, MEM_RELEASE);
79VirtualFreeEx(hProcess, pData,sizeof (MyData), MEM_RELEASE);
80CloseHandle(hProcess);
81printf("Hello World!\n");
82return1;
83}
84
85int main(int argc,char* argv[])
86{
87// ===== 获得需要创建REMOTETHREAD的进程句柄 ===============================
88//or
89HANDLE hSnapshot= NULL;
90hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
91PROCESSENTRY32 pe;
92pe.dwSize=sizeof(PROCESSENTRY32);
93Process32First(hSnapshot,&pe);
94do
95{
96//if(stricmp(pe.szExeFile,"NOTEPAD.EXE")==0)
97// {
98inject(pe.th32ProcessID);
99// break;
100// }
101}
102while(Process32Next(hSnapshot,&pe)==TRUE);
103CloseHandle (hSnapshot);
104/*
105HWND hWnd = FindWindow("notepad", NULL); // 以NOTEPAD为例
106DWORD dwProcessId;
107::GetWindowThreadProcessId(hWnd, &dwProcessId);
108inject(dwProcessId);
109*/
110return0;
111}
112
113
0 0
- 一个远程注入的例子(让本机的所有程序弹出一个sylar对话框)
- 远程线程注入dll的一个例子,netcat.dll
- MFC基于对话框的程序添加菜单&点击菜单弹出一个新的对话框
- MFC基于对话框的程序添加菜单&点击菜单弹出一个新的对话框
- 一个能让所有人为之奋斗终身的程序
- 基于对话框的程序,在主窗口显示后再弹出一个对话框
- 请教一个关于弹出对话框的问题.
- 当点击登录的时候,弹出一个对话框,让你写用户名和密码
- 一个完整的DLL远程注入函数
- 一个完整的DLL远程注入函数
- 一个远程线程注入的类
- 一个防SQL注入的小例子
- 一个关于SQL注入的简单例子
- 一个弹出模态窗口的例子
- 一个弹出模态窗口的例子
- VirtualEarth的一个例子程序
- 一个关闭程序的例子
- 让程序崩溃时不弹出对话框的方法
- String、StringBuilder和StringBuffer的区别
- 326.[LeetCode]Power Of Three
- J2SE(十三)Java之数组
- 用js写的学生成绩管理系统
- 采用BigInteger进行的权限设计
- 一个远程注入的例子(让本机的所有程序弹出一个sylar对话框)
- IIS Request.ApplicationPath的问题
- 网站板块布局黄金视线分布法
- 递归算法--汉诺塔问题
- 四、runtime之Method Swizzling(四)
- Git如何回滚版本
- 【慕课笔记】5-2 四种XML解析方式大PK—四种解析方式解析速度分析
- Spring 声明式事务使用
- 字符串遇到指定的字符停止输入