Сейчас на форуме: user99, _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› OllyDBG |
Посл.ответ | Сообщение |
|
Создано: 04 октября 2005 23:29 · Личное сообщение · #1 |
|
Создано: 04 октября 2005 23:38 · Личное сообщение · #2 |
|
Создано: 05 октября 2005 01:41 · Личное сообщение · #3 |
|
Создано: 05 октября 2005 02:07 · Личное сообщение · #4 DenKor Не мути. Если у тебя WinXP или Win2k - всё должно работать. Ищи в статьях. Ищи в форуме. DenKor пишет: Я набиваю это в command bar Но брекпоинт не срабатывает. Набираешь "bpx MessageBoxA", вылетает окошко со всеми анализированными функциями из импорта. Мышкой тыкаешь по верхней полоске графы "Destination", ищешь глазами в алфавитном порядке твой MessageBoxA. Если бряк установился, строки с искомым будут выделены. Если строки не выделены возможно только два варианта: 1 криво набрал 2 такой функции просто нет в списке ----- Всем привет, я вернулся ![]() |
|
Создано: 05 октября 2005 02:27 · Личное сообщение · #5 Или просто bpx 1, открывается окно импорта, sort by destination - будет по алфавиту, находим нужную функцию и ставим F2, или там же правой мышой - Set breakpoint on every call to MessageBoxA. - тогда брейки будут установлены на все MessageBoxA'ы в проге... ![]() ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels ![]() |
|
Создано: 05 октября 2005 02:35 · Личное сообщение · #6 добавлю к словам Bitfry: после "bpx MessageBoxA", чтобы не рыскать по списку функций и не искать, выделена ли строка с твоим бряком в списке всех API функций, можно сразу лезть в окно с брейкпоинтами (ALt-B) и там смотреть. потому что, когда bp удачно установлен, то его быстрее увидеть как раз в списке брейкпоинтов, а не списке всех функций, особенно когда их много ----- EnJoy! ![]() |
|
Создано: 05 октября 2005 03:09 · Личное сообщение · #7 |
|
Создано: 05 октября 2005 06:07 · Поправил: DenKor · Личное сообщение · #8 Дело в том, что у меня в появившемся окне не показывается эта функция. Там всего 2-3 функции из kernel32.Base... Соответсвенно я так понимаю, что бряк по этому не срабатывает. В окне бряков его нет. Окно которое появлется - intermodular calls Я бы SoftIce воспользовался, но из-за avp он у меня завешивает компьютер при запуске ![]() |
|
Создано: 05 октября 2005 06:20 · Личное сообщение · #9 |
|
Создано: 05 октября 2005 08:18 · Личное сообщение · #10 DenKor пишет: Дело в том, что у меня в появившемся окне не показывается эта функция. Там всего 2-3 функции из kernel32.Base... Вот по этому я и советовал обратить внимание на список проанализированных функций, особенно если их мало ![]() Если всего 2-3 функции из kernel, значит прога запакована... Других вариантов я не встречал. PEiD в руки и удачи. ----- Всем привет, я вернулся ![]() |
|
Создано: 14 октября 2005 23:08 · Личное сообщение · #11 |
|
Создано: 14 октября 2005 23:23 · Личное сообщение · #12 |
|
Создано: 15 октября 2005 14:15 · Личное сообщение · #13 |
|
Создано: 15 октября 2005 15:27 · Личное сообщение · #14 |
|
Создано: 15 октября 2005 16:16 · Личное сообщение · #15 |
|
Создано: 15 октября 2005 16:37 · Личное сообщение · #16 А вот теперь займёмя самообрзованием. Формат команды простой, введи в айсе название и увидишь подсказку. Нужно указать хендл окна и уведомление. Вообще-то команда на messagе-и делает брейкпоинт на WindowProc, но иногда по необьяснимым причинам она глючит. Насчёт WindowProc - открой MSDN посмотри на параметры, не забудь что при входе в функцию в стеке кроме параметров будет ещё и EIP. Напиши выражение с условными операторами типа "if", "esp->4" .... ![]() |
|
Создано: 15 октября 2005 16:46 · Личное сообщение · #17 |
|
Создано: 15 октября 2005 16:58 · Личное сообщение · #18 Несколько странный вопрос - ответ google. Кстати, для модераторов. Очень много участников этого форума увлеклись Олей. Хелпа написали много. А вот по Айсу я тут ничего исчерпывающего не видел. Конечно книгу Айрапетяна (кажись так автор называется) переписывать заново не стоит, но всё же курс молодого бойца по Айсу может стоит выложить, скажем вместе с архивом в разделе скачать ? ![]() |
|
Создано: 15 октября 2005 17:09 · Личное сообщение · #19 |
|
Создано: 15 октября 2005 17:14 · Личное сообщение · #20 |
|
Создано: 15 октября 2005 17:16 · Личное сообщение · #21 |
|
Создано: 15 октября 2005 17:17 · Личное сообщение · #22 |
|
Создано: 15 октября 2005 17:22 · Личное сообщение · #23 |
|
Создано: 15 октября 2005 17:22 · Личное сообщение · #24 |
|
Создано: 15 октября 2005 17:34 · Личное сообщение · #25 |
|
Создано: 15 октября 2005 18:39 · Личное сообщение · #26 |
|
Создано: 17 октября 2005 11:05 · Личное сообщение · #27 Синтаксис: BMSG дексриптор_окна(хендл) [L] [начальное_сообщение] [конечное сообщение] [IF условие] [DO “команда1; команда2; команда3; …”] Дескриптор_окна – хендл окна (если не знаешь что это такое, то ты слишком рано взялся за СофтАйс). L – указывает Айсу не активизировался а выводить информацию о срабатывании точки остановки в лог окна команд. Для сохранения лога команд Айса нужно запустить loader32.exe и выбрать пункт меню File->Save SoftICE History As … Это может пригодится когда пытаешься получить ответ на свой вопрос. начальное_сообщение – номер первого сообщения из диапазона конечное_сообщение – номер последнего сообщения из диапазона Если задать только начальное сообщение то именно оно и вызовет срабатывание Айса. Вот несколько примеров: bmsg 100212 WM_LBUTTONDOWN - точка остановки на нажатие левой клавиши мыши для хендла окна 100212. bmsg 1000415 WM_MOUSEFIRST WM_MOUSELAST - точка остановки на сообщения из диапазона WM_MOUSEFIRST - WM_MOUSELAST включительно для дескриптора окна 1000415. bmsg 100212 WM_GETTEXT – брейкпоинт на считывание текста. API функции типа GetWindowTextA и GetDlgItemTextA насамом деле отсылают сообщение WM_GETTEXT. Сообщение получает оконная процедура. Дальше – больше: BMSG насамом деле ставит брейкпоинт на процедуру обработки оконных сообщений. Поэтому если сильно приспичило то можно написать спец.макрос, а если лень то с помощью Spy++ определяем процедуру обработки сообщений для окна (кнопки, текстового поля ….) а дальше пишем команду Айсу <bpx адрес_процедуры_окна IF (esp->8) == WM_GETTETXT>. Это означает, что когда в процедуру окна прийдёт во втором параметре сообщение WM_GETTETXT Айс радостно, или не очень, но всёже всплывёт. Не нужно забывать, что команда bpx контекстно зависимая. То есть ты должен находится в контексте программы для которой ставишь брейкпоинт. Самый простой способ это сделать – <addr имя_exe_модуля>. Теперь маленький пример для Delphi прог. Брейкпоинт на считывание текста ставится так: <bpx CallWindowProcA IF (esp->8)== ХЕНДЛ_ОКНА && (esp->c) == WM_GETTEXT> Дальше F12 и вводим комнду <d (ebp+8)->0> видим считанный текст. Дальше bpm … Даный пример не универсален, всё зависит от типа окна (ANSI, UNICODE) и конкретной реализации компилятора, а также операционной системы. Но я пытаюсь дать толчок для самостоятельного изучения не только Айса но и ОС. Пойди в книжный магазин и купи книгу Крис Касперски «Техника и философия хакерских атак» (2-е издание), а также Р.А. АЙРАПЕТЯН «Отладчик SoftICE подробный справочник» - пригодится и не один раз. Ведь знать всё - просто не возможно, а вот знать где искать – вполне реально. Для больно умных: не нужно на меня наезжать, и рассказывать о DeDe, разнице в реализации функций user32 в разных ОС, не растравлении всех скобок в командах, склерозе насчёт сервиса 11D2 прерывания 2Eh и т.д. и .т.п. Я тут не энциклопедию пишу, а пытаюсь объяснить начинающему что такое брейк. ![]() |
![]() |
eXeL@B —› Основной форум —› OllyDBG |