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

 eXeL@B —› Основной форум —› Опрос: какие точки останова вы используете и как?
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 22 апреля 2012 04:58
· Личное сообщение · #1

Возник данный вопрос и хотелось бы спросить мнение у сообщества.

Собственно варианты:

1. Аппаратные точки останова (hardware breakpoints).
а) "не использую, палятся любым протектором"
б) "если грамотно ставить и защищать DrX-регистры, то это хороший и мощный инструмент!"
в) "хе-хе, я ARM-реверсер)))"
1.1. Для тех, кто выбрал "б". Нужна ли возможность context-specific (бряк только на один поток или на все сразу по выбору)?
а) "я очень хочу использовать возможность context-specific бряков данного типа, мне интересно поймать нужное место в программе только на конкретном потоке"
б) "возможность использовать на конкретном потоке считаю абсурдной, более того, важно чтобы в потоках, создаваемых после установки точки останова, она появилась и там"
в) "в ольке все сделано как надо..."

2. Программные точки останова (software breakpoints/exception breakpoints)
а) "использую, но очень не хватает возможности context-specific бряков данного типа, например, хочу иметь возможность поймать вызов GetWindowTextA в потоке окна инструментов отлаживаемой программы"
б) "меня все устраивает, главное включить голову, а жалуются обычно не профессионалы"
в) "бесит обнаружение бряков этого типа, мгновенно перейду на отладчик, где точки останова данного типа скрываются от программы в 3-ем кольце"

3. Точки останова на память (memory regions hook)
а) "это чего такое вообще?"
б) "реализовано криво, так что вообще не использую"
в) "это очень нужная вещь, использую ольку хотя бы потому, что в ней есть этот тип точек останова"

P.S. 1 июня будет "выкидыш", что это будет зависеть от результата проведения подобных опросов, моего времени и здоровья. Не буду говорить о том, на какой оно стадии. Также не хочется давать пустых обещаний. Но тем не менее:
+поддержка x86 и x86_64
-нет PDK и не скоро будет, но OpenSource
-user-mode only! sorry(
-ELF-версия заморожена
-GUI не готов, так что придется лепить на EDB, GDB или IDA (по совету разработчиков компании Parallels)
-CLI (command line interface) заморожен, разработчик CLI ушел работать в Google
+да, детка! эмулирующий! (опционально, только не обольщайтесь, вирусы на реальной машине этим дебажить не стоит - эмуляция только для ускорения, syscall'ы оно не эмулит)
-анализатор пока сырой, ну да и черт с ним
*глючить будет очень сурово, но пара месяцев баг-репортов со стороны сообщества и из этого что-то может получиться.

| Сообщение посчитали полезным: ressa

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

Создано: 22 апреля 2012 10:29 · Поправил: Veliant
· Личное сообщение · #2

1. Использую в основном для esp-4, и в тех случаях когда int3 палятся или не ставятся. Надобности в установке разных бряков на каждый поток не вижу - лишняя путаница будет.

2. Опять же не думаю, что нужная привязка к контексту, или сделать как в olly бряки по условию, с возможностью сравнения hThread. Но однозначно было бы хорошо, если бы программные бряки скрывались

3. Вещь нужная, как на доступ к секциям, так и для произвольного региона. Частенько спасает, если hw и int3 бряки палятся программой




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

Создано: 22 апреля 2012 10:43
· Личное сообщение · #3

int
1-б-а
2-а
3-в

-----
Everything is relative...




Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 22 апреля 2012 11:46
· Личное сообщение · #4

1. Б.
1.1. А.
2. А, В.
3. В.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 22 апреля 2012 14:07
· Личное сообщение · #5

1. б), в)
2. б)
3. в)

Обоснование.
1. context-specific можно добиться и в олли, если заюзать механизм скриптов. Да, способ несколько неудобен, но не надо говорить, что это невозможно. Вопрос только лишь желания.
2. Обнаружение бряков-то бесит, но от этого никуда не деться. Если используется механизм обнаружения опкода СС, то, конечно, можно опкод изменить и перехватывать не инт3, а другие обработчики, но модифицировать байты всё равно придётся, а значит все проверки контрольных сумм участков кода также будут палить новые брейкпоинты.
3. Вещь нужная, но в ольке реализовано криво хотя б потому, что нельзя ставить таких бряков несколько.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 22 апреля 2012 14:42
· Личное сообщение · #6

