Сейчас на форуме: YDS, _MBK_, user99 (+8 невидимых)

 eXeL@B —› Основной форум —› Про Debug API
Посл.ответ Сообщение


Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2005 13:52
· Личное сообщение · #1

Всем привет!

Заломал я прожкуу запротекченную армой и теперь делаю патчик-лодырь для нее.
И вот такая коллизия:
Мой лодырь садится на прогу как отладчик (CreateProcess, lpProgName, ... DEBUG_PROCESS ....)
и все идет нормально до тех пор пока арма сама не выполняет DebugActiveProcess, тут облом-то и
настает - EAX=0 , ну и дальше зависалово.

Внимание вопрос: Могут ли два разных процесса(мой и армовский) отлаживать третий процесс
одновременно, используя при этом Debug API. Или права на отладку есть только у моего процесса,
а армовский бреется ?



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 25 ноября 2005 14:09 · Поправил: Step
· Личное сообщение · #2

1) Два отладчика на один процесс это перебор. Представь себе: что ОС должна в таком случае делать?
2) Лоадер и отладчик это не синоним. У лоадера в основном задача не вести отладку, а исправлять байты.
3) Прочитай инфу по лоадерах. На форуме есть много ссылок.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2005 14:14
· Личное сообщение · #3

2Step
По пункту 1: Это есть принципиальное ограничение Das Windows ????
Я в msdn ни слова не встретил о таком ограничении.

По пункту 2: Чтобы добраться до места которое нужно отпатчить, нужно сперва дотрейситься
до нужного места, для этого и юзаю debug api

Пункт 3: ну за 1,5 года перебрал архив, вроде такого не видал




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 ноября 2005 14:15
· Личное сообщение · #4

1. Для каждого процесса отладчик один:
1 - твой отладчик, отлаживающий загрузчик армы
и 2 - загрузчик армы, отлаживающий собсно прогу
2. step: для армы лоадер, использующий DebugAPI для восстановления байт - и есть отладчик, так что почитаю инфу и сам

-----
EnJoy!




Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 25 ноября 2005 14:21 · Поправил: Step
· Личное сообщение · #5

Jupiter, TOG
Сначала выясним какой процесс отлаживать. Главный или отладчик ?




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2005 14:22
· Личное сообщение · #6

2Jupiter
Дело в том, что я делаю CreateProcess( ...... DEBUG_PROCESS....) ,а не DEBUG_ONLY_THIS_PROCESS
тоесть я получаю отладочные события как от 1:"загрузчика армы", так и 2:"проги жертвы".

вот и получается , что на прогу жертву пытаются сесть 2 отладчика !!! Такое возможно ???



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 25 ноября 2005 14:28
· Личное сообщение · #7

TOG
Ещё раз. Два отладчика не сядут на прогу. В адр.пространстве процеса, есть недокумент.структура, а там поле - контекст отладчика. Так что даже при большом желании два отладчика юзер-режима на прогу не сядут !
Если уж тебя несёт на крайности, то теоретически можно ковырнуть загрузчик армы, а на практике - садо-мазо.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 ноября 2005 14:29
· Личное сообщение · #8

Patcher-Loader ->
ArmaLoader ->
MainApp

т.о. образом тебе изначально до MainApp не дотянуться, т.к. на момент запуска ArmaLoader, MainApp ещё не активен/запущен
выход
- ловить момент ContinueDebugEvent самого ArmaLoader и патчить MainApp
- либо проерять через ReadProcessMemory какой-либо флаг в ArmaLoader
- ...


рекомендую почитать ARTeam Tutorials http://intechhosting.com/~access/ARTeam/ar/cracking/tuts.html на тему Cracking with Loaders

-----
EnJoy!





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 25 ноября 2005 14:34
· Личное сообщение · #9

TOG
Я запускал два отладчика на один процесс, после чего винда загружала проц на 100 процентов и начинала тормозить... Вероятно, это из-за того, что ядро перегружается сообшениями от обоих отладчиков об отлаживаемом процессе и не в состоянии в реальном времени контролировать сообщения сразу от двух отладчиков, хотя, может, это только у меня винда лагает

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2005 14:36
· Личное сообщение · #10

