eXeL@B —› Вопросы новичков —› Как найти функцию выделившую память ? |
Посл.ответ | Сообщение |
|
Создано: 29 августа 2017 13:51 · Личное сообщение · #1 Всем привет! Есть функция-метод класса, читает значения по определенному адресу в памяти и рисует картинку. Адрес каждый раз меняется. Значения по тому адресу записываются только один раз, во время инициализации приложения. Мне нужно найти функцию, которая записала туда значения. Есть ли специальные инструменты или плагины для OllyDbg, x64dbg позволяющие посмотреть какая функция память выделяет и по какому адресу ? Сама прога это демка: 0x0041524b адрес функции-метода Code:
|
|
Создано: 29 августа 2017 13:55 · Личное сообщение · #2 |
|
Создано: 29 августа 2017 15:55 · Личное сообщение · #3 |
|
Создано: 29 августа 2017 17:17 · Личное сообщение · #4 trololp пишет: Я не могу поставить брейкпоинт не зная адреса А кто мешает узнать? Код не смотрел, но тут либо можно восстановить по RVA при обращении, или если такой подход не применим, просто логируете один раз все выделения памяти до обращения (далеко не оптимальный, слегка колхозный вариант, но за незнанием сабжа единственное что в лоб можно предложить) и по адресу вызова смотрите из какого участка кода была создана память и бэктрейсите (или наоборот) до искомой функции. В общем-то делов минут на 5 даже при таком подходе. | Сообщение посчитали полезным: trololp |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 29 августа 2017 17:38 · Личное сообщение · #5 Code:
а не проще посмотреть под кем регион ходит?!? если я правильно понял, нужно вот ето: Code:
|
|
Создано: 29 августа 2017 20:07 · Поправил: trololp · Личное сообщение · #6 Я нашел что искал ! VOLKOFF сделал по вашему колхозному методу. поставил condition break на функцию new(int size) и ограничил вывод 1000 срабатываниями(после того как x64dbg упал ). sub_414B40 функция которая выделяет память . По всей видимости координаты полигонов генерируются в этой функции. приложение не хранит их в какой-то структуре а генерирует один раз при каждом запуске. |
|
Создано: 29 августа 2017 22:23 · Личное сообщение · #7 |
|
Создано: 30 августа 2017 01:35 · Личное сообщение · #8 trololp Что бы не колхозить, нужно немного матчасть знать. Устанвливаем конфиг для процесса(globalflags) маркер USER_STACK_TRACE и получаем полный бэктрейс аллокаций в виде базы данных. Для анализа лога есть даже спец тулз Но мисье не исчет простых путей и в данном случае заколхозить удалось, хоть при этом и пал отладчик ----- vx |
|
Создано: 30 августа 2017 18:02 · Личное сообщение · #9 |
eXeL@B —› Вопросы новичков —› Как найти функцию выделившую память ? |
Эта тема закрыта. Ответы больше не принимаются. |