Буду очень благодарен, если кто-нибудь ткнет в хауту или что-нибудь похожее, чтобы посмотреть, как можно сделать то же, что и Код (Text): .model tiny .code org 100h begin: jmp install new_60h: ; do smth iret install: mov ax, 2560h lea dx, new_60h int 21h lea dx, install int 27h end begin для DOS. И где можно посмотреть список прерываний под *nix - кроме 80h? Вообще, то что я вижу про демонов - в Linux Daemon HowTo, например, с циклом while(1){} как-то не очень похоже на те резидентные DOS-программы... Заранее спасибо.
Список сисколов: /usr/include/asm/unistd.h Не знаю как с асм, а с перехватом сисколов всё просто. На opennet полно документации.
C системными вызовами (которые по int $0x80) я разобрался, вопрос в том, могу ли я создать свое юзерное прерывание (как в DOSe - 60h)? А в идеале, когда я захочу переопределить прерывание от клавиатуры (для кейлоггера, например) - это делается через системные вызовы, а не через прерывания? Роюсь в опеннете...
Могу сказать точно, что через сисколы это делается и мы это делали. Смотри руткит itx от нашей HellKnightsCrew. Там всё более чем подробно расписанно.
ну через системные вызовы можно сделать конечно но имхо переписывание прерываний дает нечто гораздо большее А чтобы переписать прерывание надо знать адрес таблицы прерываний и изменить его что в досе делает 25 функция, а как это делать в никсах я хз пока сща сам разбираюсь ...
Какая собственно разница, какая ОСь установлена, для перехвата прерываний? Никсы работают в протектед-моде, соответственно открываем Intel Data-sheet и курим прерывания в защищенном режиме. Для перехвата надо установить свой interrupt gate и код здесь будет что для линуха, что для виндов по сути один и тот же
_ir4_Y_ да элементарно Код (Text): idt_replace_handler: ; EAX contains number of interrupt [0, 256), EDX contains address of new handler push ebx sidt [esp - 6] mov ebx, [esp - 4] lea ebx, [ebx + eax * 8] pushfd cli mov word [ebx], dx shr edx, 16 mov word [ebx + 6], dx popfd pop ebx ret различным для Linux и Windows будет только загрузка сего кода в ядро