Сейчас на форуме: tyns777 (+4 невидимых)

 eXeL@B —› Программирование —› Как поставить железный бряк? (НЕ в Ольге, естесвенно :]
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 18 июня 2010 02:56
· Личное сообщение · #1

Речь о лодыре или инлайне: брякнуть пакованую прогу в нужном месте и пропатчить.
Вопросы:
1) как вообще ставятся железные бряки (on execution)?
2) как получить управление по бряку?




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 24 июня 2010 22:29
· Личное сообщение · #2

Помогу немного.
По контексту можно проследить, что инструкция CALL BFF667F1 будет выполняться только, если адрес в [ebx + 4] >= 0x80000000 и <= 0xBFFFFFFF или [[[0xBFFBBCF8]] + 0x1C] > 0. Этот адрес передается этой ф-ции как 5-ый параметр для вызова.

-----
IZ.RU




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 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.480.37
Статус: Участник

Создано: 25 июня 2010 02:03 · Поправил: DenCoder
· Личное сообщение · #4

Code:
  1. 0063FD28 /C0000005 _EXCEPTION_RECORD - ACCESS_VIOLATION
  2. 0063FD2C |00000000
  3. 0063FD30 |00000000
  4. 0063FD34 |66003599 - eip инструкции, вызвавшей исключение, модуль msvbvm60.dll
  5. 0063FD38 |00000002
  6. 0063FD3C \00000000
  7. 0063FD40 FFFFFFFF


по адресу 63FD28 код исключения 0xС0000005 - ACCESS_VIOLATION

регистры на момент исключения

Code:
  1. 0063FDE0 |00000000 - edi
  2. 0063FDE4 |819134A0 - esi
  3. 0063FDE8 |00530000 - ebx
  4. 0063FDEC |81913500 - edx
  5. 0063FDF0 |819134C0 - ecx
  6. 0063FDF4 |0063FF68 - eax
  7. 0063FDF8 |0063FE30 - ebp
  8.  
  9. 0063FE04 |00210A82 - eflags
  10. 0063FE08 |0063FE20 - esp


Адрес инструкции похоже внутри функции 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.090
Статус: Участник

Создано: 25 июня 2010 07:06 · Поправил: 0xy
· Личное сообщение · #5

kliff.vxd
Нету у меня такого.

0063FD14 FFECBAD7 - адрес возврата в ядро
По логике--да. Но этот адрес из процесса не виден. А значит, скорее всего, не виден и адрес вызова.

Но вызывает ядро СРАЗУ BFF78344. Верно?

c6a4_24.06.2010_CRACKLAB.rU.tgz - KERNEL32.RAR




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 25 июня 2010 08:28 · Поправил: DenCoder
· Личное сообщение · #6

Есть очень интересный кусок

Code:
  1. .text:BFF7869C 148 mov     [ebp+var_58], 0C0000005h ; jumptable BFF78620 case 13 - 0xD
  2. .text:BFF786A3 148 mov     [ebp+var_48], 2
  3. .text:BFF786AA 148 mov     [ebp+var_44], 0
  4. .text:BFF786B1 148 mov     [ebp+var_40], 0FFFFFFFFh
  5. .text:BFF786B8 148 jmp     short loc_BFF7870F


Если предположить, что именно здесь заполняется структура EXCEPTION_RECORD, то дальше, по индукции совместно с логикой - перед вызовом колбека BFF78344 вызывается сначала колбек BFF78583, который переводит номер исключения 0xD в 0xC0000005 и принимает решение, как дальше поступить.

На это также указывает

Code:
  1. .text:BFF78724 148 lea     ebx, [edi-14h]
  2. .text:BFF78727 148 mov     eax, [esi+20h]
  3. .text:BFF7872A 148 mov     ecx, [ebp+arg_0]; код исключения 0xD
  4. .text:BFF7872D 148 mov     edx, [ebp+var_8]; pContext
  5. .text:BFF78730 148 mov     [ebp+var_5C], eax
  6. .text:BFF78733 148 mov     [ebp+var_60], ecx
  7. .text:BFF78736 148 push    0
  8. .text:BFF78738 14C lea     eax, [ebp+var_6C]; AddrFrom
  9. .text:BFF7873B 14C push    14h; length
  10. .text:BFF7873D 150 mov     [ebp+var_64], edi - pExceptionRecord
  11. .text:BFF78740 150 push    ebx; AddrTo
  12. .text:BFF78741 154 mov     [ebp+var_68], edx; pContext
  13. .text:BFF78744 154 mov     [ebp+var_6C], 0FFECBAD7h; совсем не адрес возврата
  14. .text:BFF7874B 154 push    eax
  15. .text:BFF7874C 158 call    sub_BFFBB846; ядерный CopyMem через VxD
  16. .text:BFF78751 158 add     esp, 10h
  17. .text:BFF78754 148 test    eax, eax
  18. .text:BFF78756 148 jz      short loc_BFF787


