You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Compiling an arm64e macOS app on an M1 Mac Mini in macOS 11.6. When a hooked function gets called, the app crashes with EXC_BAD_ACCESS. The following code when compiled as arm64e will crash on the second (hooked) call to malloc:
#include <stdio.h>
#include <stdlib.h>
#include "fishhook.h"
void * (*originalMalloc)(size_t);
static void * overrideMalloc(size_t size) {
void * result = originalMalloc(size);
printf("calling overrideMalloc!\n");
return result;
}
int main(int argc, const char * argv[]) {
void *data;
printf("Calling malloc before\n");
data = malloc(10);
free(data);
int result = rebind_symbols((struct rebinding[2]){{"malloc", overrideMalloc, (void *)&originalMalloc}}, 1);
if (result != 0) {
printf("rebind_symbols failed with result: %d ... cannot proceed", result);
return 0;
}
printf("Calling malloc after\n");
data = malloc(10);
free(data);
return 0;
}
Note that in order to run arm64e code on macOS, you must disable system integrity protection and set the following boot parameter: sudo nvram boot-args=-arm64e_preview_abi
The text was updated successfully, but these errors were encountered:
You will need to resign the function pointer that fishhook is writing using the asia key discriminated with the address that fishhook is writing to. An incomplete example:
Compiling an arm64e macOS app on an M1 Mac Mini in macOS 11.6. When a hooked function gets called, the app crashes with EXC_BAD_ACCESS. The following code when compiled as arm64e will crash on the second (hooked) call to
malloc
:Note that in order to run arm64e code on macOS, you must disable system integrity protection and set the following boot parameter:
sudo nvram boot-args=-arm64e_preview_abi
The text was updated successfully, but these errors were encountered: