Сейчас на форуме: Lohmaty, tyns777 (+7 невидимых)

 eXeL@B —› Вопросы новичков —› В стеке есть нужная инфа - как добраться до процедуры?
Посл.ответ Сообщение

Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 13 октября 2017 12:51 · Поправил: egorus2010
· Личное сообщение · #1

Допустим, "исследую" прогу.
Так как я новичок, то методы у меня в итоге сходятся к одному - изменять флаги на переходах, которые мне не понравились. Прошу не плеваться, только учусь, и куда еще писать, как не в тему для новичков...

В общем, случайно вижу в стеке (но ниже ESP, строк 5-6) есть надпись (номера так, от балды):
12321431 65425542 ASCII "LIC!"
То есть, возможно что-то собиралось лицензироваться.
Как это можно использовать?
И вообще, как добраться до той процедуры? Как узнать, кто и когда это положил в стек?
Ясно, что если поставить бряк на память, где эта строка находится - то он не сработает, так как на "Лицензировано" просто так не попадешь.
(пока Olly)




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

Создано: 13 октября 2017 12:54
· Личное сообщение · #2

по стеку вверх. еще смотреть в сторону IDA. все уже придумано, это не 90-е

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


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

Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 13 октября 2017 15:23
· Личное сообщение · #3

Ну так мы, сопливые, по туториалам из 90-х и обучаемся.
Других не пишут....

Так дальше можно спрашивать?

Ну выше на одну строку было return to прога.12345678.
Еще выше или ниже по стеку только адреса, без подсказок.
Но ведь могло быть так, что стек уже 10 раз туда-сюда перезаписали выше той строки, пока я ее заметил?
И return уже от другой процедуры?

Я уже сказал, я увидел строку не на вершине стека.



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 13 октября 2017 17:20
· Личное сообщение · #4

Проще смотреть в IDA, и не в отладчике, а в статическом режиме.
Начать с поиска критической строки, а дальше всё потянется само собой.
Olly вам таких возможностей не даст.

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


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

Создано: 13 октября 2017 19:47 · Поправил: difexacaw
· Личное сообщение · #5

egorus2010

Если сформулировать в вашем контексте задачу - как обнаружить появление нужной строки в области стековой памяти. Корректная же формулировка задачи - как обнаружить известную ссылку, тоесть DFG к ней.

Для обнаружения желаемого указателя вы должны пройти следующий путь:

1. Реализовать визор, что бы отследить все выборки данных(DF). Вы можите использовать эмуляторы, гипервизоры и прочее.
2. Реализовать менеджер памяти, иначе профайл просядет и не будет смысла в 1. Вы должны мониторить рабочий набор(WS). Это делаетя в юм.

Как это сделать иначе, заколхозить - никак, если только снять трассу и как то её анализить, но это дикий изврат.

Это частая задача и она никак не резолвится иначе. Поиск решений в обход данной задачи её не решает, это решает лишь исходную задачу, для которой и нужно было мониторить DF.

Добавлено спустя 11 минут
ksol

Ида статик инструмент и не отслеживает потоки данных, это даже не отладчик. Вы можите через этот дизасм обнаружить в динамике выборку данных и предшествующую ей ?

Отсыпьте и мне травы или чем там вы долбитесь, что в рассудке корреляции.

-----
vx




Ранг: 2.1 (гость), 1thx
Активность: 0.020
Статус: Участник

Создано: 14 октября 2017 01:11 · Поправил: anonymous
· Личное сообщение · #6

egorus2010
Много статей,не ленитесь, учите матчасть
https://exelab.ru/art/

difexacaw Отсыпьте и мне травы или чем там вы долбитесь, что в рассудке корреляции
Возьмите на тумбочек "ВАЛЕРИАНА таблетку ",положте ее в рот ,через несколько минут большой мягкий Винни-пух поцелует тебя в щеку из-за вашего плеча,возьмет за руку и поведет на прогулку в мультяшный красивый красочный мир.



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 14 октября 2017 01:18
· Личное сообщение · #7

difexacaw
Тебя послушать, так скоро и хелловорлд без визора написать нельзя будет. Нормально все в статике разбирается. Разумеется, когда речь идет о реальном существующем софте, а не о твоих сферических конях

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


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

Создано: 14 октября 2017 02:49 · Поправил: difexacaw
· Личное сообщение · #8

rmn

В статике оно решается через поиск прямых указателей. Но если же ссылок таких нет - апп накрыто слоем пакера или это 64 апп, где используется RIP адресация и нет прямых ссылок, то нормально не разбирается, увы.

-----
vx


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


Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 14 октября 2017 08:58
· Личное сообщение · #9

difexacaw пишет:
В статике оно решается через поиск прямых указателей. Но если же ссылок таких нет - апп накрыто слоем пакера или это 64 апп, где используется RIP адресация и нет прямых ссылок, то нормально не разбирается, увы.

Добавлю ещё смотри в стеке ниже строчки адреса возврата в функции может помочь выйти на сому функцию

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





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

Создано: 14 октября 2017 09:20
· Личное сообщение · #10

egorus2010, посмотри статьи ManHunter, тебе по уровню должны отлично зайти.

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

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 14 октября 2017 16:20
· Личное сообщение · #11

