· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› Загрузка в дебагеры

<< . 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Июл 30, 2003 17:42:34

Four-F
ЗЫ: nmtrans.dll у мя патченый, методом Kayaker'а
А что это за патч такой? Где про него прочитать можно?


Дата: Июл 30, 2003 18:02:01

Ядрена матрена, кто-нибудь в раздел софта смотрит???? Там все патчи лежат! А где почитать? Уже нигде! У меня только распечатка осталась. Они всю БД потеряли. Как обычно...


Дата: Июл 30, 2003 18:48:30

volodya

Да человек просто забыл или не знал, что тот патч, которым патчат
nmtrans.dll, Keyaker'ом написан...


Дата: Июл 30, 2003 19:00:25

Патч для DriverStudio 2.7 by Kayaker
Есть у DriverStudio одна, ну очень неприятная для человека понимающего, проблема. Ну никак не хочет loader32 останавливаться на WinMain. Решений здесь несколько. Самое "головоморочечное" - это влепить CC вместо какого-нибудь байта прямо в OEP (ессно, байт предварительно нужно записать), потом в Soft-Ice активировать i3here (i3here on), восстановить байт после "всплытия", подправить EIP и дальше. Но это муторно. Лучше используйте эту утилиту. Она этот баг поправит. Ну, бывает, конечно, что и флаги секций меняются, но это уже совсем другая песня. Теперь прилагаются исходники и комментарии автора. Мои благодарности Asterix.


Что здесь написано?


Дата: Июл 30, 2003 19:23:47

Ядрена матрена, кто-нибудь в раздел софта смотрит????
Для этого надо было как минимум знать, что это софт, а не статья с описанием...
а вообще спасибо за разъяснение.


Дата: Июл 30, 2003 19:26:17

ОК, я включу описание Kayaker'a во вторую либо третью часть статьи.


Дата: Июл 30, 2003 20:59:40

Дадно. Если уж быть точным, то размер секции может быть и не передан NtCreateSection, но в этом случае MmCreateSection получит его из объекта "файл", который описывает FileHandle - последний параметр функции ZwCreateSection.

Т.е. возможны два варианта:
1. SectionSize  = 0
   FileHandle  != NULL
В этом случае размер секции будет взят используя хэндл файла. Это когда секция является образом именованного файла на диске.
2. SectionSize != 0
   FileHandle   = NULL
В этом случае размер секции обязателен, т.к. файла не существует. Это когда выделяется память, например вызовом VirtualAlloc. На диске секция поддерживается файлом подкачки.

У Неббета, кстати, написано:
"SectionSize
Optionally points to a variable that specifies the size, in bytes, of the section. If
FileHandle is zero, the size must be specified; otherwise, it can be defaulted from the
size of the file referred to by FileHandle."


Дата: Июл 30, 2003 22:11:44

Тогда надо признать, что FileHandle будет лишь указателем на начало структуры. Только какой?


Дата: Июл 30, 2003 23:07:59 · Поправил: Four-F

FileHandle это всеголишь индекс в таблице хэндлов. Ссылку на FILE_OBJECT ядро получает так:
:0043B6A9 loc_43B6A9:
:0043B6A9       push ebx                                       ; NULL
:0043B6AA       lea eax, [ebp+pobjFile]                        ; PFILE_OBJECT
:0043B6B0       push eax
:0043B6B1       push [ebp+AccessMode]
:0043B6B7       push _IoFileObjectType
:0043B6BD       push ecx                                        ; DesiredAccess
:0043B6BE       push [ebp+FileHandle]
:0043B6C1       call _ObReferenceObjectByHandle@24
:0043B6C6       cmp eax, ebx                                    ; if (NT_SUCCESS(eax))
:0043B6C8       jl loc_43B113
:0043B6CE       mov ecx, [ebp+pobjFile]                         ; PFILE_OBJECT
:0043B6D4       cmp [ecx+FILE_OBJECT.SectionObjectPointer], ebx ; ? == NULL
:0043B6D7       jnz loc_43AF71
:0043B6DD       call @ObfDereferenceObject@4

FILE_OBJECT STRUCT                             ; sizeof = 070h
. . .
        SectionObjectPointer    PVOID   ?      ; 0014h PTR SECTION_OBJECT_POINTERS
. . .
FILE_OBJECT ENDS


SECTION_OBJECT_POINTERS STRUCT                  ; sizeof = 0Ch
        DataSectionObject       PVOID   ?       ; 0000h
        SharedCacheMap          PVOID   ?       ; 0004h
        ImageSectionObject      PVOID   ?       ; 0008h
SECTION_OBJECT_POINTERS ENDS


Дата: Июл 30, 2003 23:22:51 · Поправил: volodya

Оки-доки, тогда надо копать функцию MmCreateSection. Чем и займусь как домой приду.

НО! Логическая неувязка. Если размер секции может быть опциональным, а хендл - всего лишь integer, то как тогда функция может узнать, что и как ей делать?


Дата: Июл 31, 2003 02:08:11

Ну это как раз просто. SectionSize передаваемый в NtCreateSection это указатель на LARGE_INTEGER. Если он (указатель) равен нулю, то NtCreateSection работает с FileHandle. А хэндл не может быть нулем. Поэтому если FileHandle равен нулю NtCreateSection работает с SectionSize.


Дата: Авг 3, 2003 16:15:45

Кажется я допёр, отчего Sice не может трапануться.
Дело всё в секции под именем .text :)
Ну уж не ожидал от Sice'а :)


Дата: Авг 5, 2003 10:45:33

Чего то меня сомнения берут, почему с моим стабом в XP,2000 не запускаются программы.
Вы не могли бы, пожалуйта, протестировать запустится ли следующая программа на XP,2000?

_2059091814__MODRM16.ZIP


Дата: Авг 5, 2003 11:00:36

The Svin

XP 2600 - OK


Дата: Авг 5, 2003 11:02:36

Спасибо.
Ещё бы на 2000 кто-нить проверил.

<< . 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.071