eXeL@B —› Вопросы новичков —› В стеке есть нужная инфа - как добраться до процедуры? |
Посл.ответ | Сообщение |
|
Создано: 13 октября 2017 12:51 · Поправил: egorus2010 · Личное сообщение · #1 Допустим, "исследую" прогу. Так как я новичок, то методы у меня в итоге сходятся к одному - изменять флаги на переходах, которые мне не понравились. Прошу не плеваться, только учусь, и куда еще писать, как не в тему для новичков... В общем, случайно вижу в стеке (но ниже ESP, строк 5-6) есть надпись (номера так, от балды): 12321431 65425542 ASCII "LIC!" То есть, возможно что-то собиралось лицензироваться. Как это можно использовать? И вообще, как добраться до той процедуры? Как узнать, кто и когда это положил в стек? Ясно, что если поставить бряк на память, где эта строка находится - то он не сработает, так как на "Лицензировано" просто так не попадешь. (пока Olly) |
|
Создано: 13 октября 2017 12:54 · Личное сообщение · #2 по стеку вверх. еще смотреть в сторону IDA. все уже придумано, это не 90-е ----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: Rio |
|
Создано: 13 октября 2017 15:23 · Личное сообщение · #3 Ну так мы, сопливые, по туториалам из 90-х и обучаемся. Других не пишут.... Так дальше можно спрашивать? Ну выше на одну строку было return to прога.12345678. Еще выше или ниже по стеку только адреса, без подсказок. Но ведь могло быть так, что стек уже 10 раз туда-сюда перезаписали выше той строки, пока я ее заметил? И return уже от другой процедуры? Я уже сказал, я увидел строку не на вершине стека. |
|
Создано: 13 октября 2017 17:20 · Личное сообщение · #4 Проще смотреть в IDA, и не в отладчике, а в статическом режиме. Начать с поиска критической строки, а дальше всё потянется само собой. Olly вам таких возможностей не даст. | Сообщение посчитали полезным: egorus2010 |
|
Создано: 13 октября 2017 19:47 · Поправил: difexacaw · Личное сообщение · #5 egorus2010 Если сформулировать в вашем контексте задачу - как обнаружить появление нужной строки в области стековой памяти. Корректная же формулировка задачи - как обнаружить известную ссылку, тоесть DFG к ней. Для обнаружения желаемого указателя вы должны пройти следующий путь: 1. Реализовать визор, что бы отследить все выборки данных(DF). Вы можите использовать эмуляторы, гипервизоры и прочее. 2. Реализовать менеджер памяти, иначе профайл просядет и не будет смысла в 1. Вы должны мониторить рабочий набор(WS). Это делаетя в юм. Как это сделать иначе, заколхозить - никак, если только снять трассу и как то её анализить, но это дикий изврат. Это частая задача и она никак не резолвится иначе. Поиск решений в обход данной задачи её не решает, это решает лишь исходную задачу, для которой и нужно было мониторить DF. Добавлено спустя 11 минут ksol Ида статик инструмент и не отслеживает потоки данных, это даже не отладчик. Вы можите через этот дизасм обнаружить в динамике выборку данных и предшествующую ей ? Отсыпьте и мне травы или чем там вы долбитесь, что в рассудке корреляции. ----- vx |
|
Создано: 14 октября 2017 01:11 · Поправил: anonymous · Личное сообщение · #6 egorus2010 Много статей,не ленитесь, учите матчасть https://exelab.ru/art/ difexacaw Отсыпьте и мне травы или чем там вы долбитесь, что в рассудке корреляции Возьмите на тумбочек "ВАЛЕРИАНА таблетку ",положте ее в рот ,через несколько минут большой мягкий Винни-пух поцелует тебя в щеку из-за вашего плеча,возьмет за руку и поведет на прогулку в мультяшный красивый красочный мир. |
|
Создано: 14 октября 2017 01:18 · Личное сообщение · #7 |
|
Создано: 14 октября 2017 02:49 · Поправил: difexacaw · Личное сообщение · #8 rmn В статике оно решается через поиск прямых указателей. Но если же ссылок таких нет - апп накрыто слоем пакера или это 64 апп, где используется RIP адресация и нет прямых ссылок, то нормально не разбирается, увы. ----- vx | Сообщение посчитали полезным: ClockMan |
|
Создано: 14 октября 2017 08:58 · Личное сообщение · #9 difexacaw пишет: В статике оно решается через поиск прямых указателей. Но если же ссылок таких нет - апп накрыто слоем пакера или это 64 апп, где используется RIP адресация и нет прямых ссылок, то нормально не разбирается, увы. Добавлю ещё смотри в стеке ниже строчки адреса возврата в функции может помочь выйти на сому функцию ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 14 октября 2017 09:20 · Личное сообщение · #10 egorus2010, посмотри статьи | Сообщение посчитали полезным: egorus2010, plutos |
|
Создано: 14 октября 2017 16:20 · Личное сообщение · #11 difexacaw пишет: Ида статик инструмент и не отслеживает потоки данных, это даже не отладчик. -- Нет, IDA это универсальный инструмент: кроме возможностей статического анализа имеются отладчики локальный и для удалённой отладки. Их можно применять отдельно или комбинировать со статическим рассмотрением. Но главное, всё же, и чего нет в Olly, это сильно разработанный аппарат статического анализа. |
|
Создано: 14 октября 2017 19:43 · Личное сообщение · #12 |
|
Создано: 14 октября 2017 20:18 · Личное сообщение · #13 |
|
Создано: 14 октября 2017 21:33 · Поправил: Rio · Личное сообщение · #14 FreshNoob пишет: она выполняет те - же доступные действия конкретно, кто это "она" и какие "действия"?, сформулируйте. И самое главное каким образом Вы определяете необходимую Вам процедуру? Если Вы определили, то в чём собственно вопрос? | Сообщение посчитали полезным: difexacaw |
|
Создано: 14 октября 2017 21:52 · Поправил: difexacaw · Личное сообщение · #15 |
|
Создано: 14 октября 2017 23:01 · Личное сообщение · #16 egorus2010 пишет: Других не пишут.... Потому что в них нет необходимости, это устаревший мусор и в наши дни он уже неактуален, поскольку есть нормальные учебники на доступном языке. Прежде чем браться за отладчик все же неплохо изучить основы, вы ведь элементарного не знаете, например устройство стека, а это что то на уровне начальной арифметики в данной сфере. 0. Изучите базовые понятия и принципы их работы. 1. Выучите C, хотя бы до уровня - умею читать. В процессе изучите работу отладчика. 2. Выучите ассемблер, хотя бы на уровне самых распространенных команд. 3. Изучите базовое устройство операционной системы. 4. Практика, практика и еще раз практика. ... Профит. | Сообщение посчитали полезным: Rio |
|
Создано: 14 октября 2017 23:28 · Поправил: Rio · Личное сообщение · #17 |
|
Создано: 15 октября 2017 17:12 · Личное сообщение · #18 |
|
Создано: 06 декабря 2017 21:18 · Поправил: egorus2010 · Личное сообщение · #19 1. Manhunter почти всегда пишет (после нахождения Hiew в файле программы строчки о регистрации, триале и т.п.), скажем, "Register_Failed" "Переходим к дизассемблеру, чтобы посмотреть, где и каким образом эта строка используется." И у него вот так: .text:007A209D mov eax, offset aRegister_failed У меня так: .text:007A209D mov eax, offset off_7A2230 То ли IDA у меня не так настроена, то ли искать не умею, не там ищу и т.п. Хотя в Olly легко находится: Text strings referenced Text string=UNICODE "Register_Failed" И "Register_Success" тоже есть. 2. Или, например, нужно найти команду PUSH 74h в IDA. Как эти вопросы решаются? |
|
Создано: 06 декабря 2017 22:59 · Поправил: dosprog · Личное сообщение · #20 |
|
Создано: 07 декабря 2017 10:20 · Личное сообщение · #21 |
|
Создано: 07 декабря 2017 10:42 · Личное сообщение · #22 egorus2010 пишет: .text:007A209D mov eax, offset aRegister_failed это в ручную сделано, смотри мануалы по ida. Да хоть тот же "Введение в реверсинг с нуля используя IDA PRO", рядом на форуме лежит. egorus2010 пишет: Хотя в Olly легко находится ну так она тебе просто статичную текстовую строку показала. egorus2010 пишет: Или, например, нужно найти команду PUSH 74h в IDA а зачем? |
|
Создано: 07 декабря 2017 11:25 · Поправил: egorus2010 · Личное сообщение · #23 Так Вы же меня на Manhunter и послали... Если разбираю мануалы, значит, нужно повторить, что там сделано. "Откроем InspectExe.dll в редакторе ресурсов и поищем либо строки из наг-окна, либо диалоговые окна, которые с ними связаны. Вот первый наг-скрин. Его индекс в ресурсах - 116, или же 74h в шестнадцатеричной системе счисления. Поищем это значение в дизассемблере." Push 74h |
|
Создано: 07 декабря 2017 11:46 · Личное сообщение · #24 |
|
Создано: 07 декабря 2017 12:12 · Поправил: egorus2010 · Личное сообщение · #25 Я пользуюсь Olly. И там я всё нахожу. Про Иду написал здесь, чтобы не создавать новые темы. К теме топика явно она не относится, конечно. А на Иду попал по вашим "перекрестным ссылкам" (Manhunter и т.п.) Вот и хотел по-быстрому прояснить небольшой момент... Добавлено спустя 10 минут В общем, Manhunter немного подсказал. Alt+T Правда, это и есть Search Text. Который я пробовал... И который у меня не сработал. Потому что оказывается, что push 74h - это не то же, что push 74h. Разницу видите? ЗЫ. А после добавления сообщения разница-то исчезает!!! Здесь вы видите по одному пробелу между Push и 74. В листинге IDA между Push и 74 пустота больше. И эта пустота не дает правильного результата поиска. Если скопировать значение из листинга в поиск - тогда да. А я вообще искал, что то типа Search command, как в Olly И не нашел... ЗЫЫ. Чтобы не гадать, сколько же в команде пробелов, сделал так. Сначала находим все PUSH, потом ctrl-F (Фильтр в найденном) и 74h. Тогда работает. ___________________________________ 2. По строкам. Как я понял, происходит так. Ищем в Hiew строку (буду в рамках конкретного примера) - Register_Failed Адрес - 7A2230. Находим в Иде по этому адресу строку. Даем ей имя aRegister_failed. Теперь на нее будут ссылаться так: mov eax, offset aRegister_failed |
eXeL@B —› Вопросы новичков —› В стеке есть нужная инфа - как добраться до процедуры? |