Посл.ответ |
Сообщение |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 18 июня 2010 02:56 · Личное сообщение · #1
Речь о лодыре или инлайне: брякнуть пакованую прогу в нужном месте и пропатчить. Вопросы: 1) как вообще ставятся железные бряки (on execution)? 2) как получить управление по бряку?
| Сообщение посчитали полезным: |
|
Ранг: 355.4 (мудрец), 55thx Активность: 0.32↘0 Статус: Uploader 5KRT
|
Создано: 18 июня 2010 03:39 · Личное сообщение · #2
железные бряки ставятся через регистр Drx
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 18 июня 2010 06:18 · Поправил: 0xy · Личное сообщение · #3
А какой будет код исключения у железного бряка? И можно ли его как-то поймать ВНУТРИ ПРОЦЕССА (если прот поставил свой SEH)?
| Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 18 июня 2010 06:53 · Личное сообщение · #4
> А какой будет код исключения у железного бряка? STATUS_SINGLE_STEP(#DB) и STATUS_BREAKPOINT(#BP). > можно ли его как-то поймать ВНУТРИ ПРОЦЕССА (если прот поставил свой SEH)? SEH локальный для потока, при срабатывании останова в каждом потоке вызывается свой SEH. VEH глобальный, вызывается из всех потоков, но его удалённо нельзя зарегать.
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 18 июня 2010 08:21 · Личное сообщение · #5
На васме статья была www.wasm.ru/article.php?article=debugreg
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 19 июня 2010 09:09 · Поправил: 0xy · Личное сообщение · #6
Если я правильно понял, VEH ВСЕГДА получает управление раньше, чем цепь SEH (даже если звенья SEH добавлялись после установки VEH)?
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 19 июня 2010 09:22 · Личное сообщение · #7
Всегда. Там механизм другой. Сначала парсится весь вех, а уже потом сех.
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 19 июня 2010 20:11 · Поправил: DenCoder · Личное сообщение · #8
Clerk пишет: VEH глобальный, вызывается из всех потоков, но его удалённо нельзя зарегать.Почему нельзя? Можно!!! Для этого есть CreateRemoteThread или просто VirtualAllocEx/WriteProcessMemory с хуком или бряком на EP, если регать со старта, или на что-то другое, если потом...
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 19 июня 2010 20:55 · Личное сообщение · #9
DenCoderну-ну
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 20 июня 2010 02:44 · Личное сообщение · #10
Да, с VEH вроде все просто (по крайней мере, если прот его не юзает). Только в 98-й Винде VEH нету Так что придется мне париться с SEH...
| Сообщение посчитали полезным: |
Ранг: 237.0 (наставник), 20thx Активность: 0.13↘0 Статус: Участник sysenter
|
Создано: 20 июня 2010 02:50 · Поправил: HiEndsoft · Личное сообщение · #11
0xy пишет: Только в 98-й Винде VEH нету в 98 винде насколько помниться можно практически все с учетом выполнения привелигированных для NT-линеек команд /интеловские маны нужно смотреть/. (Мы юзали in/out и т.п. для прямого управления оборудованием когда-то.)
----- продавец резиновых утёнков | Сообщение посчитали полезным: |
Ранг: 255.8 (наставник), 19thx Активность: 0.15↘0.01 Статус: Участник vx
|
Создано: 20 июня 2010 11:46 · Личное сообщение · #12
DenCoderСказал удалённо. Вы не можите получить куки из контекста другого процесса. Сосредоточтесь.
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 20 июня 2010 15:55 · Личное сообщение · #13
ClerkЕсли под "удаленно" Вы имели в виду с другой машины, то речь вообще об этом не шла. > Вы не можите получить куки из контекста другого процесса Все-таки из контекста другого процесса? Так вот об этом я и писал... Только при чем здесь куки?
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 22 июня 2010 13:10 · Поправил: 0xy · Личное сообщение · #14
Да, похоже, через SEH свой бряк не перехватить (идея была отслеживать установку SEH-обработчиков и каждый раз впихивать свой, но ни чего хорошего из этого не вышло). Так что для 98-й я вижу единственный вариант: дебуг-лодырь. Или все же есть другие варианты (перехвата бряка внутри процесса под 98-й?)
| Сообщение посчитали полезным: |
Ранг: 355.4 (мудрец), 55thx Активность: 0.32↘0 Статус: Uploader 5KRT
|
Создано: 22 июня 2010 14:54 · Личное сообщение · #15
Для чего нужна поддержка 98винды?
----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes | Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 22 июня 2010 15:57 · Поправил: DenCoder · Личное сообщение · #16
0xy> Да, похоже, через SEH свой бряк не перехватить Я бы с этим поспорил. Под 98-ой виндой можно сделать так: 1) CreateProcess с флагом CREATE_SUSPENDED. 2) GetThreadContext, eax будет указывать на Entry Point программы (под XP точно, на 98 можно проверить, если нет, то можно вычислить из PE). 3) VirtualAllocEx, выделяющий память в контексте другого процесса, работает, начиная с 2К, под 98 должен быть другой способ. Про секции под 98 ничего почти не знаю... Можно на крайний случай использовать конец страницы для записи своего кода. Делал так, когда 98 юзал - работает. 4) WriteProcessMemory, пишем код установки своего SEH в выбранную память 5) WriteProcessMemory по адресу EP джамп на код 6) Цикл FlushInstructionCache на EP, пока байт не совпадет с E9. Заметил эту особенность поведения спящих процессов на XP - кеш у спящих процессов не всегда сразу сбрасывается, даже если функция возвращает TRUE. 7) ResumeThread В коде установки SEH должно быть понятно, что нужно делать. Проблема только, что обработчик нужного Вам исключения может поставиться другой, но это, думаю, можно решить установкой хард бряка на доступ к fs:[0], обработать и записать туда своего обработчика. Может фантастично звучит. Установку совего SEH еще не пробовал, только собираюсь...
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 22 июня 2010 16:55 · Личное сообщение · #17
DenCoderПроблема только, что обработчик нужного Вам исключения может поставиться другой, но это, думаю, можно решить установкой хард бряка на доступ к fs:[0]Вот именно из этого ни чего хорошего не получилось.
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 22 июня 2010 17:24 · Личное сообщение · #18
Онанизмом попахивает каким-то, с этими 9х виндами... Насколько я помню, в 9х виндах изменение системной либы в 1 процессе приводило к изменению во всех процессах. Погляди, куда приходят исключения (в NT-KiUserExceptionDispatcher в ntdll.dll) да и перезапиши хуком хыть прям у себя, код хука в конец секции впиши, проверяй там пид да делай, чо надо.
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 22 июня 2010 17:51 · Личное сообщение · #19
ArcherО, точно, это мысль...
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 22 июня 2010 18:25 · Личное сообщение · #20
ArcherNT-KiUserExceptionDispatcher в ntdll.dllТы всерьез думаешь, что в 98-й токое есть?
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 22 июня 2010 19:48 · Личное сообщение · #21
А ресёч провести никак? Только не говори, что в IDT прописаны адреса из ринг3.
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 23 июня 2010 14:37 · Личное сообщение · #22
Я не на столько хорошо знаю матчасть Что есть IDT в Protect Mode? Всё тот же 1-й К физ. памяти, или?? В любом случае, я х.з. как заглянуть туда из Ring3.
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 23 июня 2010 17:35 · Личное сообщение · #23
Ну хотя бы из сеха по стеку подняться выше и поглядеть, из какой библиотеки он вызывается, можешь?
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 24 июня 2010 00:25 · Поправил: 0xy · Личное сообщение · #24
Вызов идет из kernel32 (секция FREQASM). Но перехватывать его там опасно, ибо в 98-й это ГЛОБАЛЬНЫЙ регион, т.е. его модификация повлияет на все процессы!..
| Сообщение посчитали полезным: |
Ранг: 324.3 (мудрец), 222thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 24 июня 2010 03:39 · Поправил: DenCoder · Личное сообщение · #25
Раз такие дела, то где-то даже немного проще... где-то немного сложнее (из-за Win98)... В программе
Нужно определить 5 переменных ProcessId - PID процесса, у котором нужно перехватить управление в kernel32 SizeOfInstructions - размер замещенных инструкций SizeOfAsmCode - размер кода обработчика хука KernelHookAddr - адрес замещаемых инструкций pAsmCode - указатель на код обработчика в контексте нашей программы для копирования в нужное место Шаблон кода обработчика примерно такой:
В установке хука адреса Entry, ExecuteReplacedInstruction, JmpBack должны быть пересчитаны. Имена их совпадают с именами в коде обработчика для большей наглядности. Адрес JmpBack зависит от размера замещенных инструкций, здесь приведен код для 5 байт. Для большего размера потребуется дополнительно что-то вроде
а также коррекция смещения в условном переходе. (Это уж чего-то лень стало дописать ) Написал на коленке, но должно работать. Был рад помочь.
----- IZ.RU | Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 24 июня 2010 16:59 · Личное сообщение · #26
Я и писал, что перехватывать надо в глобальной памяти и проверять ПИД. Предыдущие то посты читаешь, не? И лучше не непосредственно место вызова сеха, а по возможности подняться повыше до места вызова коллбека в ринг3 из ринг0. Хотя если для себя и для одной ОС, то 1 хрен.
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 24 июня 2010 19:25 · Личное сообщение · #27
ArcherИ лучше не непосредственно место вызова сеха, а по возможности подняться повыше до места вызова коллбека в ринг3 из ринг0Чет я не уловил, для чего это нужно??? Хочешь сказать, что эта точка будет одинакова для всей линейки Win 9x? А подняться тяжело, ибо бряки там не работают PS Посты я читаю. Но пока все больше склоняюсь к тому, что вариант с дебаг-лодырем для 9x и с VEH для NT намного проще... PPS А в Win2k есть VEH?
| Сообщение посчитали полезным: |
Ранг: 101.0 (ветеран), 344thx Активность: 1.15↘0 Статус: Участник
|
Создано: 24 июня 2010 19:44 · Личное сообщение · #28
0xy пишет: А в Win2k есть VEH? нет, мсдн для этого можно было почитать, особенно статью Мэтта Питрека
| Сообщение посчитали полезным: |
Ранг: 218.5 (наставник), 2thx Активность: 0.09↘0 Статус: Участник
|
Создано: 24 июня 2010 20:39 · Поправил: 0xy · Личное сообщение · #29
ArcherОчень похоже, что из ядра прыгаем сюда: BFF78344 /$ 55 PUSH EBP BFF78345 |. A1 F0BCFBBF MOV EAX,DWORD PTR DS:[BFFBBCF0] BFF7834A |. 8BEC MOV EBP,ESP BFF7834C |. 83EC 6C SUB ESP,6C BFF7834F |. 53 PUSH EBX BFF78350 |. 56 PUSH ESI BFF78351 |. 57 PUSH EDI BFF78352 |. 8B30 MOV ESI,DWORD PTR DS:[EAX] BFF78354 |. 837D 10 01 CMP DWORD PTR SS:[EBP+10],1 BFF78358 |. 8B4E 38 MOV ECX,DWORD PTR DS:[ESI+38] BFF7835B |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX BFF7835E |. 75 0A JNZ SHORT BFF7836A BFF78360 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] BFF78363 |. 80A0 C1000000>AND BYTE PTR DS:[EAX+C1],0FE BFF7836A |> FF75 08 PUSH DWORD PTR SS:[EBP+8] ; /Arg4 BFF7836D |. 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C] ; | BFF78370 |. 57 PUSH EDI ; |Arg3 BFF78371 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |Arg2 BFF78374 |. 6A 01 PUSH 1 ; |Arg1 = 00000001 BFF78376 |. E8 CA070000 CALL BFF78B45 ; \KERNEL32.BFF78B45 BFF7837B |. 85C0 TEST EAX,EAX BFF7837D |. 74 08 JE SHORT BFF78387 BFF7837F |. FF75 08 PUSH DWORD PTR SS:[EBP+8] BFF78382 |. E8 53E3FEFF CALL BFF666DA BFF78387 |> 803D 24BDFBBF>CMP BYTE PTR DS:[BFFBBD24],0 BFF7838E |. 74 2A JE SHORT BFF783BA BFF78390 |. 837D 10 FF CMP DWORD PTR SS:[EBP+10],-1 BFF78394 |. 74 24 JE SHORT BFF783BA BFF78396 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] BFF78399 |. E8 809DFEFF CALL BFF6211E BFF7839E |. 85C0 TEST EAX,EAX BFF783A0 |. 74 18 JE SHORT BFF783BA BFF783A2 |. 837D 10 01 CMP DWORD PTR SS:[EBP+10],1 BFF783A6 |. 0F84 B5010000 JE BFF78561 BFF783AC |. 837D 10 03 CMP DWORD PTR SS:[EBP+10],3 BFF783B0 |. 0F84 AB010000 JE BFF78561 BFF783B6 |. 804E 4C 02 OR BYTE PTR DS:[ESI+4C],2 BFF783BA |> A1 F8BCFBBF MOV EAX,DWORD PTR DS:[BFFBBCF8] BFF783BF |. 8B08 MOV ECX,DWORD PTR DS:[EAX] BFF783C1 |. 8379 1C 01 CMP DWORD PTR DS:[ECX+1C],1 BFF783C5 |. 1BC0 SBB EAX,EAX BFF783C7 |. 40 INC EAX BFF783C8 |. 8945 EC MOV DWORD PTR SS:[EBP-14],EAX BFF783CB |. E8 94E2FEFF CALL BFF66664 BFF783D0 |. 83F8 FF CMP EAX,-1 BFF783D3 |. 8BD8 MOV EBX,EAX BFF783D5 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0 BFF783DC |. 0F84 3B010000 JE BFF7851D BFF783E2 |> C745 F4 00000>/MOV DWORD PTR SS:[EBP-C],0 BFF783E9 |. 813F 270000C0 |CMP DWORD PTR DS:[EDI],C0000027 BFF783EF |. 74 39 |JE SHORT BFF7842A BFF783F1 |. 395E 0C |CMP DWORD PTR DS:[ESI+C],EBX BFF783F4 |. 72 05 |JB SHORT BFF783FB BFF783F6 |. 395E 10 |CMP DWORD PTR DS:[ESI+10],EBX BFF783F9 |. 76 2F |JBE SHORT BFF7842A BFF783FB |> 8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8] BFF783FE |. 8B40 54 |MOV EAX,DWORD PTR DS:[EAX+54] BFF78401 |. 85C0 |TEST EAX,EAX BFF78403 |. 0F84 F3000000 |JE BFF784FC BFF78409 |. 8B40 14 |MOV EAX,DWORD PTR DS:[EAX+14] BFF7840C |. 85C0 |TEST EAX,EAX BFF7840E |. 0F84 E8000000 |JE BFF784FC BFF78414 |. 53 |PUSH EBX BFF78415 |. 50 |PUSH EAX BFF78416 |. E8 7368FFFF |CALL BFF6EC8E BFF7841B |. 85C0 |TEST EAX,EAX BFF7841D |. 0F84 D9000000 |JE BFF784FC BFF78423 |. C745 F4 01000>|MOV DWORD PTR SS:[EBP-C],1 BFF7842A |> 837D EC 00 |CMP DWORD PTR SS:[EBP-14],0 BFF7842E |. 74 19 |JE SHORT BFF78449 BFF78430 |. 8B43 04 |MOV EAX,DWORD PTR DS:[EBX+4] BFF78433 |. 3D 00000080 |CMP EAX,80000000 BFF78438 |. 0F82 A5000000 |JB BFF784E3 BFF7843E |. 3D FFFFFFBF |CMP EAX,BFFFFFFF BFF78443 |. 0F87 9A000000 |JA BFF784E3 BFF78449 |> FF73 04 |PUSH DWORD PTR DS:[EBX+4] BFF7844C |. 8D4D F0 |LEA ECX,DWORD PTR SS:[EBP-10] BFF7844F |. 51 |PUSH ECX BFF78450 |. FF75 08 |PUSH DWORD PTR SS:[EBP+8] BFF78453 |. 53 |PUSH EBX BFF78454 |. 57 |PUSH EDI BFF78455 |. E8 97E3FEFF |CALL BFF667F1 Call (Call SEH) BFF7845A |. 83C4 14 |ADD ESP,14 BFF7845D |. 395D FC |CMP DWORD PTR SS:[EBP-4],EBX BFF78460 |. 75 0B |JNZ SHORT BFF7846D BFF78462 |. 8067 04 EF |AND BYTE PTR DS:[EDI+4],0EF BFF78466 |. C745 FC 00000>|MOV DWORD PTR SS:[EBP-4],0 BFF7846D |> 85C0 |TEST EAX,EAX ; Switch (cases 0..2) BFF7846F |. 74 2D |JE SHORT BFF7849E BFF78471 |. 83F8 01 |CMP EAX,1 BFF78474 |. 74 6D |JE SHORT BFF784E3 BFF78476 |. 83F8 02 |CMP EAX,2 BFF78479 |. 74 56 |JE SHORT BFF784D1 BFF7847B |. 8D45 94 |LEA EAX,DWORD PTR SS:[EBP-6C] ; Default case of switch BFF7846D BFF7847E |. 897D 9C |MOV DWORD PTR SS:[EBP-64],EDI BFF78481 |. C745 94 26000>|MOV DWORD PTR SS:[EBP-6C],C0000026 BFF78488 |. C745 98 01000>|MOV DWORD PTR SS:[EBP-68],1 BFF7848F |. C745 A4 00000>|MOV DWORD PTR SS:[EBP-5C],0 BFF78496 |. 50 |PUSH EAX BFF78497 |. E8 51E2FEFF |CALL BFF666ED BFF7849C |. EB 45 |JMP SHORT BFF784E3 BFF7849E |> F647 04 01 |TEST BYTE PTR DS:[EDI+4],1 ; Case 0 of switch BFF7846D BFF784A2 |. 74 23 |JE SHORT BFF784C7 BFF784A4 |. 8D45 94 |LEA EAX,DWORD PTR SS:[EBP-6C] BFF784A7 |. 897D 9C |MOV DWORD PTR SS:[EBP-64],EDI BFF784AA |. C745 94 25000>|MOV DWORD PTR SS:[EBP-6C],C0000025 BFF784B1 |. C745 98 01000>|MOV DWORD PTR SS:[EBP-68],1 BFF784B8 |. C745 A4 00000>|MOV DWORD PTR SS:[EBP-5C],0 BFF784BF |. 50 |PUSH EAX BFF784C0 |. E8 28E2FEFF |CALL BFF666ED BFF784C5 |. EB 1C |JMP SHORT BFF784E3 BFF784C7 |> FF75 08 |PUSH DWORD PTR SS:[EBP+8] BFF784CA |. E8 0BE2FEFF |CALL BFF666DA BFF784CF |. EB 12 |JMP SHORT BFF784E3 BFF784D1 |> 804F 04 10 |OR BYTE PTR DS:[EDI+4],10 ; Case 2 of switch BFF7846D BFF784D5 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] BFF784D8 |. 3B45 F0 |CMP EAX,DWORD PTR SS:[EBP-10] BFF784DB |. 73 06 |JNB SHORT BFF784E3 BFF784DD |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10] BFF784E0 |. 8945 FC |MOV DWORD PTR SS:[EBP-4],EAX BFF784E3 |> 8B03 |MOV EAX,DWORD PTR DS:[EBX] ; Case 1 of switch BFF7846D BFF784E5 |. 3BD8 |CMP EBX,EAX BFF784E7 |. 72 06 |JB SHORT BFF784EF BFF784E9 |. 837D F4 00 |CMP DWORD PTR SS:[EBP-C],0 BFF784ED |. 74 0D |JE SHORT BFF784FC BFF784EF |> 83F8 FF |CMP EAX,-1 BFF784F2 |. 8BD8 |MOV EBX,EAX BFF784F4 |.^ 0F85 E8FEFFFF \JNZ BFF783E2 BFF784FA |. EB 21 JMP SHORT BFF7851D BFF784FC |> 8D4D 94 LEA ECX,DWORD PTR SS:[EBP-6C] BFF784FF |. 897D 9C MOV DWORD PTR SS:[EBP-64],EDI BFF78502 |. C745 94 27000>MOV DWORD PTR SS:[EBP-6C],C0000027 BFF78509 |. C745 98 01000>MOV DWORD PTR SS:[EBP-68],1 BFF78510 |. C745 A4 00000>MOV DWORD PTR SS:[EBP-5C],0 BFF78517 |. 51 PUSH ECX BFF78518 |. E8 D0E1FEFF CALL BFF666ED BFF7851D |> 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] BFF78520 |. 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C] BFF78523 |. 51 PUSH ECX ; /pExceptionInfo BFF78524 |. 897D E4 MOV DWORD PTR SS:[EBP-1C],EDI ; | BFF78527 |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX ; | BFF7852A |. E8 515C0100 CALL UnhandledExceptionFilter ; \UnhandledExceptionFilter BFF7852F |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; /Arg4 BFF78532 |. 57 PUSH EDI ; |Arg3 BFF78533 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |Arg2 BFF78536 |. 6A 00 PUSH 0 ; |Arg1 = 00000000 BFF78538 |. E8 08060000 CALL BFF78B45 ; \KERNEL32.BFF78B45 BFF7853D |. 85C0 TEST EAX,EAX BFF7853F |. 74 08 JE SHORT BFF78549 BFF78541 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] BFF78544 |. E8 91E1FEFF CALL BFF666DA BFF78549 |> F646 4C 02 TEST BYTE PTR DS:[ESI+4C],2 BFF7854D |. 75 0E JNZ SHORT BFF7855D BFF7854F |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] BFF78552 |. 6A FF PUSH -1 BFF78554 |. 8048 23 08 OR BYTE PTR DS:[EAX+23],8 BFF78558 |. E8 F7500000 CALL BFF7D654 BFF7855D |> 8066 4C FD AND BYTE PTR DS:[ESI+4C],0FD BFF78561 |> FF75 08 PUSH DWORD PTR SS:[EBP+8] BFF78564 |. FF75 14 PUSH DWORD PTR SS:[EBP+14] BFF78567 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] BFF7856A |. 68 00000200 PUSH 20000 BFF7856F |. E8 608EFEFF CALL #8 BFF78574 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] BFF78577 |. E8 5EE1FEFF CALL BFF666DA BFF7857C |. 5F POP EDI BFF7857D |. 5E POP ESI BFF7857E |. 5B POP EBX BFF7857F |. 8BE5 MOV ESP,EBP BFF78581 |. 5D POP EBP BFF78582 \. C3 RET
BFF667F1 $ BA 2D68F6BF MOV EDX,BFF6682D BFF667F6 . EB 05 JMP SHORT BFF667FD BFF667F8 /$ BA 5268F6BF MOV EDX,BFF66852 BFF667FD |> 55 PUSH EBP BFF667FE |. 8BEC MOV EBP,ESP BFF66800 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] BFF66803 |. 52 PUSH EDX BFF66804 |. 64:FF35 00000>PUSH DWORD PTR FS:[0] BFF6680B |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP BFF66812 |. FF75 14 PUSH DWORD PTR SS:[EBP+14] BFF66815 |. FF75 10 PUSH DWORD PTR SS:[EBP+10] BFF66818 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] BFF6681B |. FF75 08 PUSH DWORD PTR SS:[EBP+8] BFF6681E |. FF55 18 CALL DWORD PTR SS:[EBP+18] ; Call SEH BFF66821 |. 83C4 10 ADD ESP,10 BFF66824 |. 64:8F05 00000>POP DWORD PTR FS:[0] BFF6682B |. C9 LEAVE BFF6682C \. C3 RET
Но, повторюсь: не пойму, зачем это нам?
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 24 июня 2010 20:40 · Личное сообщение · #30
Ну если в НТ эта точка одинакова, возможно, в 9х тоже. Но гарантировать не могу, когда я начал ревёрсить, у меня уже не стояла 9х. И сейчас не стоит, иначе бы уже 33 раза проверил. Подняться можно, глядя в стек, бряки не нужны. Ну делай через дебаг, не буду больше донимать.
| Сообщение посчитали полезным: |