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

 eXeL@B —› Основной форум —› Про анти-дебажные выкрутасы FRAPS'a
. 1 . 2 . >>
Посл.ответ Сообщение


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

Создано: 07 декабря 2005 12:38 · Поправил: TOG
· Личное сообщение · #1

Ломаю прогу FRAPS (v2.7.1, build: 5499, http://www.fraps.com). http://www.fraps.com). Защита: Armadillo (1 процесс).
(ZOoMiK ее вроде уже сломал, но я сам хочу).
Прога создает 3 потока, и еще ее DLL висит и хучит клавиатурные события.
Есть переменная, которая в один прекрасный момент обнуляется. И я никак не могу отследить
этот момент. Железный бряк не срабатывает именно при записи в этот байт. Везде вокруг срабатывает,
а на этот адрес - нифига! Запускал SuperBPM - тоже бряк не робит. Думал, если она сама дебажные регистры кончает, тоесть вызывает исключение и потом правит поля в структуре CONTEXT, так ведь не вызывает она исключения !! (faults on - поставил, бряк на KiUserExceptionDispatcher). Че за детектив ?
Пользуюсь SoftIce.
Как она еще может вывернуться ?




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 07 декабря 2005 13:58 · Поправил: Z0oMiK
· Личное сообщение · #2

TOG пипишет (v2.7.1, build: 5499)
У них уже версия 2.7.2 ... они это билды как на заводе штампуют по попводу распаковки юзай
лучше Ольку




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

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

Z0oMiK пишет:
по попводу распаковки юзай лучше Ольку


Я ее ломаю не распаковывая, так сказать режу по живому, там и так все понятно, за исключением
этой падлы с обманом bpm. Потом инлайн сделаю.




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

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

Там вообщем Import Elimination + Code Splicing.... Debug Bloker'a нету и Nanomites тоже...



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

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

Z0oMiK пишет:
Debug Bloker'a нету и Nanomites тоже...

Их и не может быть, если 1 процесс =)

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 07 декабря 2005 14:13 · Поправил: Z0oMiK
· Личное сообщение · #6

Smon пишет:
Их и не может быть, если 1 процесс =)

Аналог глянь DeryOne ;) 1 процесс а есть Нано




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

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

Народ, это не похоже на армовские падлянки. Это уже защита самой проги меня имеет.
Вопрос-то скорее по теории, чем по конкретному взлому.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

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

TOG
Теория такова. Айс может ставить бряк на адресс памяти только кратный 4 (это помоему ограничение проца). Если обращение идёт по нечётным адрессам, бряк по идее не должен всплыть.




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

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

Almaz пишет:
Теория такова. Айс может ставить бряк на адресс памяти только кратный 4


Хреновая теория (адрес как раз кратен 4, 01E50010h)
Это западло по другой причине.



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

Создано: 07 декабря 2005 15:05
· Личное сообщение · #10

TOG
знаеш мне кажется это может быть проблема в самом айсе. иногда бывало у мнея не срабатывали бряки даже при оладке своих прог (к сожалению счас нет ничего чтом можно было бы привести в пример). да вот еще что может там быть такой прикол
...
pop ss
mov [01E50010h], x
...
вроде после изменения сег. рег стека следующая команда за изменяющей для отладки не видна.

-----
power and the money money and the power





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

Создано: 07 декабря 2005 15:22 · Поправил: TOG
· Личное сообщение · #11

doctor Ice пишет:
pop ss

Это было очень давно...

Попробую уточнить вопрос: Можно ли писать в структуру CONTEXT не вызывая предварительно
исключение ? (SetThreadContext она тоже не вызывает)
Я вот смотрю в структуре TIB есль поле GlContext, может это контекст и есть ?
Как еще можно дебажные регистры прибить ?



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

Создано: 07 декабря 2005 15:34
· Личное сообщение · #12

слушай а пометь страницу как отсутствующую и найдеш.

-----
power and the money money and the power





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

Создано: 07 декабря 2005 15:45
· Личное сообщение · #13

doctor Ice пишет:
слушай а пометь страницу как отсутствующую и найдеш.


Ты на что меня обракаешь ? Это буфер какой-то, она им шуршит мама не горюй.



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

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

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

-----
power and the money money and the power





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

Создано: 07 декабря 2005 18:52
· Личное сообщение · #15

Народ ! Ну посоветуйте что нибудь поэлегантнее ! Неужели никто с антиотладкой не дружит ?




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

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

Z0oMiK пишет:
Аналог глянь DeryOne ;) 1 процесс а есть Нано

неверю, такого быть не может =) int3 в арме обрабатывает процесс отладчик, таков там принцип работы... поэтому без второго процесса наномитов в арме быть не может.

ЗЫ можно теоритически обрабатывать int3 в одном процессе (используя seh), но _очень_ сомнительно что так делают в арме... хотя самых последних версий армы я не видел (последнее что смотрел было вроде 4,0)




Ранг: 299.6 (наставник)
Активность: 0.30
Статус: Участник
Armadillo Killer

Создано: 07 декабря 2005 23:45
· Личное сообщение · #17

Mario555 Спорить не буду мож я второго процесса и не видел




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

Создано: 08 декабря 2005 10:04 · Поправил: TOG
· Личное сообщение · #18

Мдяя...
Давайте по пунктам.
1. Перед тем как переменная сбросится в ноль, прога входит в wait-функцию - SignalObjectAndWait.
После выхода из нее переменная уже равна 0.

