|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 28, 2003 22:17:08 · Поправил: dragon Эта штука экспортируется из ntoskrnl. Подскажите, что она содержит, а то в DDK нет, да и вообще нигде нет. Это встречается в драйвере, код примерно такой: mov esi, offset KeServiceDescriptorTable add esi, 1000h ;т.е. типа в esi теперь и есть адрес этой самой KeServiceDescriptorTable mov ecx, <какое то число> mov eax, 0FFDFF120h ;константа далее так: _text:000172D9 cmp [esi], eax _text:000172DB jz loc_0_174F1 _text:000172E1 dec esi _text:000172E2 dec ecx _text:000172E3 jnz short loc_0_172D9 понятно, что ищется вхожление константы 0FFDFF120, только не понятно, что в это таблице находится и в каком формате. |
|
|
Дата: Окт 28, 2003 22:46:33 · Поправил: Four-F Ох... В ддк её действительно нет, а насчет нигде ты зря. В книге Шрайбера достаточно подробно описана. Если пороешься хорошенько в сети, найдешь как минимум 2-3 статьи где она упоминается. В общем KeServiceDescriptorTable это указатель на SERVICE_DESCRIPTOR_TABLE. SERVICE_DESCRIPTOR_TABLE STRUCT ; sizeof = 40h
ntoskrnl SYSTEM_SERVICE_TABLE <> ; ntoskrnl.exe (native api)
win32k SYSTEM_SERVICE_TABLE <> ; win32k.sys (gdi/user)
iis SYSTEM_SERVICE_TABLE <> ; Internet Information Services
Table4 SYSTEM_SERVICE_TABLE <> ; reserved
SERVICE_DESCRIPTOR_TABLE ENDS
SYSTEM_SERVICE_TABLE STRUCT ; sizeof = 10h
pServiceTable PVOID ? ; array of entry points
pCounterTable PDWORD ? ; array of usage counters
dwServiceLimit DWORD ? ; number of table entries
pArgumentTable PBYTE ? ; array of byte counts
SYSTEM_SERVICE_TABLE ENDS
pServiceTable - указатель на массив с точками входа сервисов ядра. dwServiceLimit - кол-во этих сервисов. pArgumentTable - указатель на массив с кол-вом параметров каждого сервиса. По адресу 0FFDFF120h мапится структура KPRCB. Она охриненного размера, вот начало: KPRCB STRUCT
; Major and minor version numbers of the PCR.
MinorVersion WORD ?
MajorVersion WORD ?
; Start of the architecturally defined section of the PRCB. This section
; may be directly addressed by vendor/platform specific HAL code and will
; not change from version to version of NT.
CurrentThread PVOID ? ; 04h PTR KTHREAD
NextThread PVOID ? ; 08h PTR KTHREAD
IdleThread PVOID ? ; 0Ch PTR KTHREAD
Number CHAR ? ; 10h
Reserved CHAR ? ; 11h
BuildType WORD ? ; 12h
SetMember KAFFINITY ? ; 14h
; End of the architecturally defined section of the PRCB. This section
; may be directly addressed by vendor/platform specific HAL code and will
; not change from version to version of NT.
; To be continued...
KPRCB ENDS
PKPRCB typedef PTR KPRCB
Насчет кода, который ты привел. Ты, похоже, что-то важное опустил, т.к. код очень странный. Откуда это? Дай полный кусок. |
|
|
Дата: Окт 28, 2003 22:52:28 Four-F Если пороешься хорошенько в сети, найдешь как минимум 2-3 статьи где она упоминается а ты редиска :( |
|
|
Дата: Окт 28, 2003 23:16:59 Four-F Это кусок кода из последней версии XtremeProtector, из его драйвера. Может чтобы распаковать всё это и не надо, но мне интересно не просто распаковать, а понять, как он устроен. Полный код привести не могу, там полно Scrambled-кода, я эти инструкции из мусора вытащил. И ещё не понятно - поиск начинается в обратном направлении со смещения 1000h от KeServiceDescriptorTable в обратном направлении, и ищется число 0FFDFF120h, просто непонятно, зачем вхождение адреса искать. В общем спасибо, буду дальше копаться... volodya Вроде где-то слышал, что у тебя книг много. Может быть скинешь на мыло, или хотя бы ссылку дашь, а то полезная книжка. |
|
|
Дата: Окт 29, 2003 00:33:29 dragon Ссылок на книги в этом форуме не будет принципиально. Шрайбера в электронном варианте у меня нет. Если тебе нужна литература от меня, то какая в том выгода мне? Я не дом благотворительности. Хочешь написать статью для сайта - тогда помогу. Нет - не обессудь. |
|
|
Дата: Окт 29, 2003 09:21:36 Могу написать статью про то, как плагины для IDA писать на Intel C++ или VC++ на примере простого. Просто об этом нигде не написано, по крайней мре на русском. Так как думаешь, нужна такая статья? |
|
|
Дата: Окт 29, 2003 10:43:56 [ dragon: ...просто непонятно, зачем вхождение адреса искать. ] А... понятно. Это он ищет _KiProcessorBlock. У тя символы в айс влиты? Если нет, то это большая ошибка. Тяни PDB для ntoskrnl с помощью SymbolRetriever. Вливай его в айс и в иду. Если стандартный плагин иды откажется принимать PDB, юзай PDBPlus. volodya его выкладывал на сайт. [ volodya: а ты редиска :( ] Это почему? [ dragon: Так как думаешь, нужна такая статья? ] Конечно нужна. |
|
|
Дата: Окт 29, 2003 18:06:52 dragon Да. Оставляй свое мыло. Будем говорить. |
|
|
Дата: Окт 29, 2003 20:01:33 Four-F Символы то я возьму, но надо ещё и описание всех этих структур, так что без какой-нибудь книги про NT ядро мне не обойтись. volodya Я могу в эти выходные статью написать. Единственное что на ачме не получиться, слишком много include файлов переделывать придёться. Поэтому я и хочу для Intel C++ без Runtime library. В общем, мыло - d t d c s @ m a i l . r u |
|
|
Дата: Окт 29, 2003 20:26:25 Конечно, без инфы тут делать неча, но в данном случае тебе должно быть интересно не строение структуры SERVICE_DESCRIPTOR_TABLE и т.п., а зачем драйвер ищет KiProcessorBlock. Ведь в переменной KiProcessorBlock хранится адрес структуры KPRCB, но он и так известен и всегда равен 0FFDFF120h или fs:120h, что в режиме ядра то же самое. Так вот, зачем драйвер ищет заранее известный адрес? Что происходит потом? Тут один чел, недели три назад, грозился отсканить Шрайбера и выложить у себя на сайте. Намек понял? Да простит меня достопочтенный volodya :-) Ну или в магазин беги, если она еще продается. |
|
|
Дата: Окт 29, 2003 22:07:59 dragon Я положил на сайт поправленный w2k_def.h. Глянь туда. Кроме того, есть вторая часть упаковщиков. Скоро Edmond ее сверстает. Редиска Four-F мог бы и упомянуть ;( |
|
|
Дата: Окт 29, 2003 22:53:42 Дык чего упоминать то? И так уже столько анонсов было, что практически все ждут не дождутся ;-p К тому же твоя статья этого вопроса только вскользь касается, если мне память не изменяет, а у того же Шрайбера очень конкретно расписано. А насчет w2k_def.h я забыл, как и о том, что обещал w2k.idc сделать :-) Вот щас тока вспомнил. |
|
|
Дата: Окт 29, 2003 23:02:59 Four-F Тю, так понятно, что мне до Шрайбера не добросить. То ж, все таки, Шрайбер (с придыханием). А насчет w2k_def.h я забыл, как и о том, что обещал w2k.idc сделать :-) Во-во. idc я тоже жду. |
|
|
Дата: Окт 29, 2003 23:09:43 Тут ещё проблема, если пытаться отлаживать этот код, то комп перезагружается, так что придёться только IDA обойтись. А вот w2k_def.h - хороший файл, хоть теперь не вслепую копаться буду. А что это за w2k.idc? |
|
|
Дата: Окт 29, 2003 23:30:42 Если внимательно читал мою статью - уже должен знать. Если не читал - то Four-F слабал классный скрипт для IDA. Надо полагать, со структурами в IDA разбираться умеешь. Вот, когда, скажем, видишь код типа: mov eax, 0FFDFF120h mov al, [eax+134h] то ручками заморишься, а если со скриптиком, то преобразуется в: mov eax, 0FFDFF120h mov al, [eax+KTHREAD.PreviousMode] |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.091 |