История изменений
Исправление mittorn, (текущая версия) :
для каждого случая индивидуальные. Если например известно, что из функции вызывается какая-то другая, можно попытаться поставить брейк на ней и смотреть в стек.
Ещё может быть полезна конструкция:
print *(void*[64]*)($esp - 4)
Она распечатает окрестность стека в виде массива указателей.
Может оказаться полезной трассировка строковых операций.
Декомпиляторы к сожалению в своём большинстве платные, с достаточно дорогой лицензией.
Добавлю, что указатели обычно делятся на 3 группы:
1. указатели на кучу
2. указатели на стековую память
3. указатели на бинарник
Зная, где они примерно расположены, можно найти функции.
Анализируя листинг дизассемблера можно перечислить все функции в бинарнике по инструкциям call для x86 и bl (с разными флагами) для arm
Исправление mittorn, :
для каждого случая индивидуальные. Если например известно, что из функции вызывается какая-то другая, можно попытаться поставить брейк на ней и смотреть в стек.
Ещё может быть полезна конструкция:
print *(void*[64]*)($esp - 4)
Она распечатает окрестность стека в виде массива указателей.
Может оказаться полезной трассировка строковых операций.
Декомпиляторы к сожалению в своём большинстве платные, с достаточно дорогой лицензией, да и не панацея - как найти именно нужную функцию по декомпилу?
Исходная версия mittorn, :
для каждого случая индивидуальные. Если например известно, что из функции вызывается какая-то другая, можно попытаться поставить брейк на ней и смотреть в стек.
Ещё может быть полезна конструкция:
print *(void*[64]*)($esp - 4)
Она распечатает окрестность стека в виде массива указателей.
Может оказаться полезной трассировка строковых операций.
Декомпиляторы к сожалению в своём большинстве платные, с достаточно дорогой лицензией.