Сейчас на форуме: asfa, bartolomeo (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Подскажите как поймать источник неявного перехода в Олли ? |
Посл.ответ | Сообщение |
|
Создано: 21 января 2012 19:27 · Личное сообщение · #1 Вобщем все выглядит так, есть участок кода, на начале которого я поставил брейкпоинт? При нажатии F9 программа перепрыгивает туда из 4-х разных (ну может два раза и из одинаковых) мест. Явных переходов на начало этого кода нет. Как узнать, из какого места программа туда попадает? Пробовал трассировать пошагово, но палец устал ![]() ![]() |
|
Создано: 21 января 2012 19:35 · Личное сообщение · #2 |
|
Создано: 23 января 2012 20:45 · Поправил: Kuzya69 · Личное сообщение · #3 Dart Sergius Благодарю, помогло. Трассировка вскрыла все завуалированные переходы. Но возникла очередная загвоздка. Оказалось, что нужное значение в регистре EDI появляется из стека командой popad, и явно в регистрах РОН не расчитывается. В журнале трассировки не вижу ни одного похожего байта. Можно как-то отследить момент появления этого значения в стеке? ![]() |
|
Создано: 23 января 2012 21:04 · Личное сообщение · #4 |
|
Создано: 23 января 2012 21:18 · Поправил: Kuzya69 · Личное сообщение · #5 |
|
Создано: 23 января 2012 22:32 · Поправил: Dart Sergius · Личное сообщение · #6 |
|
Создано: 24 января 2012 12:07 · Поправил: Kuzya69 · Личное сообщение · #7 Начал отлавливать пересылки и изменения в стеке. И изменил содержимое регистра, чтоб убедиться что на выходе изменится именно он. И программа вывалилась в "терминейтед". Такое и раньше случалось. Перезапустил - опять терминейтед. Удалил файлы истории ".udd" и ".bak". Не погло, а раньше помогало. Откатился на день назад восстановлением системы, тоже не помогло. Настройки Олли те-же, что и раньше были (включен фантом первая галка). Пишет "Thread 000013E4 terminated, exit code 0". Модуль ntdll. Я так понимаю, что меня "программа раскусила? А как мне ее опять обойти? Может надо как-то в ини-файле Олли переменить название (где-то видел но не помню где эту инфу), или еще чего? ![]() |
|
Создано: 24 января 2012 18:32 · Поправил: tundra37 · Личное сообщение · #8 |
|
Создано: 24 января 2012 19:22 · Поправил: Kuzya69 · Личное сообщение · #9 Так сама-то программа работает, а вот из Олли вываливается. И что значит "обратный дизассемблер"? Это опять трассировать? Или придется ИДУ применять? Просто ИДУ я совсем пока не знаю. Да я и Олли-то еще не изучил. У себя в своей папке прога не могла накосячить, потому-что она запускается обыкновенно как портабле версия. Видимо все-таки реестр или системные папки. А как подменить "название Олли", или хэндл процесса, или по чему еще там программа может Олли определять? А вот еще забыл дописать. Олли подключается к процессу,программа останавливается на ЕР, а вот при следущем нажатии F9 вываливается из Олли, и продолжает работать без Олли. ![]() |
|
Создано: 24 января 2012 19:49 · Личное сообщение · #10 Кстати фантом ща уже малясь устарел. Если дровина нужна(применяется RDTSC? ) то можно глянуть StrongOD, только вместе их драйвера не включай ![]() TerminateThread смотри когда вызывается. Модуль ntdll - потому что это последний модуль вызванный в user-mode до уничтожения потока.( Если хочешь проверить там как раз вызывается sysenter) ![]() |
|
Создано: 24 января 2012 20:06 · Личное сообщение · #11 |
|
Создано: 24 января 2012 20:29 · Личное сообщение · #12 Dart Sergius В смысле, вместе драйвера не включать? Фантом и стронгОД вместе, или внутри стронга галки по одной ставить? И еще вопрос, достаточно-ли, при использовании СтронгОД просто отрубить галки в Фантоме, или нужно обязательно длл фантома удалить? tundra37 Нет Олли я не крутил, да и проверил, настройки те-же. К тому-же у меня несколько Олли, и все они одновременно, не заработали с этой прогой. Да к тому-же еще и другие версии этой проги тоже перестали подключаться к Олли. ![]() |
|
Создано: 24 января 2012 20:37 · Личное сообщение · #13 |
|
Создано: 24 января 2012 21:17 · Личное сообщение · #14 |
|
Создано: 24 января 2012 22:01 · Личное сообщение · #15 |
|
Создано: 27 января 2012 15:32 · Личное сообщение · #16 Ну в общем Стронг ОД действительно помог. Но все равно программа переодически вываливается в терминайтед. Но удаление ".udd" и ".bak" спасает. Может это быть из-за неверно установленных Б-Поинтов? Тоесть я ставлю куда-нибудь брейкпоинт программа вываливается. Удаление самого БП уже не помогает, удаляю историю, ставлю БП в другое место и прога продолжает работать, пока опять не "угадаю убивающее место" для БП. И где можно прочесть про все галки в СТРОНГ-ОД? ![]() |
|
Создано: 27 января 2012 16:19 · Личное сообщение · #17 |
|
Создано: 27 января 2012 20:03 · Личное сообщение · #18 Да прогу-то выложу, только без шнура в котором серийник и лицензия тест не пройти. А я и пытаюсь понять каким образом высчитывать правильно серийник и лицензию. Чтоб шнур проходил регистрацию. Правда сам нахожусь в самом начале. Выложить ехе-шник или инсталлятор? Это ВЦДС от Росс-Теч. И сюда ничего не влезет, больше 500кб и ехе-шник и инсталлятор. Куда выложить лучше? ![]() |
|
Создано: 27 января 2012 22:57 · Личное сообщение · #19 |
|
Создано: 28 января 2012 13:25 · Личное сообщение · #20 Так и не понял чего заливать? Ехе или инсталлер. Залил оба. http://zalil.ru/32594677 Вы говорите "про галки-понятно по названиям", но я то начинающий. Мне понятна только первая галка. А вот например что делает эта галка я не знаю "AdvEnumMode"? Да и остальные смысл вроде немного понятен, но сам процесс, который она делает, не особо ясен. Хотяб хелпик какой рядом с ним лежал в текстовом файле. ![]() |
|
Создано: 28 января 2012 18:02 · Личное сообщение · #21 |
|
Создано: 28 января 2012 18:32 · Поправил: ARCHANGEL · Личное сообщение · #22 А вот например что делает эта галка я не знаю "AdvEnumMode" Advanced Enumerate Mode - скрывает олли от перечисления процессов, т.е. от всяких NtQuerySystemInformation. Patch float - патчит баг с плавающей точкой. Уже много раз проскакивали обсуждения на эту тему. Adv Ctrl+G - расширяет стандартный функционал этого окна, что позволяет выбирать режимы VA/API, RVA or Offset. ShowBar - в левом нижнем углу появляется командная строка. Break on Tls - позволяет остановиться на Tls Callback ещё до ЕР. Load Symbols - позволяет подгружать отладочные символы. Kill BadPe Bug - исправляет баг ольки, при котором она на нормальные файлы с подкорректированными ручками Number of RVA and Sizes пишет, что файл невалидный. Anti Anti-attach - ну и так ясно Skip some exceptions - аналог custom exception handler фантома Remove Ep one shot - не ставит бряк на ЕР, которое читает из заголовка AutoUpdate - а как вы думаете? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 28 января 2012 19:09 · Поправил: Kuzya69 · Личное сообщение · #23 Dart Sergius Я исследую зону после нажатия клавиши "Тест", исследую все проверки серийников, ЧИП-ИД, и лицензионника. Там все и без снятия протектора выявляется, если не считать косяков с терминейтед. А протектор я еще не научился снимать. ARCHANGEL Спасибо, полезный хелпик. AutoUpdate, кстати пытался обновиться, но больше 42% не прошло ни разу. Ну может ВайФай виноват. А кстати можно вместо КоммандБара из Стронг ОД, использовать КоммандБар из Олли ? Не будет конфликтов? И нет-ли каких "запрещенных" комбинаций галок, не обязательно внутри СтронгОД. Например: "нельзя вместе использовать галку "А" из Стронга с галкой "В" из ОллиДамп". ![]() |
|
Создано: 28 января 2012 20:09 · Личное сообщение · #24 лови тогда версию последнюю вроде. тебе описание дали, значит смотри чтобы "галочки не делали одно и тоже. Лучше от этого не будет. ![]() ![]() |
|
Создано: 29 января 2012 03:06 · Поправил: Kuzya69 · Личное сообщение · #25 Я или не могу сообразить, как правильно поставить условие трассировки, или меня программа "поймала в бесконечный цикл". В стеке по определенному адресу (всегда один и тот-же) появляется нужное значение, оно там появляется уже более 200 раз и пропадает, причем появляется из разных мест. Я трассирую кусок от одной точки (где для расчета этого значения данные только что считались в память), до того, где это значение уже точно расчитано. Как отследить именно последнее появление этого значения в стеке при трассировке? Или хотя-бы заставить трассировку выводить вместе с регистрами еще и содержание нужного адреса стека ? Условие "byte ptr ss:[0012D19A]==29", при трассировке очень часто останавливает трассирование и еще никак не дошло до конца исследуемого участка. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Подскажите как поймать источник неявного перехода в Олли ? |