Я непосредственно перед вызовом wait-функции устанавливаю на страницу памяти, где
сидит эта переменная - PAGE_READONLY с помощью VirtualProtect. Включаю "faults on" и
действительно при попытке записи в эту страницу всплывает айс с исключением ACCESS_VIOLATION.
НО ПРИ ЗАПИСИ ИМЕННО В ЭТУ ПЕРЕМЕННУЮ НИЧЕГО НЕ ПРОИСХОДИТ - айс не всплывает, и кто ее
обнуляет я не понимаю.




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

Создано: 08 декабря 2005 11:10
· Личное сообщение · #19

VirtualProtect сама прога не юзает, так что отключать защиту страницы она вроде как не может.



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

Создано: 08 декабря 2005 11:38
· Личное сообщение · #20

прикрути трейсер. и следи.
вот тебе примерчик
www.vx.netlux.org/lib/vwa01.html
переделай под себя и помониторь.
а виртуал протект это только верхушка айсберга.

-----
power and the money money and the power





Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 08 декабря 2005 12:12
· Личное сообщение · #21

Что это за чудо-переменная ? на ней свет клином сошёлся ? =) имхо если не ловиццо - и фиг с ней, другие способы надо пробовать...
А по поводу HW бряков... арма вроде не затирает их вообще (под олли по крайней мере HW бряки в арме нормально пашут), а вот учитывая что арма запускается в двух процесса по поводу айса - надо (наверно, ибо айсом я мало пользовался) знать в контексте какого процесса будет запись в переменную, тоесть если там через WriteProcessMemory запись в данный процесс делается, то наверно лучше поискать более простой способ решения проблемы чем копание с дебрях системы в попытках найти момент записи =)




Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 08 декабря 2005 13:03
· Личное сообщение · #22

Вышел новый ФРАПС 2.7.0 Retail h**p://www2.fixdown.com/soft/2954.asp?free=sdtel-downs 2.8Mb

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240





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

Создано: 08 декабря 2005 14:09
· Личное сообщение · #23

Mario555 пишет:
знать в контексте какого процесса будет запись в переменную


Что-то я не фкурил. Надо бряк ставить в контексте того процесса которому принадлежит эта страница памяти (чудо-переменная), а не в контексте процесса который пишет в нее. Марио, так ведь ?
Че-то я совсем уже зарылся в дебри. Самая хрень будет, если это действительно глюки айса.

doctor Ice спасибо за трейсер. У меня впринципе и свои есть, попробую...




Ранг: 332.0 (мудрец)
Активность: 0.180
Статус: Участник
•Pr0tEcToRs KiLLeR•

Создано: 08 декабря 2005 16:38
· Личное сообщение · #24

TOG пишет:
Надо бряк ставить в контексте того процесса которому принадлежит эта страница памяти (чудо-переменная), а не в контексте процесса который пишет в нее. Марио, так ведь ?

но тогда в процессе B который пишет в переменную в память процесса A (через WriteProcessMemory) нету бряка и ессно срабатывать нечему, т.к. он установлен только в контексте потока процесса A (я об обычных HW бряках, в DR7 есть ещё какие-то global, может айс их юзает, тогда непонятно почему не пашет).

вот что про global пишут:
"The low-order eight bits of DR7 (L0 through L3 and G0 through G3)
selectively enable the four address breakpoint conditions. There are two
levels of enabling: the local (L0 through L3) and global (G0 through G3)
levels. The local enable bits are automatically reset by the processor at
every task switch to avoid unwanted breakpoint conditions in the new task.
The global enable bits are not reset by a task switch; therefore, they can
be used for conditions that are global to all tasks."

TOG пишет:
Че-то я совсем уже зарылся в дебри. Самая хрень будет, если это действительно глюки айса.

проверь всё-такми все исключения и возможности доступа со стороны второго процесса - вдруг арма таки обнуляет DRx.
Попробуй олли, вдруг там получиццо.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 16:44
· Личное сообщение · #25

А ваще прочитайте статью небезъизвестоного Марио555 в Хакере за №57, статья безусловно рулез, жаль сюда из-лени вышеназванного нашего товарища ее еще не запостили...



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

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

не читал такой статьи, где она находится?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 16:59
· Личное сообщение · #27

Asterix
Находится в вышеозначенном журнале. Ссылки на djvu тут были. Странно, что ты пропустил его, журнал в своем большинстве составлен из статей аффторов, здесь постоянно присутвующих. Мне понравился, статьи MS-Rem'a и Марио рулят.




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

Создано: 08 декабря 2005 17:05
· Личное сообщение · #28

Mario555 пишет:
Попробуй олли, вдруг там получиццо.


Я Олькой редко пользуюсь, поэтому пардон за тупые вопросы.
FRAPS виснет под Олькой. Я слышал про эксплоит с OutputDebugString для Ольки. Где можно скачать
патч для Ольки, чтоб не висла ?




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

Создано: 08 декабря 2005 17:11
· Личное сообщение · #29

TOG
functions:
IsDebuggerPresent flag will be zero
OutputDebugStringA will be fucked with code just like retn 4

hying's pe-armor use a M$ backdoor so-called magicnumber to fool unpacker

about the trap:
the process heap will fill with diffierent things if under debugger or not.
there is a flag, which should be 2 on my machine if no debuggin
i just set it. so if you get error ,teach me how to improve it
X-D

the plugin will auto hide dbgr when you load a new target.

5eb8_Evanescence.rar.zip

-----
Don_t hate the cracker - hate the code.





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 17:22
· Личное сообщение · #30

webfile.ru/678299
Залил по просьбе Астерикса, релиз от mc707, респект ему...


. 1 . 2 . >>
 eXeL@B —› Основной форум —› Про анти-дебажные выкрутасы FRAPS'a
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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