Skip to content

Commit 9aaf93f

Browse files
committed
fix fix for older osx versions
1 parent 82fde6b commit 9aaf93f

File tree

1 file changed

+11
-7
lines changed
  • external/source/shellcode/osx/stager

1 file changed

+11
-7
lines changed

external/source/shellcode/osx/stager/main.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <mach-o/dyld.h>
77

88
#include <sys/types.h>
9+
#include <sys/sysctl.h>
910

1011
typedef NSObjectFileImageReturnCode (*NSCreateObjectFileImageFromMemory_ptr)(void *address, unsigned long size, NSObjectFileImage *objectFileImage);
1112
typedef NSModule (*NSLinkModule_ptr)(NSObjectFileImage objectFileImage, const char* moduleName, unsigned long options);
@@ -222,12 +223,12 @@ int string_compare(const char* s1, const char* s2)
222223

223224
int detect_sierra()
224225
{
225-
uint64_t sc_sysctlbyname = 0x2000112;
226-
char* name = "kern.osrelease";
226+
uint64_t sc_sysctl = 0x20000ca;
227+
int name[] = { CTL_KERN, KERN_OSRELEASE };
228+
uint64_t nameptr = (uint64_t)&name;
229+
uint64_t namelen = sizeof(name)/sizeof(name[0]);
227230
char osrelease[32];
228231
size_t size = sizeof(osrelease);
229-
uint64_t nameptr = (uint64_t)name;
230-
uint64_t namelen = (uint64_t)sizeof(name);
231232
uint64_t valptr = (uint64_t)osrelease;
232233
uint64_t valsizeptr = (uint64_t)&size;
233234
uint64_t ret = 0;
@@ -243,12 +244,15 @@ int detect_sierra()
243244
"syscall;\n"
244245
"mov %%rax, %0;\n"
245246
: "=g"(ret)
246-
: "g"(sc_sysctlbyname), "g"(nameptr), "g"(namelen), "g"(valptr), "g"(valsizeptr)
247-
: "rax", "rdi", "rdx" );
247+
: "g"(sc_sysctl), "g"(nameptr), "g"(namelen), "g"(valptr), "g"(valsizeptr)
248+
: );
248249

249250
// osrelease is 16.x.x on Sierra
250251
if (ret == 0 && size > 2) {
251-
if (osrelease[0] == '1' && osrelease[1] <= '6') {
252+
if (osrelease[0] == '1' && osrelease[1] < '6') {
253+
return 0;
254+
}
255+
if (osrelease[0] <= '9' && osrelease[1] == '.') {
252256
return 0;
253257
}
254258
}

0 commit comments

Comments
 (0)