difexacaw пишет:
Ида статик инструмент и не отслеживает потоки данных, это даже не отладчик.

-- Нет, IDA это универсальный инструмент: кроме возможностей статического анализа
имеются отладчики локальный и для удалённой отладки. Их можно применять отдельно
или комбинировать со статическим рассмотрением. Но главное, всё же, и чего нет в Olly,
это сильно разработанный аппарат статического анализа.




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

Создано: 14 октября 2017 19:43
· Личное сообщение · #12

ksol

Какой есчо отладчик ида. Этим говном ничего невозможно отлаживать. Виндебаг это отладчик и олли. Друг мой, ты не можешь даже примитивный SEH разобрать и прочее, о какой отладке вы вообще говорите

-----
vx




Ранг: 1.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 14 октября 2017 20:18
· Личное сообщение · #13

difexacaw

Мне как нубу интересно, что умеет оля, чего не может ида?
Насколько я видел, она выполняет те - же доступные действия, пусть не всегда так - же удобно, но выполняет.



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

Создано: 14 октября 2017 21:33 · Поправил: Rio
· Личное сообщение · #14

FreshNoob пишет:
она выполняет те - же доступные действия

конкретно, кто это "она" и какие "действия"?, сформулируйте.
И самое главное каким образом Вы определяете необходимую Вам процедуру?
Если Вы определили, то в чём собственно вопрос?

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


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

Создано: 14 октября 2017 21:52 · Поправил: difexacaw
· Личное сообщение · #15

FreshNoob

Можно на машине ездить, а можно на катке, ну том, что асфальт жмёт. Они оба ездят. Аналогия понятна ?

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 14 октября 2017 23:01
· Личное сообщение · #16

egorus2010 пишет: Других не пишут....

Потому что в них нет необходимости, это устаревший мусор и в наши дни он уже неактуален, поскольку есть нормальные учебники на доступном языке. Прежде чем браться за отладчик все же неплохо изучить основы, вы ведь элементарного не знаете, например устройство стека, а это что то на уровне начальной арифметики в данной сфере.
0. Изучите базовые понятия и принципы их работы.
1. Выучите C, хотя бы до уровня - умею читать. В процессе изучите работу отладчика.
2. Выучите ассемблер, хотя бы на уровне самых распространенных команд.
3. Изучите базовое устройство операционной системы.
4. Практика, практика и еще раз практика.
...
Профит.

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

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

Создано: 14 октября 2017 23:28 · Поправил: Rio
· Личное сообщение · #17

FreshNoob
читайте ЛС (личные сообщения)



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 15 октября 2017 17:12
· Личное сообщение · #18

difexacaw пишет:
Друг мой, ты не можешь даже примитивный SEH разобрать и прочее, о какой отладке вы вообще говорите

А вы, прям, из больницы и сюда...!?



Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 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.

Как эти вопросы решаются?



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

Создано: 06 декабря 2017 22:59 · Поправил: dosprog
· Личное сообщение · #20

egorus2010 пишет:
Как эти вопросы решаются?

Решаются.
) Но пусть не обманывает manhunter'овская лёгкость стиля.

egorus2010 пишет:
То ли IDA у меня не так настроена, то ли искать не умею, не там ищу и т.п.

Отредактировано для вящего понимания. Это нормально.





Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 07 декабря 2017 10:20
· Личное сообщение · #21

Ну так как в листинге найти команду PUSH 74h (в IDA)?
Нравоучения я выслушал - весь красный, стыдно и т.д. и т.п.
Ответ на вопрос есть?




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

Создано: 07 декабря 2017 10:42
· Личное сообщение · #22

egorus2010 пишет:
.text:007A209D mov eax, offset aRegister_failed


это в ручную сделано, смотри мануалы по ida. Да хоть тот же "Введение в реверсинг с нуля используя IDA PRO", рядом на форуме лежит.

egorus2010 пишет:
Хотя в Olly легко находится


ну так она тебе просто статичную текстовую строку показала.

egorus2010 пишет:
Или, например, нужно найти команду PUSH 74h в IDA


а зачем?



Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 07 декабря 2017 11:25 · Поправил: egorus2010
· Личное сообщение · #23

Так Вы же меня на Manhunter и послали...
Если разбираю мануалы, значит, нужно повторить, что там сделано.

"Откроем InspectExe.dll в редакторе ресурсов и поищем либо строки из наг-окна, либо диалоговые окна, которые с ними связаны. Вот первый наг-скрин. Его индекс в ресурсах - 116, или же 74h в шестнадцатеричной системе счисления. Поищем это значение в дизассемблере."
Push 74h




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

Создано: 07 декабря 2017 11:46
· Личное сообщение · #24

Меня смутила строчка в первом посте "вижу в стеке (но ниже ESP, строк 5-6) есть надпись", исходя из которой сделал вывод, что понимание о том, как пользоваться инструментом в наличии.
Разумеется, стоит ознакомиться хотя бы с азами использования инструмента.



Ранг: 5.8 (гость), 2thx
Активность: 0.040
Статус: Участник

Создано: 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 —› Вопросы новичков —› В стеке есть нужная инфа - как добраться до процедуры?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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