ARCHANGEL пишет:
1. context-specific можно добиться и в олли

В любом скриптовом отладчике этого можно добиться. Но зачем геморрой? Может я хочу использовать сразу 8 точек останова, просто на разных потоках. Можно написать плагин для ольки и добиться этого. Но это уже не олька. Я говорю о штатной возможности, галку тыкнул в настройках бряка и все.

ARCHANGEL пишет:
2. Обнаружение бряков-то бесит, но от этого никуда не деться. Если используется механизм обнаружения опкода СС, то, конечно, можно опкод изменить и перехватывать не инт3, а другие обработчики, но модифицировать байты всё равно придётся, а значит все проверки контрольных сумм участков кода также будут палить новые брейкпоинты.

Про кэши TLB и принципы работы MMU что-нибудь слышал? Есть готовый код, который реализует сокрытие int3.

ARCHANGEL пишет:
3. Вещь нужная, но в ольке реализовано криво хотя б потому, что нельзя ставить таких бряков несколько.

И зря, на днях я планирую реализовать поддержку сразу нескольких. К сожалению пока не из драйвера. Хотя готовый сплайс в ядре под 32/64 написанный Волком вполне себе пригоден.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 22 апреля 2012 15:22
· Личное сообщение · #7

1 - б
1.1 - а
2 - а
3 - в

Собственно, ответы очевидны.

int пишет:
Есть готовый код, который реализует сокрытие int3.







Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 22 апреля 2012 15:37
· Личное сообщение · #8

Code:
  1. 1. б          
  2. 1.1 а 
  3. 2. а немного б
  4. 3. в


P.S. опросов еще много будет?! Почему "выкидыш" связан с опросом?! Интереснее

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 22 апреля 2012 16:15
· Личное сообщение · #9

Да просто надоело сидеть и думать, какой не красивый и плохой код получается. Уже пошли трехуровневые абстракции. Тьфу, блин. Надоело одному писать. Пусть выйдет кривой и неуклюжий. Допилим) Баг-репорты хороший стимул)

Смысл опросов заключается в выборе кусков кода. Их уже накопилось огромное множество. У меня свои методы реверс-инженерии, у кого-то могут быть свои. Отладчик пишется для всего сообщества, а не для меня любимого. Поэтому сразу хочу выяснить, что важно, а что не очень.



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 22 апреля 2012 16:17
· Личное сообщение · #10

1-б
1.1-а
2-в
3-в

-----
We do what we want because we can.





Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 22 апреля 2012 17:33 · Поправил: Dart Sergius
· Личное сообщение · #11

1-б
1.1-а
2-а
3-в
ps. Я ваще новичёк в этом деле



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 22 апреля 2012 18:45
· Личное сообщение · #12

1-а
2-б
3-в
или к примеру:
xor eax,eax
div eax
+VEH/SEH (ExceptionInfo->ExceptionRecord->ExceptionCode == 0x94) и т.п.

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




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

Создано: 22 апреля 2012 20:57 · Поправил: VodoleY
· Личное сообщение · #13

1 б (вобщем то незаменимая местами весч)
1.1 а (ибо сисер таки пришлось дергать... тот же армадило...)
2. я хз что ответить.. а б в (ощущение что вопрос задавал человек с криком души )
3. ВВВВ однозначно
З.Ы. касательно 3го.. иногда очень нехватает карты использования памяти... аля МЕМ_монитор. еще под дос была чудна софтина еще в 95ом году строила карту использования памяти, туда поподал ЕIP в том числе, накладываеш дизасм иды, и выдернутый алго готов..

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 22 апреля 2012 21:22
· Личное сообщение · #14

1. б
1.1. в
2. б
3. в



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 22 апреля 2012 21:39
· Личное сообщение · #15