2Jupiter
Если я стану отлаживать только "лоадер армы" юзая флаг DEBUG_ONLY_THIS_PROCESS,
я потом ну никак не смогу пропатчить MainApp, даже имея его hProcess и hThread, у меня
просто прав на этот процесс не будет.

2Step. Ну если так ..... пойду видимо драйвер делать



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 25 ноября 2005 14:45 · Поправил: Step
· Личное сообщение · #11

4kusNick пишет:
Я запускал два отладчика на один процесс, после чего винда загружала проц на 100 процентов и начинала тормозить...

Жаль что ты не поинтересовался кому csrss.exe LPC сообщения высылает ;) (благодаря этому и работает отладчик)




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2005 22:37
· Личное сообщение · #12

Дык, народ !
А как делать-то ? Делать ring0 трейсер что-ли ? Куда копать подскажите !!!




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 25 ноября 2005 23:33
· Личное сообщение · #13

инлайн патч
см. tuts4you http://tuts4you.com/tutorials/Unpacking/index.php

-----
EnJoy!





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 ноября 2005 00:18
· Личное сообщение · #14

Спасибо Jupiter
Действительно инлайн патч.
А так хотелось лодыря сделать, чтобы не возиться с CRC




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 ноября 2005 00:22
· Личное сообщение · #15

Да, кстати,
а если лодырь будет ring0 - то получится ???
По идее должно...




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 26 ноября 2005 11:07
· Личное сообщение · #16

TOG пишет:
Да, кстати, а если лодырь будет ring0 - то получится ???

не вижу связи между Ring0 и "получится"
всё зависит от навыков
но для Ring0 потребуется драйвер (для WinNT/2k/XP), так что BSODы по началу тебе обеспечены.
не морочь себе голову - делай инлайн патч

-----
EnJoy!





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 ноября 2005 13:04
· Личное сообщение · #17

Инлайн это конечно хорошо, а если бы небыло этих туторов ?! Для создания инлайна пришлось
бы разбираться еще и с CRC.
Мне кажется, что лодырь-отладчик нулевого кольца есть перспективное решение проблемы.
Он подойдет для патча ЛЮБЫХ защит.
Можно ставить железные бряки на ЛЮБОЙ процесс, патчить опять-же ЛЮБОЙ процесс.
Этож просто красота - не нужно париться с обходом CRC, которая от версии к версии будет
все более извращенной.
Бряк,.... узнали адрес второго процесса,......бряк....., узнали адрес аллоченной памяти,..... бряк,..... патч !
Надо попробовать




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 26 ноября 2005 13:12
· Личное сообщение · #18

что мешает ставить hardware break point в ring3 с помощью того же DebugAPI?
бряк, установленный в ring0 по своей функиональности не отличается от ring3
если вспомнишь tElock, он убирал hardware bp, устанавливаемые SoftIce, так что hwbp - не панацея
ExeCryptor также убирает их
короче, для нормального фукнционала тебе так или иначе потребуется грамотный драйвер (см. статьи Ms Rem), либо предварительное исследование кода программы, что уже не универсально

-----
EnJoy!





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 ноября 2005 14:07
· Личное сообщение · #19

Дык, Jupiter.
Железный бряк то надо в контексте нужного процесса ставить, а не глобально.
Ну и соответственно из ring3 мне не доступны какие угодно процессы, а только порожденные
моим процессом. Так ведь ? Вот я и не смогу поставить железный бряк на второй процесс армы.
Или я что-то путаю ?
А чтобы мои железные бряки не слетали, я так понимаю юзается 13-й бит Dr7. Если он установлен
то при ЛЮБОМ обращении к отладочным регистрам возникает исключение, которое будет
мной получено, ну и можно принять контрмеры.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 26 ноября 2005 15:50
· Личное сообщение · #20

см. также Anti Anti Hardware Breakpoint plugin [ollydbg] http://reverseengineering.online.fr/spip/article.php3?id_article=53

-----
EnJoy!



 eXeL@B —› Основной форум —› Про Debug API
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати