File: shellcode.h

package info (click to toggle)
paxtest 1%3A0.9.15-2
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 560 kB
  • sloc: ansic: 1,440; makefile: 564; sh: 70
file content (36 lines) | stat: -rw-r--r-- 1,027 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef _SHELLCODE_H_
#define _SHELLCODE_H_

#include "paxtest.h"

#define MAX_SHELLCODE_LEN 12

#if defined(__powerpc__)
#define SHELLCODE_RETURN "\x4e\x80\x00\x20"
#elif defined(__sparc__) && !defined(__arch64__)
#define SHELLCODE_RETURN "\x81\xc7\xe0\x08\x81\xe8\x00\x00"
#elif defined(__sparc__) && defined(__arch64__)
#define SHELLCODE_RETURN "\x9d\xe3\xbf\x40\x81\xcf\xe0\x08\x01\x00\x00\x00"
#elif defined(__arm__) && !defined(__arch64__)
#define SHELLCODE_RETURN "\x1e\xff\x2f\xe1"
#else
#define SHELLCODE_RETURN "\xc3"
#endif
#define SIZE_OF_SHELLCODE_RETURN (sizeof(SHELLCODE_RETURN) - 1)

#if defined(__powerpc64__)
static inline void copy_shellcode(void *dst)
{
	/* 12 bytes total */
	unsigned long dstaddr = (unsigned long)dst + sizeof(dstaddr);
	forced_memcpy(dst, &dstaddr, sizeof(dstaddr));
	forced_memcpy(dst + sizeof(dstaddr), SHELLCODE_RETURN, SIZE_OF_SHELLCODE_RETURN);
}
#else
static inline void copy_shellcode(void *dst)
{
	forced_memcpy(dst, SHELLCODE_RETURN, SIZE_OF_SHELLCODE_RETURN);
}
#endif

#endif