Сейчас на форуме: (+4 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Ужасяющая проблема с елементарными брейкпойнтами в SoftICE`е. Помогите... |
Посл.ответ | Сообщение |
|
Создано: 12 июля 2006 03:27 · Личное сообщение · #1 Дорогие друзья! Подскажите, пожалуйста, в чём моя проблема. Намучился я с установкой SoftICE под Windows XP, но таки поставил, вроде пашет, всё нормально почти, но есть одно "НО": при установке брейкпойнта (к примеру, "bpx MessageBoxA") SoftICE действительно останавливается на первой строчке процедуры USER32!MessageBoxA, НО стоит мне только нажать F12 (чтобы пробежать опкоды и вернуться из функции на место её вызова), как выскакивает само окошко во взламываемой программе и приходится жать "ОК", в последствии даного происшествия "окно" SoftICE`а исчезает (ВОТ она проблема, я везде читаю, что оно опять должно выскочить само, да прямо на месте вызова MessageBoxA! Но не тут-то было). После этого я нажимаю CTRL+D в попытках возобновить "окно" SoftICE`а, но он тогда уже находится где-то очень далеко - в модуле ntoskrnl в функции PsGetCurrentProcessId (ужОс-то какой). По крайней мере вверху окна написано "ntoskrnl!PsGetCurrentProcessId+0130". Неужели я такой ламер?? Помогите... растолкуйте.. Ну уж очень прошу. СУТКИ над этим мучаюсь, весь интернет облазил, весь гугл, весь краклаб и другие подобные сайты. Повидимому ни у кого такой проблемы не возникало ещё (хотя я таки уверен, что просто чего-то недопонимаю) Очень надеюсь на вашу помошь, експерты! Спасибо за внимание P.S. и ещё: Обьясните, плиз, принципы адресации в рантайме. В тюториале с крякмисом pilorama.com.ru/4newbies/4nb010.php такие красивые там адреса упоминаются, типа 4013D8 или 4013DC, а у меня в айсе всё такое некрасивое, типа 0008:F140F1DE или 0010:0140AEFF. Как понимать адреса упомянутые в статье? P.S. Зарание, дважды прошу прощения за, возможно, глупые вопросы )) ![]() |
|
Создано: 12 июля 2006 08:12 · Личное сообщение · #2 |
|
Создано: 12 июля 2006 12:03 · Личное сообщение · #3 Я уже начал об этом задумываться, но не хочется, так долго морочился, таки установил, и SoftICE мне кажется удобнее (с комманд лайном), на него все статьи ориентированы, а про Оли не такие хорошие отклики, да и не могу некак там брейкпойнт установить )) Может всё-таки кто-то знает, как мне помочь? ) Спасибо за внимание. ![]() |
|
Создано: 12 июля 2006 12:49 · Личное сообщение · #4 |
|
Создано: 12 июля 2006 16:01 · Личное сообщение · #5 |
|
Создано: 12 июля 2006 16:17 · Поправил: maikkri5ki · Личное сообщение · #6 |
|
Создано: 12 июля 2006 16:40 · Личное сообщение · #7 |
|
Создано: 12 июля 2006 17:03 · Личное сообщение · #8 SlipKnot А проблема твоя простая, как и у всех новичков : вместо внимательно читать и думать - сразу спрашивать. Нажав F12 и пробежав до возврата из функции ты этим ее выполнил. И больше это окно уже не выскочит. А в инструкциях написано примерно следующее : выполните команду RET, запомните место команды call - она будет перед адресом возврата и ПЕРЕЗАПУСТИТЕ программу ! А теперь надо ставить бряк, либо за несколько команд до CALL - для простых защит, либо опять же читать и думать. Увы, чужими ответами еще никто мастером не стал. Пока сам не сделаешь и тысяча гениальных ответов не сделают тебя умнее. ![]() |
|
Создано: 12 июля 2006 17:21 · Личное сообщение · #9 tundra37 пишет: выполните команду RET, запомните место команды call Я бы с радостью всё это проделал, да вот только говорю же, после выполнения комманды RET у меня выскакивает само диалоговое окно, которое как-бы "гасит" SoftICE и после нажатия "ОК" ничего не происходит ![]() Как можно подавить диалоговое окно при пошаговом выполнении комманд? ![]() tundra37 пишет: Увы, чужими ответами еще никто мастером не стал. Пока сам не сделаешь и тысяча гениальных ответов не сделают тебя умнее. Полностью с этим согласен. Я вот не читая статьи pilorama.com.ru/4newbies/4nb010.php просто скачал файл вчера и создал для него патч, который просто обходит проверку серийника (это конечно не генератор, но как для совсем первого раза, по-моему, неплохо, учитывая, что я всего 2 дня вообще этим интересуюсь). Я так понял (без обиды), что ты меня обвиняешь в бестолковстве и надежде на чужие ответы =), но ведь это всего лишь технический вопрос (учитывая ещё и степень трудности и глюкавости SoftICE`а на WinXP). Так что с твоим обвинением я не совсем согласен ![]() Спасибо за помощь! ![]() |
|
Создано: 12 июля 2006 18:37 · Личное сообщение · #10 SlipKnot Пардон тогда. Сам невнимательно прочел. Тогда надо : в айсе смотреть стек - на вершине лежит адрес возврата. Можно тут же посмотреть дизассемблер и не делать лишних действий. В олли, возможно, и "прогон до return" получится. Правда остановимся на команде RET и придется делать, как я сказал. По поводу адресов : в проге в айсе у меня обычно адрес сегмента 0023:004xxxxxx , 08 и 10 - это системные адреса. 014ххх - это скорее всего DLL из программы, а про F1xxx ты явно загнул - больше 7F не может быть, если конечно у тебя не 64-бита или ключ /3Gb используется. В примерах изучают обычно простые программы, без DLL - они лежат с адреса 00400000. Тут немного отвлекся и вспомнил. Посмотри в айс команду FKEY - что у тебя зашито на F12. Тогда уж будем думать. ![]() |
|
Создано: 12 июля 2006 19:14 · Поправил: Error_Log · Личное сообщение · #11 SlipKnot пишет: чтобы пробежать опкоды и вернуться из функции на место её вызова Можно сделать проще - когда брякнешся на начале MessageBox просмотри вниз саму функцию и поставь на первый ret после ее начала бряк (двойным кликом мыши по опкоду). Далее, нажав F5 ты увидишь окошко, нажав в нем "ok" ты снова увидишь окно SoftICE на команде ret, теперь достаточно выполнить эту команду, нажав F8 и ты окажешся в месте вызова MessageBox. Так же можешь попробовать вместо F12 ввести команду p ret или нажать F11. ----- Research is my purpose ![]() |
|
Создано: 12 июля 2006 19:50 · Личное сообщение · #12 |
|
Создано: 12 июля 2006 20:18 · Личное сообщение · #13 |
|
Создано: 12 июля 2006 20:54 · Личное сообщение · #14 Error_Log пишет: когда брякнешся на начале MessageBox просмотри вниз саму функцию и поставь на первый ret после ее начала бряк (двойным кликом мыши по опкоду). Далее, нажав F5 ты увидишь окошко, нажав в нем "ok" ты снова увидишь окно SoftICE на команде ret, теперь достаточно выполнить эту команду, нажав F8 и ты окажешся в месте вызова MessageBox. Спасибо большое! Так сработало! А второй вариант не сработал. Я экспериментирую на крякми по статье pilorama.com.ru/4newbies/4nb010.php и заметил кое-что в SoftICE: если я в даный момент нахожусь в определенном сегменте, то я не могу задать БП на комманду другого сегмента (даже так: bpx xxxx:xxxxxxxx), это можно проделать ТОЛЬКО после того, как программа войдёт в MessageBoxA. Вот так. DillerInc пишет: dd esp -- самый первый DWORD и будет твой адрес возврата. Спасибо. Буду знать на будущее. Спасибо всем! ![]() |
|
Создано: 13 июля 2006 11:15 · Личное сообщение · #15 |
|
Создано: 13 июля 2006 13:07 · Поправил: DillerInc · Личное сообщение · #16 |
|
Создано: 14 июля 2006 10:15 · Личное сообщение · #17 SlipKnot пишет: если я в даный момент нахожусь в определенном сегменте, то я не могу задать БП на комманду другого сегмента Есть такое понятие, как контекст(context) - грубо говоря, адресное поле процесса. Софтайс может задать останов только в контексте текущего процесса(см. ниже уточнение) - достаточно часто при случайном останове ты попадаешь в idle(пустой процесс). Системные DLL( функция MessageBox в т.ч.) доступны во всех контекстах. В MessageBox ты попадаешь в контексте своего крякми. Для переключения контекста служит команда addr и это все описано в материалах для новичка. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Ужасяющая проблема с елементарными брейкпойнтами в SoftICE`е. Помогите... |