Посл.ответ |
Сообщение |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 18 июня 2010 02:56 · Личное сообщение · #1
Речь о лодыре или инлайне: брякнуть пакованую прогу в нужном месте и пропатчить. Вопросы: 1) как вообще ставятся железные бряки (on execution)? 2) как получить управление по бряку?
| Сообщение посчитали полезным: |
|
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 24 июня 2010 22:29 · Личное сообщение · #2
Помогу немного. По контексту можно проследить, что инструкция CALL BFF667F1 будет выполняться только, если адрес в [ebx + 4] >= 0x80000000 и <= 0xBFFFFFFF или [[[0xBFFBBCF8]] + 0x1C] > 0. Этот адрес передается этой ф-ции как 5-ый параметр для вызова.
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 24 июня 2010 23:16 · Поправил: 0xy · Личное сообщение · #3
Вот весь стек. Думаю, это поможет Archer уточнить точку входа в Ring3. 0063FC5C /BFF66821 ; RETURN to KERNEL32.BFF66821 0063FC60 |0063FD28 0063FC64 |0063FE20 0063FC68 |0063FD44 0063FC6C |0063FD00 0063FC70 |0063FE20 ; Pointer to next SEH record 0063FC74 |BFF6682D ; SE handler 0063FC78 |0063FE20 0063FC7C |0063FD10 ; ASCII "0c" 0063FC80 \BFF7845A ; RETURN from KERNEL32.BFF667F1 to KERNEL32.BFF7845A 0063FC84 0063FD28 0063FC88 0063FE20 0063FC8C 0063FD44 0063FC90 0063FD00 0063FC94 660EB126 0063FC98 00000000 0063FC9C 819134A0 0063FCA0 00530000 0063FCA4 00530000 0063FCA8 00530000 0063FCAC 00530000 0063FCB0 00530000 0063FCB4 00530000 0063FCB8 00530000 0063FCBC 00530000 0063FCC0 00000000 0063FCC4 00000000 0063FCC8 00000000 0063FCCC 00000000 0063FCD0 00000000 0063FCD4 00000001 0063FCD8 00000000 0063FCDC 00000000 0063FCE0 00000000 0063FCE4 00000000 0063FCE8 00000000 0063FCEC 00000000 0063FCF0 00000001 0063FCF4 00000000 0063FCF8 00000000 0063FCFC 00000000 0063FD00 00000000 0063FD04 00000000 0063FD08 819134A0 0063FD0C 00000000 0063FD10 0063FE30 0063FD14 FFECBAD7 0063FD18 0063FD44 0063FD1C 0063FD28 0063FD20 0000000D 0063FD24 00000000 0063FD28 /C0000005 _EXCEPTION_RECORD 0063FD2C |00000000 0063FD30 |00000000 0063FD34 |66003599 0063FD38 |00000002 0063FD3C \00000000 0063FD40 FFFFFFFF 0063FD44 /0001001F _CONTEXT 0063FD48 |00000000 0063FD4C |00000000 0063FD50 |00000000 0063FD54 |00000000 0063FD58 |FFFF0FF0 0063FD5C |00002500 0063FD60 |FFFF027F 0063FD64 |FFFF0000 0063FD68 |FFFFFFFF 0063FD6C |00000000 0063FD70 |00000000 0063FD74 |00000000 0063FD78 |FFFF0000 0063FD7C |00000000 0063FD80 |00000000 0063FD84 |00000000 0063FD88 |00000000 0063FD8C |00000000 0063FD90 |00000000 0063FD94 |00000000 0063FD98 |00000000 0063FD9C |00000000 0063FDA0 |00000000 0063FDA4 |00000000 0063FDA8 |00000000 0063FDAC |00000000 0063FDB0 |00000000 0063FDB4 |00000000 0063FDB8 |00000000 0063FDBC |00000000 0063FDC0 |00000000 0063FDC4 |00000000 0063FDC8 |00000000 0063FDCC |0000000A 0063FDD0 |00000000 0063FDD4 |0000123F 0063FDD8 |00000197 0063FDDC |00000197 0063FDE0 |00000000 0063FDE4 |819134A0 0063FDE8 |00530000 0063FDEC |81913500 0063FDF0 |819134C0 0063FDF4 |0063FF68 0063FDF8 |0063FE30 0063FDFC |66003599 0063FE00 |0000018F 0063FE04 |00210A82 0063FE08 |0063FE20 0063FE0C \00000197 0063FE10 00000197 0063FE14 00000197 0063FE18 00000197 0063FE1C 00000197 0063FE20 0063FF68 ; Pointer to next SEH record -- Стек до исключения 0063FE24 660EB126 ; SE handler 0063FE28 660194C0 0063FE2C FFFFFFFF 0063FE30 0063FF78 0063FE34 004011BA ; RETURN from MSVBVM60.ThunRTMain to INSTR.004011BA 0063FE38 004013E0 0063FE3C BFF7B9E4 ; RETURN from KERNEL32.BFF642F1 to KERNEL32.BFF7B9E4 0063FE40 00000000 0063FE44 819134A0 0063FE48 00530000 0063FE4C 74736E49 0063FE50 58450072 0063FE54 FFEC0045 0063FE58 0063FE84 0063FE5C 0063FE68 0063FE60 00000003 0063FE64 00000006 0063FE68 80000003 0063FE6C 00000000 0063FE70 00000000 0063FE74 BFF66878 ; KERNEL32.DebugBreak 0063FE78 00000001 0063FE7C 00000000 0063FE80 C054E50A 0063FE84 0001001F 0063FE88 00000000 0063FE8C 00000000 0063FE90 00000000 0063FE94 00000000 0063FE98 FFFF0FF0 0063FE9C 00002500 0063FEA0 0000037F 0063FEA4 00000000 0063FEA8 00000000 0063FEAC 00000000 0063FEB0 00000000 0063FEB4 00000000 0063FEB8 00001F80 0063FEBC 00000000 0063FEC0 00000000 0063FEC4 00000000 0063FEC8 00000000 0063FECC 00000000 0063FED0 00000000 0063FED4 00000000 0063FED8 00000000 0063FEDC 00000000 0063FEE0 00000000 0063FEE4 00000000 0063FEE8 00000000 0063FEEC 00000000 0063FEF0 00000000 0063FEF4 00000000 0063FEF8 00000000 0063FEFC 00000000 0063FF00 00000000 0063FF04 00000000 0063FF08 00000000 0063FF0C 00000008 0063FF10 00000000 0063FF14 0000123F 0063FF18 00000197 0063FF1C 00000197 0063FF20 00000000 0063FF24 819786F0 0063FF28 00000080 0063FF2C 819866E0 0063FF30 C16E7060 0063FF34 00000019 0063FF38 0063FF6C 0063FF3C 81907050 0063FF40 8194992C 0063FF44 C16E7060 0063FF48 0063FF6C 0063FF4C 004011B0 ; INSTR.<ModuleEntryPoint> 0063FF50 BFF6B487 ; RETURN from KERNEL32.BFF6A250 to KERNEL32.BFF6B487 0063FF54 00000000 0063FF58 819134C0 0063FF5C 30E60000 0063FF60 0063FE40 0063FF64 00530000 0063FF68 FFFFFFFF ; End of SEH chain 0063FF6C BFFB1B20 ; SE handler 0063FF70 BFF69138 0063FF74 00000000 0063FF78 0063FFF4 0063FF7C BFF7B896 ; RETURN from KERNEL32.BFF7B8E0 to KERNEL32.BFF7B896 0063FF80 819786A4 0063FF84 00000008 0063FF88 819134A0 0063FF8C 00000000 0063FF90 00000000 0063FF94 00000000 0063FF98 00000000 0063FF9C 00000000 0063FFA0 00000000 0063FFA4 00000000 0063FFA8 00000000 0063FFAC 00000000 0063FFB0 00000000 0063FFB4 00000000 0063FFB8 00000000 0063FFBC 00000000 0063FFC0 00000000 0063FFC4 00000000 0063FFC8 00000000 0063FFCC 00000000 0063FFD0 0002FFFF 0063FFD4 0000F263 0063FFD8 0063E000 0063FFDC 00640000 0063FFE0 00000000 0063FFE4 FFFFFFFF 0063FFE8 81986568 0063FFEC 00000000 0063FFF0 430F30E6 0063FFF4 82D66FEC 0063FFF8 BFF7A24F ; RETURN to KERNEL32.BFF7A24F 0063FFFC 00000000
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 25 июня 2010 02:03 · Поправил: DenCoder · Личное сообщение · #4
по адресу 63FD28 код исключения 0xС0000005 - ACCESS_VIOLATION регистры на момент исключения
Адрес инструкции похоже внутри функции ThunRTMain, вызванной по адресу выше точки возврата 4011BA. На точку входа косвенно указывает 0063FD14 FFECBAD7 - адрес возврата в ядро 0063FD18 0063FD44 - указатель на EXCEPTION_RECORD 0063FD1C 0063FD28- указатель на CONTEXT 0063FD20 0000000D - номер ExceptionCallback функции из таблицы 0063FD24 00000000 Если выше подняться, то можно заметить 819134A0, что очень похоже на FUNCTION_THUNK, которых много в Win98 SE )). При следующем запуске винды очень вероятно там получить другой адрес. Выше этого адреса всего на несколько байт, думаю и стоит искать точку входа. Принцип обработки callback-функций в 98 на ring3 очень похож на Nt... Там должно быть что-то вроде mov eax, CONST jmp dword ptr [eax] кажется немного ошибаюсь в последнем... а выложи kernel32 от win98. насколько помню, там kliff.vxd (в переводе - клещ) эти фанки пишет. Если можно, то и его тоже, вспомню немного старую винь
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 25 июня 2010 07:06 · Поправил: 0xy · Личное сообщение · #5
kliff.vxdНету у меня такого. 0063FD14 FFECBAD7 - адрес возврата в ядроПо логике--да. Но этот адрес из процесса не виден. А значит, скорее всего, не виден и адрес вызова. Но вызывает ядро СРАЗУ BFF78344. Верно? c6a4_24.06.2010_CRACKLAB.rU.tgz - KERNEL32.RAR
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 25 июня 2010 08:28 · Поправил: DenCoder · Личное сообщение · #6
Есть очень интересный кусок
Если предположить, что именно здесь заполняется структура EXCEPTION_RECORD, то дальше, по индукции совместно с логикой - перед вызовом колбека BFF78344 вызывается сначала колбек BFF78583, который переводит номер исключения 0xD в 0xC0000005 и принимает решение, как дальше поступить. На это также указывает
Далее BFF78344 заносится в некую структуру по смещению 0x24. На эту структуру указывает esi, адрес берется из второго параметра (первый - номер исключения). Ну а вот вызывается уже из ядра как минимум второй... Значит более ранняя точка входа - BFF78583. А с адресом возврата в ядро промашка вышла, вообще-то сегмент стека вместе с уазателем переключаются каждый раз при входе в ядро/выходе из ядра. Кстати FREQASM занимает адреса от 0xBFF61000 до 0xBFF69000. Так что я бы поставил бряк на 0xBFF78583. Для STATUS_SINGLE_STEP(#DB) код исключения 1 и для STATUS_BREAKPOINT(#BP) - 3. Вперед!!!...
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 26 июня 2010 16:29 · Поправил: 0xy · Личное сообщение · #7
я бы поставил бряк на 0xBFF78583Такой бряк намертво подвешивает систему! Вообще, секции системных либ в 9x имеют ОСОБЫЙ СТАТУС. Изначально они вообще ReadOnly и не по зубам VirtulaProtect! Но здесь на помощь приходит шаманская функция #4 После этого секции ВРОДЕ БЫ становятся ГЛОБАЛЬНЫМИ RW-регионами. Но возникает масса неприятных нюансов: 1) патчи нередко пропадают! (особенно в конце секции FREQASM); при этом 2-я Ольга ругается "Error flush cache!"; 2) секции (или отдельные страницы) могут вдруг снова стать ReadOnly; 3) бряки (даже железные) здесь не всегда обрабатываются корректно: к примеру, бряк по адресу BFF6681E |. FF55 18 CALL DWORD PTR SS:[EBP+18] ; Call SEH не перехватывается Ольгой (? ) и приводит к переполнению стека (вероятно, в результате рекурсивных попыток обработать его этим же кодом). Т.е. есть проблема: где же разместить код хука? В функции BFF667F1 (Call (Call SEH)) патчи вроде живут нормально, но там нет места А все попытки выпрыгнуть из нее, даже в относительно стабильные регионы, почему-то терпят фиаско. PS А есть ли возможность самому создать ГЛОБАЛЬНЫЙ регион?
| Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 26 июня 2010 16:32 · Личное сообщение · #8
> Такой бряк намертво подвешивает систему! 9x это мёртвая обогая ось, которая давно никем не юзается. NT это абсолютно иная архитектура. Иди Рихтера читай.
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 26 июня 2010 19:28 · Личное сообщение · #9
Факт пропадания патчей пока поставлен под сомнение. Стабильный регион найден. Исследования продолжаются
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 27 июня 2010 09:14 · Личное сообщение · #10
патчи нередко пропадают!Помню, у меня 98 SE стояла, с 32 мб озу. При работе WinRar ось часто выпадала с ошибками в kernel32. Дело было в том, что FUNCTION_THUNKS по адресам 0x800XXXXX куда-то терялись. Т.е. было похоже на ошибку подкачки. Добавил еще 128 мб, такие ошибки перестали иметь место... Возможно, в 98-ой, чтобы быстрей ее выпустить и отделаться от нее, решили одну из проблем перезаписью секций прям из либ...
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 681.5 (! !), 405thx Активность: 0.42↘0.21 Статус: Участник ALIEN Hack Team
|
Создано: 01 июля 2010 22:41 · Личное сообщение · #11
Прочитал посты сверху, но так и не понял, какого нужно лезть в системные библиотеки? По идее, тс хочет поставить аппаратники и перехватить исключения без цикла отладки. А после этого нужно изменить код приложения, тогда почему бы не перехватить в idt int3 и не модифицировать код прямо из ядра?
----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 03 июля 2010 00:40 · Поправил: 0xy · Личное сообщение · #12
ARCHANGELпочему бы не перехватить в idt int3 и не модифицировать код прямо из ядра? Потому, что ядро для меня--темный лес К тому же, мой метод, теоретически, универсален для всех версий Винды. Хотя на практике возможен гемор с дизассемблированием комманд, затираемых хуком. Благо, для линейки 9x этого удалось избежать: в Millenium и 95osr2 код оказался идентичным Просьба глянуть, кому не лень, как это место выглядит в виндах линейки NT: $ BA 2D68F6BF MOV EDX,BFF6682D ;ExecuteHandlerForException . EB 05 JMP SHORT BFF667FD /$ BA 5268F6BF MOV EDX,BFF66852 ;ExecutehandlerForUnwind |> 55 PUSH EBP |. 8BEC MOV EBP,ESP |. FF75 0C PUSH DWORD PTR SS:[EBP+C] |. 52 PUSH EDX |. 64:FF35 00000>PUSH DWORD PTR FS:[0] |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP |. FF75 14 PUSH DWORD PTR SS:[EBP+14] |. FF75 10 PUSH DWORD PTR SS:[EBP+10] |. FF75 0C PUSH DWORD PTR SS:[EBP+C] |. FF75 08 PUSH DWORD PTR SS:[EBP+8] |. FF55 18 CALL DWORD PTR SS:[EBP+18] ; Call SEH |. 83C4 10 ADD ESP,10 |. 64:8F05 00000>POP DWORD PTR FS:[0] |. C9 LEAVE \. C3 RET
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 03 июля 2010 03:31 · Личное сообщение · #13
0xyНу а что такого? у ARCHANGEL кстати еще вариант, если не устраивает вариант хука. sidt под 98 свободно выполняется в отличие от NT. Но дальше это все дело экспериментов - т.к. под 98 на уровне ядра мало кто пишет... (боюсь там нельзя поставить юзермодный адрес обработчика, это и kernel32 запалит) Исторически 98-ой по архитектуре предшествовала 95. А вперед только Me и всё!!! 9x законно изжила себя, хотя это могло быть и намного раньше... Есть огромные разницы между 9x и NT - 1) Ядро в 98 занимает верхнюю четверть 32-битного адресного пространства, NT - половину 2) Ядро в 98 открыто на юзермоде, на NT - нет 3) По наблюдениям и по сочетании первых двух 9x хоть как-то пытается контролировать верхнюю половину, в то время как на NT более мощные механизмы (конечно не без дыр ). Из-за, кстати, названия там (в 9x) модуля, многими считавшимся основным, kernel32 (32-бит ядро), да еще и с базой 0xBFF60000 (0x80000000 <= Address <= 0xFFFFFFFF) , по крайней мере, некоторые этот модуль относили уже к ядру, хотя я это считал ошибкой. kernel32 был не больше чем посредником, коий на нт сейчас - ntdll, к которому обращается и kernel32, и usser32, и advapi32, но с разницой, гораздо ощутимей. Для этого топика, пожалуй, достаточно теории с историей.
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 237.0 (наставник), 20thx Активность: 0.13↘0 Статус: Участник sysenter
|
Создано: 03 июля 2010 03:44 · Личное сообщение · #14
98-я неплохая окошечная оболочка "над железом" когда-то была.
----- продавец резиновых утёнков | Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 03 июля 2010 08:18 · Личное сообщение · #15
Кто это сказал, что sidt не выполняется на НТ? Нормально там всё выполняется, только чо ты с этим адресом будешь делать из ринг3, непонятно.
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 03 июля 2010 16:14 · Поправил: 0xy · Личное сообщение · #16
Вы б глянули код, который я просил... PS Обратил внимание, что GetProcAddress в 9x не находит ординалы (по крайней мере, ординалы kernel). Так и должно быть? PPS Нсчет IDT: это оно? 800AE000 10 92 28 00 00 8E 00 C0 20 92 28 00 00 8E 00 C0 ’(..Ћ.А ’(..Ћ.А 800AE010 5C C6 28 00 00 8E 00 C0 30 92 28 00 00 EE 00 C0 \Ж(..Ћ.А0’(..о.А 800AE020 40 92 28 00 00 EE 00 C0 50 92 28 00 00 EE 00 C0 @’(..о.АP’(..о.А 800AE030 60 92 28 00 00 8E 00 C0 70 92 28 00 00 8E 00 C0 `’(..Ћ.Аp’(..Ћ.А 800AE040 98 92 28 00 00 8E 00 C0 80 92 28 00 00 8E 00 C0 ?’(..Ћ.АЂ’(..Ћ.А 800AE050 A0 92 28 00 00 8E 00 C0 B0 92 28 00 00 8E 00 C0 ’(..Ћ.А°’(..Ћ.А 800AE060 B8 92 28 00 00 8E 00 C0 C0 92 28 00 00 8E 00 C0 ё’(..Ћ.АА’(..Ћ.А 800AE070 C8 92 28 00 00 8E 00 C0 8C 92 28 00 00 8E 00 C0 И’(..Ћ.АЊ’(..Ћ.А 800AE080 6A 03 3B 00 00 E7 00 00 A4 C6 28 00 00 8E 00 C0 j;..з..¤Ж(..Ћ.А 800AE090 AC C6 28 00 00 8E 00 C0 28 03 3B 00 00 E7 00 00 ¬Ж(..Ћ.А(;..з.. 800AE0A0 BC C6 28 00 00 8E 00 C0 76 03 3B 00 00 E7 00 00 јЖ(..Ћ.Аv;..з.. 800AE0B0 CC C6 28 00 00 8E 00 C0 D4 C6 28 00 00 8E 00 C0 МЖ(..Ћ.АФЖ(..Ћ.А 800AE0C0 DC C6 28 00 00 8E 00 C0 E4 C6 28 00 00 8E 00 C0 ЬЖ(..Ћ.АдЖ(..Ћ.А 800AE0D0 EC C6 28 00 00 8E 00 C0 F4 C6 28 00 00 8E 00 C0 мЖ(..Ћ.АфЖ(..Ћ.А 800AE0E0 2C 03 3B 00 00 E7 00 00 04 C7 28 00 00 8E 00 C0 ,;..з..З(..Ћ.А 800AE0F0 00 00 A3 00 00 E7 00 00 14 C7 28 00 00 8E 00 C0 ..Ј..з..З(..Ћ.А 800AE100 1C C7 28 00 00 8E 00 C0 32 85 6F 01 00 E7 00 00 З(..Ћ.А2…o.з.. 800AE110 2C C7 28 00 00 8E 00 C0 34 C7 28 00 00 8E 00 C0 ,З(..Ћ.А4З(..Ћ.А 800AE120 9A 03 3B 00 00 E7 00 00 B2 03 3B 00 00 E7 00 00 љ;..з..І;..з.. 800AE130 B4 03 3B 00 00 E7 00 00 54 C7 28 00 00 8E 00 C0 ґ;..з..TЗ(..Ћ.А 800AE140 5C C7 28 00 00 8E 00 C0 64 C7 28 00 00 8E 00 C0 \З(..Ћ.АdЗ(..Ћ.А 800AE150 6C C7 28 00 00 8E 00 C0 74 C7 28 00 00 8E 00 C0 lЗ(..Ћ.АtЗ(..Ћ.А 800AE160 7C C7 28 00 00 8E 00 C0 84 C7 28 00 00 8E 00 C0 |З(..Ћ.А„З(..Ћ.А 800AE170 8C C7 28 00 00 8E 00 C0 55 C0 47 03 00 E7 00 00 ЊЗ(..Ћ.АUАG.з.. 800AE180 5C 9C 28 00 00 EE 00 C0 31 89 6F 01 00 E7 00 00 \њ(..о.А1‰o.з.. 800AE190 AC C7 28 00 00 8E 00 C0 78 03 3B 00 00 E7 00 00 ¬З(..Ћ.Аx;..з.. 800AE1A0 D5 08 F7 2D 00 E7 00 00 D5 08 F7 2D 00 E7 00 00 Хч-.з..Хч-.з.. 800AE1B0 D5 08 F7 2D 00 E7 00 00 D5 08 F7 2D 00 E7 00 00 Хч-.з..Хч-.з.. 800AE1C0 D5 08 F7 2D 00 E7 00 00 D5 08 F7 2D 00 E7 00 00 Хч-.з..Хч-.з.. 800AE1D0 D5 08 F7 2D 00 E7 00 00 D5 08 F7 2D 00 E7 00 00 Хч-.з..Хч-.з.. 800AE1E0 41 08 F7 2D 00 E7 00 00 6E 08 F7 2D 00 E7 00 00 Aч-.з..nч-.з.. 800AE1F0 68 93 6F 01 00 E7 00 00 14 C8 28 00 00 EE 00 C0 h“o.з..И(..о.А 800AE200 1C C8 28 00 00 8E 00 C0 24 C8 28 00 00 8E 00 C0 И(..Ћ.А$И(..Ћ.А 800AE210 2C C8 28 00 00 EE 00 C0 34 C8 28 00 00 8E 00 C0 ,И(..о.А4И(..Ћ.А 800AE220 3C C8 28 00 00 8E 00 C0 44 C8 28 00 00 8E 00 C0 <И(..Ћ.АDИ(..Ћ.А 800AE230 4C C8 28 00 00 8E 00 C0 54 C8 28 00 00 8E 00 C0 LИ(..Ћ.АTИ(..Ћ.А 800AE240 5C C8 28 00 00 8E 00 C0 64 C8 28 00 00 8E 00 C0 \И(..Ћ.АdИ(..Ћ.А 800AE250 6C C8 28 00 00 8E 00 C0 74 C8 28 00 00 8E 00 C0 lИ(..Ћ.АtИ(..Ћ.А 800AE260 B0 07 E8 00 00 8E 00 FF 84 C8 28 00 00 8E 00 C0 °и..Ћ.я„И(..Ћ.А 800AE270 50 0E E8 00 00 8E 00 FF 30 0E E8 00 00 8E 00 FF Pи..Ћ.я0и..Ћ.я 800AE280 C0 8F 28 00 00 8E 00 C0 D0 8F 28 00 00 8E 00 C0 АЏ(..Ћ.АРЏ(..Ћ.А 800AE290 E0 8F 28 00 00 8E 00 C0 F0 8F 28 00 00 8E 00 C0 аЏ(..Ћ.АрЏ(..Ћ.А 800AE2A0 00 90 28 00 00 8E 00 C0 10 90 28 00 00 8E 00 C0 .ђ(..Ћ.Ађ(..Ћ.А 800AE2B0 20 90 28 00 00 8E 00 C0 30 90 28 00 00 8E 00 C0 ђ(..Ћ.А0ђ(..Ћ.А 800AE2C0 40 90 28 00 00 8E 00 C0 50 90 28 00 00 8E 00 C0 @ђ(..Ћ.АPђ(..Ћ.А 800AE2D0 60 90 28 00 00 8E 00 C0 70 90 28 00 00 8E 00 C0 `ђ(..Ћ.Аpђ(..Ћ.А 800AE2E0 80 90 28 00 00 8E 00 C0 90 90 28 00 00 8E 00 C0 Ђђ(..Ћ.Ађђ(..Ћ.А 800AE2F0 A0 90 28 00 00 8E 00 C0 B0 90 28 00 00 8E 00 C0 ђ(..Ћ.А°ђ(..Ћ.А 800AE300 2E 93 00 00 6F 01 FF FC BA 0A 00 00 6F 01 FF FC .“..oяьє...oяь 800AE310 50 93 00 00 6F 01 FF FC C4 0A 00 00 6F 01 FF FC P“..oяьД...oяь 800AE320 56 93 00 00 6F 01 FF FC 0A 00 00 00 3B 00 FF FC V“..oяь....;.яь 800AE330 5C 93 00 00 6F 01 FF FC 62 93 00 00 6F 01 FF FC \“..oяьb“..oяь 800AE340 10 00 00 00 3B 00 FF FC 44 00 00 00 7F 02 FF FC ...;.яьD...яь 800AE350 14 00 00 00 3B 00 FF FC 16 00 00 00 3B 00 FF FC ...;.яь...;.яь 800AE360 18 00 00 00 3B 00 FF FC 1A 00 00 00 3B 00 FF FC ...;.яь...;.яь 800AE370 1C 00 00 00 3B 00 FF FC 1E 00 00 00 3B 00 FF FC ...;.яь...;.яь 800AE380 6A 03 00 00 3B 00 FF FE 22 00 00 00 3B 00 FF FE j..;.яю"...;.яю 800AE390 24 00 00 00 3B 00 FF FE 28 03 00 00 3B 00 FF FE $...;.яю(..;.яю 800AE3A0 28 00 00 00 3B 00 FF FE 76 03 00 00 3B 00 FF FE (...;.яюv..;.яю 800AE3B0 2C 00 00 00 3B 00 FF FE 2E 00 00 00 3B 00 FF FE ,...;.яю....;.яю 800AE3C0 30 00 00 00 3B 00 FF FE 32 00 00 00 3B 00 FF FE 0...;.яю2...;.яю 800AE3D0 34 00 00 00 3B 00 FF FE 36 00 00 00 3B 00 FF FE 4...;.яю6...;.яю 800AE3E0 2C 03 00 00 3B 00 FF FE 3A 00 00 00 3B 00 FF FE ,..;.яю:...;.яю 800AE3F0 00 00 00 00 A3 00 FF FE 3E 00 00 00 3B 00 FF FE ....Ј.яю>...;.яю 800AE400 40 00 00 00 3B 00 FF FE 32 85 00 00 6F 01 FF FE @...;.яю2…..oяю 800AE410 44 00 00 00 3B 00 FF FE 46 00 00 00 3B 00 FF FE D...;.яюF...;.яю 800AE420 9A 03 00 00 3B 00 FF FE B2 03 00 00 3B 00 FF FE љ..;.яюІ..;.яю 800AE430 B4 03 00 00 3B 00 FF FE 4E 00 00 00 3B 00 FF FE ґ..;.яюN...;.яю 800AE440 50 00 00 00 3B 00 FF FE 52 00 00 00 3B 00 FF FE P...;.яюR...;.яю 800AE450 54 00 00 00 3B 00 FF FE 56 00 00 00 3B 00 FF FE T...;.яюV...;.яю 800AE460 58 00 00 00 3B 00 FF FE 5A 00 00 00 3B 00 FF FE X...;.яюZ...;.яю 800AE470 1C 02 00 00 3B 00 FF FE 55 C0 00 00 47 03 FF FE ..;.яюUА..Gяю 800AE480 60 00 00 00 3B 00 FF FE 31 89 00 00 6F 01 FF FE `...;.яю1‰..oяю 800AE490 64 00 00 00 3B 00 FF FE 78 03 00 00 3B 00 FF FE d...;.яюx..;.яю 800AE4A0 D5 08 00 00 F7 2D FF FE D5 08 00 00 F7 2D FF FE Х..ч-яюХ..ч-яю 800AE4B0 D5 08 00 00 F7 2D FF FE D5 08 00 00 F7 2D FF FE Х..ч-яюХ..ч-яю 800AE4C0 D5 08 00 00 F7 2D FF FE D5 08 00 00 F7 2D FF FE Х..ч-яюХ..ч-яю 800AE4D0 D5 08 00 00 F7 2D FF FE D5 08 00 00 F7 2D FF FE Х..ч-яюХ..ч-яю 800AE4E0 41 08 00 00 F7 2D FF FE 6E 08 00 00 F7 2D FF FE A..ч-яюn..ч-яю 800AE4F0 68 93 00 00 6F 01 FF FE 7E 00 00 00 3B 00 FF FE h“..oяю~...;.яю 800AE500 80 00 00 00 3B 00 FF FE 1A 02 00 00 3B 00 FF FE Ђ...;.яю..;.яю 800AE510 84 00 00 00 3B 00 FF FE 86 00 00 00 3B 00 FF FE „...;.яю†...;.яю 800AE520 88 00 00 00 3B 00 FF FE 8A 00 00 00 3B 00 FF FE €...;.яюЉ...;.яю 800AE530 1A 02 00 00 3B 00 FF FE 8E 00 00 00 3B 00 FF FE ..;.яюЋ...;.яю 800AE540 90 00 00 00 3B 00 FF FE 92 00 00 00 3B 00 FF FE ђ...;.яю’...;.яю 800AE550 94 00 00 00 3B 00 FF FE 38 03 00 00 3B 00 FF FE ”...;.яю8..;.яю 800AE560 98 00 00 00 3B 00 FF FE 9A 00 00 00 3B 00 FF FE ?...;.яюљ...;.яю 800AE570 9C 00 00 00 3B 00 FF FE 9E 00 00 00 3B 00 FF FE њ...;.яюћ...;.яю 800AE580 A0 00 00 00 3B 00 FF FE A2 00 00 00 3B 00 FF FE ...;.яюў...;.яю 800AE590 A4 00 00 00 3B 00 FF FE A6 00 00 00 3B 00 FF FE ¤...;.яю¦...;.яю 800AE5A0 A8 00 00 00 3B 00 FF FE AA 00 00 00 3B 00 FF FE Ё...;.яюЄ...;.яю 800AE5B0 AC 00 00 00 3B 00 FF FE AE 00 00 00 3B 00 FF FE ¬...;.яю®...;.яю 800AE5C0 B0 00 00 00 3B 00 FF FE B2 00 00 00 3B 00 FF FE °...;.яюІ...;.яю 800AE5D0 B4 00 00 00 3B 00 FF FE B6 00 00 00 3B 00 FF FE ґ...;.яю¶...;.яю 800AE5E0 B8 00 00 00 3B 00 FF FE BA 00 00 00 3B 00 FF FE ё...;.яює...;.яю 800AE5F0 BC 00 00 00 3B 00 FF FE BE 00 00 00 3B 00 FF FE ј...;.яюѕ...;.яю 800AE600 C0 00 00 00 3B 00 FF FE C2 00 00 00 3B 00 FF FE А...;.яюВ...;.яю 800AE610 C4 00 00 00 3B 00 FF FE C6 00 00 00 3B 00 FF FE Д...;.яюЖ...;.яю 800AE620 C8 00 00 00 3B 00 FF FE CA 00 00 00 3B 00 FF FE И...;.яюК...;.яю 800AE630 CC 00 00 00 3B 00 FF FE AA 03 00 00 3B 00 FF FE М...;.яюЄ..;.яю 800AE640 D0 00 00 00 3B 00 FF FE D2 00 00 00 3B 00 FF FE Р...;.яюТ...;.яю 800AE650 D4 00 00 00 3B 00 FF FE D6 00 00 00 3B 00 FF FE Ф...;.яюЦ...;.яю 800AE660 D8 00 00 00 3B 00 FF FE DA 00 00 00 3B 00 FF FE Ш...;.яюЪ...;.яю 800AE670 DC 00 00 00 3B 00 FF FE DE 00 00 00 3B 00 FF FE Ь...;.яюЮ...;.яю 800AE680 E0 00 00 00 3B 00 FF FC E2 00 00 00 3B 00 FF FC а...;.яьв...;.яь 800AE690 E4 00 00 00 3B 00 FF FC E6 00 00 00 3B 00 FF FC д...;.яьж...;.яь 800AE6A0 E8 00 00 00 3B 00 FF FC 6E 93 00 00 6F 01 FF FC и...;.яьn“..oяь 800AE6B0 EC 00 00 00 3B 00 FF FC EE 00 00 00 3B 00 FF FC м...;.яьо...;.яь 800AE6C0 F0 00 00 00 3B 00 FF FE F2 00 00 00 3B 00 FF FE р...;.яют...;.яю 800AE6D0 F4 00 00 00 3B 00 FF FE F6 00 00 00 3B 00 FF FE ф...;.яюц...;.яю 800AE6E0 F8 00 00 00 3B 00 FF FE FA 00 00 00 3B 00 FF FE ш...;.яюъ...;.яю 800AE6F0 FC 00 00 00 3B 00 FF FE FE 00 00 00 3B 00 FF FE ь...;.яюю...;.яю 800AE700 00 01 00 00 3B 00 FF FE 02 01 00 00 3B 00 FF FE ...;.яю..;.яю 800AE710 04 01 00 00 3B 00 FF FE 06 01 00 00 3B 00 FF FE ..;.яю..;.яю 800AE720 08 01 00 00 3B 00 FF FE 0A 01 00 00 3B 00 FF FE ..;.яю...;.яю 800AE730 0C 01 00 00 3B 00 FF FE 0E 01 00 00 3B 00 FF FE ...;.яю..;.яю 800AE740 10 01 00 00 3B 00 FF FE 12 01 00 00 3B 00 FF FE ..;.яю..;.яю 800AE750 14 01 00 00 3B 00 FF FE 16 01 00 00 3B 00 FF FE ..;.яю..;.яю 800AE760 18 01 00 00 3B 00 FF FE 1A 01 00 00 3B 00 FF FE ..;.яю..;.яю 800AE770 1C 01 00 00 3B 00 FF FE 1E 01 00 00 3B 00 FF FE ..;.яю..;.яю 800AE780 20 01 00 00 3B 00 FF FE 22 01 00 00 3B 00 FF FE ..;.яю"..;.яю 800AE790 24 01 00 00 3B 00 FF FE 26 01 00 00 3B 00 FF FE $..;.яю&..;.яю 800AE7A0 28 01 00 00 3B 00 FF FE 2A 01 00 00 3B 00 FF FE (..;.яю*..;.яю 800AE7B0 2C 01 00 00 3B 00 FF FE 2E 01 00 00 3B 00 FF FE ,..;.яю...;.яю 800AE7C0 30 01 00 00 3B 00 FF FE 32 01 00 00 3B 00 FF FE 0..;.яю2..;.яю 800AE7D0 34 01 00 00 3B 00 FF FE 36 01 00 00 3B 00 FF FE 4..;.яю6..;.яю 800AE7E0 38 01 00 00 3B 00 FF FE 3A 01 00 00 3B 00 FF FE 8..;.яю:..;.яю 800AE7F0 3C 01 00 00 3B 00 FF FE 3E 01 00 00 3B 00 FF FE <..;.яю>..;.яю 800AE800 40 01 00 00 3B 00 FF FE 42 01 00 00 3B 00 FF FE @..;.яюB..;.яю 800AE810 44 01 00 00 3B 00 FF FE 46 01 00 00 3B 00 FF FE D..;.яюF..;.яю 800AE820 48 01 00 00 3B 00 FF FE 4A 01 00 00 3B 00 FF FE H..;.яюJ..;.яю
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 03 июля 2010 16:34 · Личное сообщение · #17
800AE830 4C 01 00 00 3B 00 FF FE 4E 01 00 00 3B 00 FF FE L..;.яюN..;.яю 800AE840 50 01 00 00 3B 00 FF FE 52 01 00 00 3B 00 FF FE P..;.яюR..;.яю 800AE850 54 01 00 00 3B 00 FF FE 56 01 00 00 3B 00 FF FE T..;.яюV..;.яю 800AE860 58 01 00 00 3B 00 FF FE 5A 01 00 00 3B 00 FF FE X..;.яюZ..;.яю 800AE870 5C 01 00 00 3B 00 FF FE 5E 01 00 00 3B 00 FF FE \..;.яю^..;.яю 800AE880 60 01 00 00 3B 00 FF FE 62 01 00 00 3B 00 FF FE `..;.яюb..;.яю 800AE890 64 01 00 00 3B 00 FF FE 66 01 00 00 3B 00 FF FE d..;.яюf..;.яю 800AE8A0 68 01 00 00 3B 00 FF FE 6A 01 00 00 3B 00 FF FE h..;.яюj..;.яю 800AE8B0 6C 01 00 00 3B 00 FF FE 6E 01 00 00 3B 00 FF FE l..;.яюn..;.яю 800AE8C0 70 01 00 00 3B 00 FF FE 72 01 00 00 3B 00 FF FE p..;.яюr..;.яю 800AE8D0 74 01 00 00 3B 00 FF FE 76 01 00 00 3B 00 FF FE t..;.яюv..;.яю 800AE8E0 78 01 00 00 3B 00 FF FE 7A 01 00 00 3B 00 FF FE x..;.яюz..;.яю 800AE8F0 7C 01 00 00 3B 00 FF FE 7E 01 00 00 3B 00 FF FE |..;.яю~..;.яю 800AE900 80 01 00 00 3B 00 FF FE 82 01 00 00 3B 00 FF FE Ђ..;.яю‚..;.яю 800AE910 84 01 00 00 3B 00 FF FE 86 01 00 00 3B 00 FF FE „..;.яю†..;.яю 800AE920 88 01 00 00 3B 00 FF FE 8A 01 00 00 3B 00 FF FE €..;.яюЉ..;.яю 800AE930 8C 01 00 00 3B 00 FF FE 8E 01 00 00 3B 00 FF FE Њ..;.яюЋ..;.яю 800AE940 90 01 00 00 3B 00 FF FE 92 01 00 00 3B 00 FF FE ђ..;.яю’..;.яю 800AE950 94 01 00 00 3B 00 FF FE 96 01 00 00 3B 00 FF FE ”..;.яю–..;.яю 800AE960 98 01 00 00 3B 00 FF FE 9A 01 00 00 3B 00 FF FE ?..;.яюљ..;.яю 800AE970 9C 01 00 00 3B 00 FF FE 9E 01 00 00 3B 00 FF FE њ..;.яюћ..;.яю 800AE980 A0 01 00 00 3B 00 FF FE A2 01 00 00 3B 00 FF FE ..;.яюў..;.яю 800AE990 A4 01 00 00 3B 00 FF FE A6 01 00 00 3B 00 FF FE ¤..;.яю¦..;.яю 800AE9A0 A8 01 00 00 3B 00 FF FE AA 01 00 00 3B 00 FF FE Ё..;.яюЄ..;.яю 800AE9B0 AC 01 00 00 3B 00 FF FE AE 01 00 00 3B 00 FF FE ¬..;.яю®..;.яю 800AE9C0 B0 01 00 00 3B 00 FF FE B2 01 00 00 3B 00 FF FE °..;.яюІ..;.яю 800AE9D0 B4 01 00 00 3B 00 FF FE B6 01 00 00 3B 00 FF FE ґ..;.яю¶..;.яю 800AE9E0 B8 01 00 00 3B 00 FF FE BA 01 00 00 3B 00 FF FE ё..;.яює..;.яю 800AE9F0 BC 01 00 00 3B 00 FF FE BE 01 00 00 3B 00 FF FE ј..;.яюѕ..;.яю 800AEA00 C0 01 00 00 3B 00 FF FE C2 01 00 00 3B 00 FF FE А..;.яюВ..;.яю 800AEA10 C4 01 00 00 3B 00 FF FE C6 01 00 00 3B 00 FF FE Д..;.яюЖ..;.яю 800AEA20 C8 01 00 00 3B 00 FF FE CA 01 00 00 3B 00 FF FE И..;.яюК..;.яю 800AEA30 CC 01 00 00 3B 00 FF FE CE 01 00 00 3B 00 FF FE М..;.яюО..;.яю 800AEA40 D0 01 00 00 3B 00 FF FE D2 01 00 00 3B 00 FF FE Р..;.яюТ..;.яю 800AEA50 D4 01 00 00 3B 00 FF FE D6 01 00 00 3B 00 FF FE Ф..;.яюЦ..;.яю 800AEA60 D8 01 00 00 3B 00 FF FE DA 01 00 00 3B 00 FF FE Ш..;.яюЪ..;.яю 800AEA70 DC 01 00 00 3B 00 FF FE DE 01 00 00 3B 00 FF FE Ь..;.яюЮ..;.яю 800AEA80 E0 01 00 00 3B 00 FF FE E2 01 00 00 3B 00 FF FE а..;.яюв..;.яю 800AEA90 E4 01 00 00 3B 00 FF FE E6 01 00 00 3B 00 FF FE д..;.яюж..;.яю 800AEAA0 E8 01 00 00 3B 00 FF FE EA 01 00 00 3B 00 FF FE и..;.яюк..;.яю 800AEAB0 EC 01 00 00 3B 00 FF FE EE 01 00 00 3B 00 FF FE м..;.яюо..;.яю 800AEAC0 F0 01 00 00 3B 00 FF FE F2 01 00 00 3B 00 FF FE р..;.яют..;.яю 800AEAD0 F4 01 00 00 3B 00 FF FE F6 01 00 00 3B 00 FF FE ф..;.яюц..;.яю 800AEAE0 F8 01 00 00 3B 00 FF FE FA 01 00 00 3B 00 FF FE ш..;.яюъ..;.яю 800AEAF0 FC 01 00 00 3B 00 FF FE FE 01 00 00 3B 00 FF FE ь..;.яюю..;.яю 800AEB00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 800AEB10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 04 июля 2010 08:41 · Поправил: DenCoder · Личное сообщение · #18
Кто это сказал, что sidt не выполняется на НТ?Я имел ввиду это только чо ты с этим адресом будешь делать из ринг3. Хотя можно физическую память открыть... Прошу прощения за неточность, только не бейте :D 0xy
отсюда int1 - 0028:C0009220. int3 - 0028:C0009230 Судя по промежуткам между адресами обработчиков, там должны быть джампы, выровнены по 16 бит... Код аналогичный, только в ntdll:
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 04 июля 2010 10:53 · Личное сообщение · #19
DenCoder> только чо ты с этим адресом будешь делать из ринг3. На сколько помню в 9x доступ к IDT открыт из U-mode, впрочем разницы нет если не малварь пишите. Из ядра всё доступно.
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 04 июля 2010 18:44 · Личное сообщение · #20
DenCoderИз какой конкертно винды этот код? И есть ли возможность посмотреть в других версиях NT (желательно в 4-й и 7-й)? PS А отличия таки есть: call [ebp+18]->mov ecx,[ebp+18]; call ecx :
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 04 июля 2010 19:15 · Личное сообщение · #21
XP SP3 с патчами. Сам вызов сех-хэндлера несущественно отличается на всех платформах. А вот проверок перед этим больше, чем в 98... 0xy пишет: А отличия таки есть: call [ebp+18]->mov ecx,[ebp+18]; call ecxВот еще на такие мелочи внимание обращать... А в ExecuteHandler2 попадаем из почти аналогичной ExecuteHandler, ну и что теперь?
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 04 июля 2010 19:23 · Личное сообщение · #22
0xyЧто вы делаете не понятно. Причём здесь дескрипторные таблицы, ядро и пр. Вам нужно прогрузить в контексте целевого потока отладочные регистры. Это можно сделать вручную(NtSetContextThread, loc. NtContinue), либо через механизм исключений(он локальный).
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 04 июля 2010 21:56 · Личное сообщение · #23
Clerk, NtSetContextThread там нет, есть KERNEL32_9 с функцией 0x2A0015 (на VxDCall похоже). О некоторых целях тс вроже было уже в 1-ой части: http://www.exelab.ru/f/action=vthread&forum=6&topic=16399&page=0#14Только вот почему не получилось подсунуть свой обработчик?... И что в результате должно получиться? А то такой дискуссией к концу года всю винду переберем
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 04 июля 2010 23:50 · Личное сообщение · #24
Причём здесь дескрипторные таблицы, ядро и прПока ни причем, ибо я пошел путем перехвата Call SEH. Но инфа полезная. Только вот почему не получилось подсунуть свой обработчик?Да уже получилось. Оказалось, что глобальный регион "без капризов" успешно создает VirtualAlloc DenCoderесть KERNEL32_9 с функцией 0x2A0015 Шаман! Можешь подкинуть чуток курева на тему функций #9? PS Походу вопрос. Это нормально, что его (#9) не находит GetProcAddress? Вот еще на такие мелочи внимание обращать...А в ExecuteHandler2 попадаем из почти аналогичной ExecuteHandler, ну и что теперь? Мне все равно, откуда попадаем. Важно лишь знать комманды процедуры "Call SEH", которые затрет мой джамп, дабы не перерезать комманду пополам.
| Сообщение посчитали полезным: |
Ранг: 529.0 (!), 110thx Активность: 0.29↘0.04 Статус: Участник 5KRT
|
Создано: 05 июля 2010 00:04 · Личное сообщение · #25
0xywww.exelab.ru/f/action=vthread&forum=6&topic=13920
----- Research For Food | Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 05 июля 2010 06:44 · Поправил: Clerk · Личное сообщение · #26
DenCoderНу апи соответствующая должна быть. > Важно лишь знать комманды процедуры "Call SEH" Дизасм длин используйте. Вобще почему не поставите нормальную ось с NT ядром ? - Кстате я так понимаю что пользовательские отладчики в 9x не работают ? Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BP ?
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 05 июля 2010 12:10 · Поправил: DenCoder · Личное сообщение · #27
Clerk Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BP ?Нет, остальные не отвалятся. Я помню, что не во всей kernel32, но в какой-то части бряки вообще в ней не работают. 0xy Можешь подкинуть чуток курева на тему функций #9?
KERNEL32_1...KERNEL32_9 имеют один и тот же адрес, и передают управление через
4 байта адрес, 2 байта селектор. В eax - номер функции, аналогично как в ntdll. Интересовался давно, что там за адрес, запомнил только, что по нему int 30h. Дальше исследования ядра win98 поставили меня тогда в тупик, потому как не дошел до места передачи управления в другой VxD, наверное слишком увлекся другими ветками кодами с вводом/выводом. 2A001Dh - как ядровый RtlEnterCriticalSection 2A001Ch - как ядровый RtlLeaveCriticalSection только не уверен... может еще переключение режимов...
Вот здесь vx.netlux.org/lib/static/vdat/tumisc71.htm нашел более полнее. Это нормально, что его (#9) не находит GetProcAddress?Неа, ненормально. Должна находиться. Глянул немного GetProcAddress - поиск функи по ординалу там предусмотрен. Надеюсь не строку #9 передаешь? :D
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 05 июля 2010 21:49 · Личное сообщение · #28
Ида знает все VxDCall'ы, если ввести в ней 0xCD, 0x20, xx xx yy yy (int 20h). int 30h похоже тоже самое, только вызов из юзермода и что за сервис - в eax.
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 05 июля 2010 23:09 · Поправил: 0xy · Личное сообщение · #29
ClerkКстате я так понимаю что пользовательские отладчики в 9x не работают ?Работают, но с учетом этой оговорки: Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BPТут часто (но не всегда!) выручают железные бряки. DenCoderЯ помню, что не во всей kernel32, но в какой-то части бряки вообще в ней не работают.Работают везде, но не везде нормально перехватываются отладчиком. .text:BFF8523A 018 push 2A0015h - функция ядра, 2A - какой-то VxD-модуль, 15 - функцияА существует какой-нить справочник по этим функциям?
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 06 июля 2010 00:27 · Личное сообщение · #30
Глянул немного GetProcAddress - поиск функи по ординалу там предусмотрен.Значит процедура у меня сглючивает. main 00402674 PUSH 8 [0063FE38]=BFF7B9B7 ESP=0063FE38 main 00402676 PUSH BFF60000 [0063FE34]=81C70F58 ESP=0063FE34 main 0040267B CALL GetProcAddress ESP=0063FE30 main GetProcAddress PUSH EDI [0063FE2C]=BFF7B5B4 ESP=0063FE2C main BFF66D81 PUSH 22 [0063FE28]=00000197 ESP=0063FE28 main BFF66D83 SUB EDX,EDX EDX=00000000 main BFF66D85 PUSH BFF923B3 [0063FE24]=00000197 ESP=0063FE24 main BFF66D8A PUSH DWORD PTR FS:[EDX] [81C71124]=0063FF68 ESP=0063FE20 main BFF66D8D MOV FS:[EDX],ESP [81C71124]=0063FF68 main BFF66D90 MOV EDI,SS:[Procname] [0063FE38]=00000008 EDI=00000008 main BFF66D94 CMP EDI,10000 main BFF66D9A JB SHORT BFF66DA3 main BFF66DA3 POP DWORD PTR FS:[EDX] [81C71124]=0063FF68 ESP=0063FE24 main BFF66DA6 ADD ESP,8 ESP=0063FE2C main BFF66DA9 POP EDI [0063FE2C]=00000000 ESP=0063FE30, EDI=00000000 main BFF66DAA JMP BFF704E4 main BFF704E4 PUSH EBX [0063FE2C]=00000000 ESP=0063FE2C main BFF704E5 MOV EAX,DS:[BFFBBCF4] [BFFBBCF4]=C002E624 EAX=C002E624 main BFF704EA PUSH ESI [0063FE28]=00000022 ESP=0063FE28 main BFF704EB PUSH EDI [0063FE24]=BFF923B3 ESP=0063FE24 main BFF704EC XOR ESI,ESI ESI=00000000 main BFF704EE MOV EDI,DS:[EAX] [C002E624]=81C70EF8 EDI=81C70EF8 main BFF704F0 LEA EAX,[EDI+60] Address=81C70F58 EAX=81C70F58 main BFF704F3 PUSH EAX [0063FE20]=0063FF68 ESP=0063FE20 main BFF704F4 CALL #97 ESP=0063FE1C main #97 POP ECX [0063FE1C]=BFF704F9 ECX=BFF704F9, ESP=0063FE20 main BFF6418D POP EDX [0063FE20]=81C70F58 EDX=81C70F58, ESP=0063FE24 main BFF6418E PUSH ECX [0063FE20]=81C70F58 ESP=0063FE20 main BFF6418F CMP DWORD PTR DS:[BFFBBCFC],1 [BFFBBCFC]=2 main BFF64196 JL SHORT BFF641AD main BFF64198 MOV EAX,DS:[BFFBBCF8] [BFFBBCF8]=C002E628 EAX=C002E628 main BFF6419D MOV EAX,DS:[EAX] [C002E628]=E4906D70 EAX=E4906D70 BFF6419F INC DWORD [EAX+1C] [E4906D8C]=1
Последний inс ВЫПОЛНЯЕТСЯ (переменная увеличивается), но при этом, видимо, возникает какое-то исключение, и дальнейшая трассировка валит процесс с кодом -1. Возможно, что сбой возникает не здесь, а чуть дальше, но из #97 мы точно не возвращаемся.
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 06 июля 2010 12:24 · Поправил: DenCoder · Личное сообщение · #31
#97 - это вход в какой-то режим. Я думал, что это критическая секция... трассировку лучше продолжить после #98.
----- IZ.RU | Сообщение посчитали полезным: |