Я пытаюсь создать драйвер для goldfish - ядро linux (эмулятор Android), который перехватывает системные вызовы и считает их.Как я могу определить адрес обработчика syscall?
код ниже перехватывает системный вызов и записывает трассировки для Windows, мне нужно сделать то же самое с ядром linux на cortex-a8
#define IA32_SYSENTER_EIP 0x176
VOID __declspec(naked) NewKiFastCallEntry()
{
__asm
{
pushad
pushfd
mov ecx, 0x23
push 0x30
pop fs
mov ds, cx
mov es, cx
push eax
call LogSystemCall
popfd
popad
jmp [OriginalKiFastCallEntry]
}
}
VOID HookSysenter()
{
DbgPrint("-Sysenter- Hooking sysenter...\n");
__asm
{
mov ecx, IA32_SYSENTER_EIP
xor edx, edx
rdmsr
mov OriginalKiFastCallEntry, eax
mov eax, NewKiFastCallEntry
wrmsr
}
DbgPrint("-Sysenter- Original KiFastCallEntry address is 0x%08X\n", OriginalKiFastCallEntry);
DbgPrint("-Sysenter- New KiFastCallEntry address is 0x%08X\n", NewKiFastCallEntry);
DbgPrint("-Sysenter- Finished hooking sysenter\n");
}