Я использовал Detours (http://research.microsoft.com/en-us/projects/detours/) под для Windows, но теперь я с помощью Linux Ubuntu и я хочу Объезд/Hook функции. Я хочу объединить функцию с моей, после этого я хочу вызвать исходную функцию. (Я могу подключить функцию, но после этого я не могу использовать оригинал).функция объезд под Linux Ubuntu
Итак, я решил написать обход функции. Прежде всего, я скопировал функцию в другое место, но я не смог ее выполнить. Можете ли вы мне помочь, почему я не смог ее выполнить? У меня возникла ошибка сегментации.
Мой код:
int (* h_Com_Printf)(const char *fmt, ...);
...
void *memBuffer;
int size = 0x4F; // size of the function
memBuffer = (void*)malloc(size);
memcpy(memBuffer, (void*)0x08060DEA, size); // copy the function
h_Com_Printf = (int (*)(const char *fmt, ...))memBuffer;
h_Com_Printf("print function: %d\n", 1); // segmentation fault HERE
Спасибо!
Com_Printf в "исполняемый файл" (IDA Pro): Изображение: http://kepfeltoltes.hu/150818/ida_printf_www.kepfeltoltes.hu_.png
Linux работает в VirtualBox. (Может быть, проблема?)
я нашел [это] (http://aimbots.net/threads/14469-Detours-for-Linux-amp-Windows) часть шаблонного благя, * возможно * быть полезными для вас , – DevSolar
Это не сработало :(Повторная попытка Segmetation ... – Adam
Что заставляет вас думать, что память с явно произвольным адресом 0x08060dea содержит инструкции для функции? Не говорю, что это не так - но это определенно не [ MCVE] (http://stackoverflow.com/help/mcve) как есть ... – twalberg