2011-06-10 4 views
1

В настоящее время я работаю над подключением вызовов ntdll.dll через dll injection. Сначала я создаю поток в существующем процессе через CreateRemoteThread(), затем загружаю свою DLL через LoadLibrary и, наконец, подключаю вызовы на PROCESS_ATTACH.Проблема с подключением вызовов ntdll.dll

Injection отлично работает, но затем я хочу зарегистрировать все запросы к реестру и файловой системе. И проблема в том, что она работает неправильно.

Я решил опубликовать код через PasteBin, потому что кусок довольно большой. Вот ссылка: http://pastebin.com/39r4Me6B

Я пытаюсь подключить ZwOpenKey, а затем записать ключевое содержимое, а затем запустить функцию «истина» указателем. Функция NOpenKey выполняется, но процесс останавливается без ошибок.

У кого-нибудь есть проблемы?

ответ

2

Если вы используете OllyDbg, ZwOpenKey начинается с 5 байтов MOV EAX, 77.

Вы можете переписать эти байты как так JMP _myZwOpenKey то оттуда вы можете делать все, что со значениями в стеке, восстановить все регистры, то сделать JMP 7C90D5B5 которое адрес ZwOpenKey + 5 байт.

CPU Disasm 
Address Hex dump   Command     Comments 
7C90D5AF  90   NOP 
7C90D5B0 /$ B8 77000000 MOV EAX,77    ; ntdll.ZwOpenKey(guessed rg1,Arg2,Arg3) 
7C90D5B5 |. BA 0003FE7F MOV EDX,7FFE0300 
7C90D5BA |. FF12   CALL DWORD PTR DS:[EDX] 
7C90D5BC \. C2 0C00  RETN 0C 

Обычно я делаю это в сборке таким образом, что мне не нужно много возиться с типом и всем этим. Надеюсь это поможет.

Смежные вопросы