Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
testlib.c#include <stdio.h>
void libtest()
{
puts("hello world");
}test.cextern void libtest(void);
int main (int argc, const char * argv[])
{
libtest();
return 0;
}
libwithhook.c#include <stdio.h>
typedef struct interpose_s {
void *new_func;
void *old_func;
} interpose_t;
int new_puts(const char *);
static const interpose_t interposers[] \
__attribute__ ((section("__DATA, __interpose"))) = {
{ (void *)new_puts, (void *)puts },
};
int new_puts(const char *str)
{
return puts("hello from hook!");
}
Перенаправление функций в Mach-O библиотеках