После установки хук-процедуры на NtOpenFile при открытии любого файла вылазиет MessageBox в котором написанно что параметр задан неверно... как решить эту проблему? Собсна хук процедура в которой просто происходит вызов оригинальной функции: Код (Text): NtOpenFileHook: PUSHFD PUSHA LEA EDI, [ESP+SIZEOF PUSHA_STRUCT+4+4] ; EDI -> argument list PUSH [EDI + 014h] PUSH [EDI + 010h] PUSH [EDI + 00Ch] PUSH [EDI + 008h] PUSH [EDI + 004h] PUSH [EDI + 000h] PUSH @F JMP [pOld_NtOpenFile] @@: POPA POPFD RET 4 * 6
почему замудрено? наоборот удобно... edi сразу указывает на параметры, че хошь с ними и делай... и никуда они не теряются... я думаю eax не стоит затирать popa'ом...
Andrew_Kuz Лучше использовать фрейм стека в своем коде! Вот его суть: Код (Text): ;начало процедуры: PUSH EBP ;стандартный пролог MOV EBP,ESP ;теперь делай что хочешь, кроме изменения EBP!!! ;а первый параметр - [EBP+8], второй - [EBP+12] и т.д. .... .... MOV ESP,EBP POP EBP RET XX ;(или JMP OldHandler)