|
|
| Посл.отвђт | Сообщен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 кто-нить проверил. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.071 |