Kaimi
Вот таких ответов я и боялся. Очень сложно будет народ с ольки стащить. Поэтому придется копировать интерфейс ольки (хотя он устарел, придется совмещать с виджетами, как в Visual Studio и IDA), и может не предоставлять каких-то новых возможностей, но хотя бы дать тот же уровень, что и в ольке.



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 22 апреля 2012 22:01
· Личное сообщение · #16

int
В IDA в новой версии обещали бряки на регионы. Так что раньше было хорошо, а будет еще лучше.
1. б + IdaStealth. Использую, если палятся soft bp
1.1. фенечка, но может и пригодиться. ольку вообще не использую.
2. активно использую.
3. полезная вещь

Эмулирущий отладчик - это отлично.
В той же иде в новой версии обещали трассы и плейбек. Еще бы сделали сравнение трасс =)
Но вот только когда мы ту иду увидим... вопрос.

-----
старый пень




Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 22 апреля 2012 22:54
· Личное сообщение · #17

1.б
2.а-в
3.в




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 23 апреля 2012 03:09
· Личное сообщение · #18

int пишет:
Очень сложно будет народ с ольки стащить.


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




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

Создано: 23 апреля 2012 09:44
· Личное сообщение · #19

Сделай нативными несколько фишек, привлекающих в ольге и все люди твои.
Если уж на то пошло - то отладчику нужен анализирующий, а не простой дизасм, в Ольке очень простой и до 50% код/данные разпознать не может, в Иде намного лучше, но до идеала далеко.

-----
Everything is relative...





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 23 апреля 2012 10:14
· Личное сообщение · #20

Gideon Vi пишет:
главной проблемой при частичном переходе на вторую ольгу было отсутствие поддержки плагинов

По-моему, главной проблемой было то, что вторая олька - игрушка, которой нельзя реверсить что-то более-менее серьёзное по причине отсутствия только двух важных вещей:
1. Скриптового движка.
2. Плагина для сокрытия от антиотладочных механизмов.

Так что, как по мне, народ перейдёт на дебаггер, который не будет палиться всякими говнопротами, и будет иметь мощный интерпретатор возможностями типа Python. И даже если у него не будет Plugin SDK, это с лихвой компенсируется тем, что он OpenSource. Ну, это только при условии, что он не был собран на каком-то прекрасном компиляторе, который автор написал сам или добыл где-то в глубинах бескрайнего космоса. Т.е. MS VC++ приветствуется.

int пишет:
Про кэши TLB и принципы работы MMU что-нибудь слышал?

Слышал, и слышал я то, что это дело специфично для разного железа.

Есть готовый код, который реализует сокрытие int3.

А вот про это не слышал. Ну, вы, если вам не трудно, намекните, как оно работает.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 23 апреля 2012 13:59 · Поправил: mak
· Личное сообщение · #21

ARCHANGEL

Есть всего три метода сокрытия не считая частных случаев и методов

1. Манипуляции с памятью, доступы к страницам, переопределение страниц и подстановка (Поиск по хуку хэндлера инт 0eh + TLB, протекции страницы и мму, документ Stealth Braekpoints как вариант, был док от китайцев, там скрывали таким методом инт3, название не помню, код в сети есть, из этой части Олибон плагин и шадоу волкер, там есть код, а так в сети кода по теме достаточно)
2. Эмуляция через Виртуализацию + иногда использование дополнительно пункта 1 (Смотреть Fdbg, Cheat Engine - но там без манипуляций с пунктом один)
3. Замена прерывания с переадресацией, была тут тема на краклабе, не помню название.

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

Хотя вот Енджин по брякам с пунктом 1, реализовав многогранность методов первого пункта, было бы супер. Очень удобно, неограниченное количество бряков, плюс легкость в модификации методов бряка, отличное расширение. Единственное в открытом доступе только недоделанный софт. В принципе такой енджин можно подключить и к оле.

