1 #include <libcgc.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 /* CGC DECREE binary which puts symbolic data in a lot of places, but only a few are executable */
6
7 /* this region shouldn't be executable */
8 char global_data[100];
9
print_banner()10 static void print_banner()
11 {
12 printf("Shellcode placement tester\n");
13 }
14
main()15 int main()
16 {
17 char data[0x100];
18 size_t count;
19 void *addr;
20
21 receive(0, data, 272, &count);
22
23 allocate(0x4000, 0, &addr);
24 printf("Non-executable region at %x\n", addr);
25
26 strcpy((char *) addr, data);
27
28 /* this region should be executable */
29 allocate(0x1000, 1, &addr);
30 printf("Executable region at %x\n", addr);
31
32 strcpy((char *) addr, data);
33
34 /* the bss should not be executable */
35 printf("Non-executable global buffer at %x\n", global_data);
36 strcpy(global_data, data);
37
38 return 0;
39 }
40