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