int
Его нужно еще прикручивить к оболочкам, зачем ждать кросплатформенного гуи, когда обкат может решить дальнейшую судьбу, достаточно сделать гуй легкий под вин, например оли похожий допилить можно взяв ... ГУИ RADASM, открытый x86 асм код, но для 64 это не проблема, дополнить нужным контентом можно быстро, а для 64 сделать переходник модуль 64bitHelper для гуя, а там можно его уже со временем и поменять, плюсы .. мало писать кода, собрать и изменить может каждый , отладчик уже в работе и не нужно ждать и прикручивать, собственный гуй и легкое понимание интерфейса, похожесть на Оллидбг.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


| Сообщение посчитали полезным: ARCHANGEL, VodoleY

Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 23 апреля 2012 14:53
· Личное сообщение · #22

1. б, б
2. б
3. в




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 23 апреля 2012 15:07
· Личное сообщение · #23

1 б
1.1 б
2 а,в
3 в

-----
ds





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 23 апреля 2012 15:42 · Поправил: ajax
· Личное сообщение · #24

int
вообще, юзаю ida с idastealth. olly только для для распаковки, при наличии скриптов.
Аппаратные точки останова (hardware breakpoints)
"если грамотно ставить и защищать DrX-регистры, то это хороший и мощный инструмент!"
"Нужна ли возможность context-specific (бряк только на один поток или на все сразу по выбору)"

почему бы и не выбирать. больше - не меньше

Программные точки останова (software breakpoints/exception breakpoints)
"меня все устраивает, главное включить голову"

Точки останова на память (memory regions hook)
"это очень нужная вещь"


-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 24 апреля 2012 21:43
· Личное сообщение · #25

ARCHANGEL пишет:
А вот про это не слышал. Ну, вы, если вам не трудно, намекните, как оно работает.

Ну саму рассинхронизацию сделать довольно просто. Внутри драйвера получаем VA нужной страницы, которую нужно похерить в кэше TLB, а также саму страницу (в смысле байтики), которые мы хотим представить нашей программе. Дальше ловим CR3 регистр:

KeStackAttachProcess(process, &unused);
__writecr3(cr3_reg); // пригодится
KeDetachProcess();
Из TLB выкидываем гадкую страницу
_disable();
*(unsigned int *)page_pte &= 0xFFFFFFFB; // сброс US бита, для генерации исключения при обращении к странице
__invlpg(page_va); // инвалидация элемента в кэше TLB
_enable();

Гораздо сложнее обрабатывать исключения, которые возникают вследствие такой махинации. Суть состоит в том, что надо похучить IDT. При возникновении исключений int01 и int0e надо играться с __invlpg, чтобы поддерживать TLB в "удобном состоянии". При исполнении кода в нужной страницы, она улетит в кэш TLB для кода, но надо ее подменить, чтобы там были все установленные на странице точки останова, при этом делается подмена PTE.

P.S. По сабжу рекомендую прочитать/пореверсить на счет MiCopyOnWrite.

| Сообщение посчитали полезным: ARCHANGEL

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 25 апреля 2012 18:34
· Личное сообщение · #26

1-Б
2-Б (ставлю, если уверен, что там их ничто не проверяет)
3-В



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 04 мая 2012 14:02
· Личное сообщение · #27

Кто-нибудь очень добрый дайте ASM-исходник с KiTrap01 и KiTrap0E (пусть для примера это будет Windows XP). Это сильно облегчит мне жизнь, в силу необходимости ставить ядерный отладчик.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 04 мая 2012 17:07 · Поправил: reversecode
· Личное сообщение · #28

почему нельзя глянуть в reactos svn
или стянуть wrk https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=7366&c1=en-us&c2=0
ну или на крайняк загрузить ntos kernel в IDA



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 04 мая 2012 17:18
· Личное сообщение · #29

reversecode пишет:
на крайняк загрузить ntos kernel в IDA

Я там не нашел Можешь рассказать, какая методика поиска? Не iret инструкции же искать...

Собственно, интересует фрейм стэка на стартовой точке каждого обработчика.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 04 мая 2012 17:46 · Поправил: reversecode
· Личное сообщение · #30

какие iret? pdb грузишь и он все метки расставит
потом по поиску найдешь код KiTrap любого обработчика

ааа фрейм, тогда только или в соурсах wrk или дебагером


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


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