Далее BFF78344 заносится в некую структуру по смещению 0x24. На эту структуру указывает esi, адрес берется из второго параметра (первый - номер исключения). Ну а вот вызывается уже из ядра как минимум второй... Значит более ранняя точка входа - BFF78583.

А с адресом возврата в ядро промашка вышла, вообще-то сегмент стека вместе с уазателем переключаются каждый раз при входе в ядро/выходе из ядра.

Кстати FREQASM занимает адреса от 0xBFF61000 до 0xBFF69000. Так что я бы поставил бряк на 0xBFF78583. Для STATUS_SINGLE_STEP(#DB) код исключения 1 и для STATUS_BREAKPOINT(#BP) - 3. Вперед!!!...

-----
IZ.RU




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 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.150.01
Статус: Участник
vx

Создано: 26 июня 2010 16:32
· Личное сообщение · #8

> Такой бряк намертво подвешивает систему!
9x это мёртвая обогая ось, которая давно никем не юзается. NT это абсолютно иная архитектура. Иди Рихтера читай.



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 26 июня 2010 19:28
· Личное сообщение · #9

Факт пропадания патчей пока поставлен под сомнение. Стабильный регион найден. Исследования продолжаются




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 27 июня 2010 09:14
· Личное сообщение · #10

патчи нередко пропадают!
Помню, у меня 98 SE стояла, с 32 мб озу. При работе WinRar ось часто выпадала с ошибками в kernel32. Дело было в том, что FUNCTION_THUNKS по адресам 0x800XXXXX куда-то терялись. Т.е. было похоже на ошибку подкачки. Добавил еще 128 мб, такие ошибки перестали иметь место... Возможно, в 98-ой, чтобы быстрей ее выпустить и отделаться от нее, решили одну из проблем перезаписью секций прям из либ...

-----
IZ.RU





Ранг: 681.5 (! !), 405thx
Активность: 0.420.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.090
Статус: Участник

Создано: 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.480.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.130
Статус: Участник
sysenter

Создано: 03 июля 2010 03:44
· Личное сообщение · #14

98-я неплохая окошечная оболочка "над железом" когда-то была.

-----
продавец резиновых утёнков





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 03 июля 2010 08:18
· Личное сообщение · #15

Кто это сказал, что sidt не выполняется на НТ? Нормально там всё выполняется, только чо ты с этим адресом будешь делать из ринг3, непонятно.



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 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.090
Статус: Участник

Создано: 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.480.37
Статус: Участник

Создано: 04 июля 2010 08:41 · Поправил: DenCoder
· Личное сообщение · #18

Кто это сказал, что sidt не выполняется на НТ?

Я имел ввиду это только чо ты с этим адресом будешь делать из ринг3. Хотя можно физическую память открыть...

Прошу прощения за неточность, только не бейте :D

0xy

Code:
  1. 800AE000 10 92 28 00 00 8E 00 C0 20 92 28 00 00 8E 00 C0 
  2. 800AE010 5C C6 28 00 00 8E 00 C0 30 92 28 00 00 EE 00 C0


отсюда int1 - 0028:C0009220. int3 - 0028:C0009230

Судя по промежуткам между адресами обработчиков, там должны быть джампы, выровнены по 16 бит...

Код аналогичный, только в ntdll:

Code:
  1. .text:7C903282     ExecuteHandler2@20 proc near ; CODE XREF: .text:7C903275p
  2. .text:7C903282
  3. .text:7C903282     arg_0= dword ptr  8
  4. .text:7C903282     arg_4= dword ptr  0Ch
  5. .text:7C903282     arg_8= dword ptr  10h
  6. .text:7C903282     arg_C= dword ptr  14h
  7. .text:7C903282     arg_10= dword ptr  18h
  8. .text:7C903282
  9. .text:7C903282 000 push    ebp
  10. .text:7C903283 004 mov     ebp, esp
  11. .text:7C903285 004 push    [ebp+arg_4]
  12. .text:7C903288 008 push    edx
  13. .text:7C903289 00C push    large dword ptr fs:0
  14. .text:7C903290 010 mov     large fs:0, esp
  15. .text:7C903297 010 push    [ebp+arg_C]
  16. .text:7C90329A 014 push    [ebp+arg_8]
  17. .text:7C90329D 018 push    [ebp+arg_4]
  18. .text:7C9032A0 01C push    [ebp+arg_0]
  19. .text:7C9032A3 020 mov     ecx, [ebp+arg_10]
  20. .text:7C9032A6 020 call    ecx
  21. .text:7C9032A8 008 mov     esp, large fs:0
  22. .text:7C9032AF 008 pop     large dword ptr fs:0
  23. .text:7C9032B6 004 mov     esp, ebp
  24. .text:7C9032B8 004 pop     ebp
  25. .text:7C9032B9 000 retn    14h
  26. .text:7C9032B9     ExecuteHandler2@20 endp


-----
IZ.RU




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 04 июля 2010 10:53
· Личное сообщение · #19

DenCoder
> только чо ты с этим адресом будешь делать из ринг3.
На сколько помню в 9x доступ к IDT открыт из U-mode, впрочем разницы нет если не малварь пишите. Из ядра всё доступно.



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 04 июля 2010 18:44
· Личное сообщение · #20

DenCoder
Из какой конкертно винды этот код? И есть ли возможность посмотреть в других версиях NT (желательно в 4-й и 7-й)?

PS
А отличия таки есть: call [ebp+18]->mov ecx,[ebp+18]; call ecx :




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.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.150.01
Статус: Участник
vx

Создано: 04 июля 2010 19:23
· Личное сообщение · #22

0xy
Что вы делаете не понятно. Причём здесь дескрипторные таблицы, ядро и пр.
Вам нужно прогрузить в контексте целевого потока отладочные регистры. Это можно сделать вручную(NtSetContextThread, loc. NtContinue), либо через механизм исключений(он локальный).




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.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.090
Статус: Участник

Создано: 04 июля 2010 23:50
· Личное сообщение · #24

Причём здесь дескрипторные таблицы, ядро и пр
Пока ни причем, ибо я пошел путем перехвата Call SEH. Но инфа полезная.

Только вот почему не получилось подсунуть свой обработчик?
Да уже получилось. Оказалось, что глобальный регион "без капризов" успешно создает VirtualAlloc

DenCoder
есть KERNEL32_9 с функцией 0x2A0015
Шаман! Можешь подкинуть чуток курева на тему функций #9?
PS
Походу вопрос. Это нормально, что его (#9) не находит GetProcAddress?

Вот еще на такие мелочи внимание обращать...А в ExecuteHandler2 попадаем из почти аналогичной ExecuteHandler, ну и что теперь?
Мне все равно, откуда попадаем. Важно лишь знать комманды процедуры "Call SEH", которые затрет мой джамп, дабы не перерезать комманду пополам.




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 05 июля 2010 00:04
· Личное сообщение · #25

0xy
www.exelab.ru/f/action=vthread&forum=6&topic=13920

-----
Research For Food




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 05 июля 2010 06:44 · Поправил: Clerk
· Личное сообщение · #26

DenCoder
Ну апи соответствующая должна быть.
> Важно лишь знать комманды процедуры "Call SEH"
Дизасм длин используйте. Вобще почему не поставите нормальную ось с NT ядром ?
-
Кстате я так понимаю что пользовательские отладчики в 9x не работают ?
Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BP ?




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 05 июля 2010 12:10 · Поправил: DenCoder
· Личное сообщение · #27

Clerk
Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BP ?

Нет, остальные не отвалятся. Я помню, что не во всей kernel32, но в какой-то части бряки вообще в ней не работают.

0xy
Можешь подкинуть чуток курева на тему функций #9?

Code:
  1.  Для SetThreadContext
  2. .text:BFF85236 010 push    [ebp+arg_4] - указатель на CONTEXT
  3. .text:BFF85239 014 push    ecx - преобразованный дескриптор потока (в алгоритме ну ногу сломишь)
  4. хендл ринг3 преобразуется  в хендл ринг0, похоже
  5. .text:BFF8523A 018 push    2A0015h - функция ядра, 2A - какой-то VxD-модуль, 15 - функция
  6. .text:BFF8523F 01C call    KERNEL32_9


KERNEL32_1...KERNEL32_9 имеют один и тот же адрес, и передают управление через
Code:
  1. call    fword ptr cs:byte_BFFBB734

4 байта адрес, 2 байта селектор. В eax - номер функции, аналогично как в ntdll. Интересовался давно, что там за адрес, запомнил только, что по нему int 30h. Дальше исследования ядра win98 поставили меня тогда в тупик, потому как не дошел до места передачи управления в другой VxD, наверное слишком увлекся другими ветками кодами с вводом/выводом.

2A001Dh - как ядровый RtlEnterCriticalSection
2A001Ch - как ядровый RtlLeaveCriticalSection
только не уверен... может еще переключение режимов...

Code:
  1. // Walking VxD chain shows that these are the VxDs that provide
  2. // Win32 services
  3. #define VMM_ID          0x0001             // 41 services
  4. #define REBOOT_ID       0x0009             // 2
  5. #define VNETBIOS_ID     0x0014             // 2
  6. #define VWIN32_ID       0x002A             // 79
  7. #define VCOMM_ID        0x002B             // 27
  8. #define VCOND_ID        0x0038             // 53 -- Virtual CON (Console)
  9.  
  10. // two important VWIN32 services
  11. #define VWIN32_INT21_CALL       0x2A0010
  12. #define VWIN32_INT31_CALL       0x2A0029
  13. #define DosCall(eax, ecx)       VxDCall(VWIN32_INT21_CALL, (eax), (ecx))
  14. #define DPMICall(eax, ecx)      VxDCall(VWIN32_INT31_CALL, (eax), (ecx))
  15.  
  16. // found these by examining ADVAPI32.DLL and REGSERV.EXE
  17. // REGSERV.EXE calls these directly for remote registry services
  18. #define RegOpenKeyEx_CALL                   0x10011
  19. #define RegCreatKeyA_CALL                   0x10012
  20. #define RegCloseKey_CALL                    0x10013
  21. #define RegDeleteKey_CALL                   0x10014
  22. #define RegSetValueA_CALL                   0x10015
  23. #define RegDeleteValueA_CALL                0x10016
  24. #define RegQueryValueA_CALL                 0x10017
  25. #define RegEnumKeyA_CALL                    0x10018
  26. #define RegQueryValueEx_CALL                0x1001A
  27. #define RegSetValueExA_CALL                 0x1001B
  28. #define RegFlushKey_CALL                    0x1001C
  29. #define RegLoadKeyA_CALL                    0x10021
  30. #define RegUnloadKeyA_CALL                  0x10022
  31. #define RegSaveKeyA_CALL                    0x10023
  32. #define RegRemapPreDefKey_CALL              0x10024
  33. #define RegQueryMultipleValuesA_CALL        0x10026
  34. #define RegReplaceKeyA_CALL                 0x10027


Вот здесь vx.netlux.org/lib/static/vdat/tumisc71.htm нашел более полнее.

Это нормально, что его (#9) не находит GetProcAddress?
Неа, ненормально. Должна находиться. Глянул немного GetProcAddress - поиск функи по ординалу там предусмотрен. Надеюсь не строку #9 передаешь? :D

-----
IZ.RU





Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 05 июля 2010 21:49
· Личное сообщение · #28

Ида знает все VxDCall'ы, если ввести в ней 0xCD, 0x20, xx xx yy yy (int 20h). int 30h похоже тоже самое, только вызов из юзермода и что за сервис - в eax.

-----
IZ.RU




Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 05 июля 2010 23:09 · Поправил: 0xy
· Личное сообщение · #29

Clerk
Кстате я так понимаю что пользовательские отладчики в 9x не работают ?
Работают, но с учетом этой оговорки:
Если поставить брейк в одном процессе на kernel32, то остальные отвалятся с #BP
Тут часто (но не всегда!) выручают железные бряки.

DenCoder
Я помню, что не во всей kernel32, но в какой-то части бряки вообще в ней не работают.
Работают везде, но не везде нормально перехватываются отладчиком.

.text:BFF8523A 018 push 2A0015h - функция ядра, 2A - какой-то VxD-модуль, 15 - функция
А существует какой-нить справочник по этим функциям?



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 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.480.37
Статус: Участник

Создано: 06 июля 2010 12:24 · Поправил: DenCoder
· Личное сообщение · #31

#97 - это вход в какой-то режим. Я думал, что это критическая секция... трассировку лучше продолжить после #98.

-----
IZ.RU



<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Как поставить железный бряк? (НЕ в Ольге, естесвенно :]
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати