eXeL@B —› Вопросы новичков —› IDA: Как снять дамп аргументов функции ? |
Посл.ответ | Сообщение |
|
Создано: 13 августа 2017 14:34 · Поправил: i_am_kisly · Личное сообщение · #1 Всем мой пламенный привет! Я разбираю форматы файлов одной старой игрушки (Arcanum Of Steamworks and Magick Obscura 2001) коммерческой ценности она уже не представляет, всё ради комьюнити. И забуксовал на одной функции декодирования ArtId спрайта (unsigned int32) в текстовое имя файла. Моего скилла не хватает чтобы воспроизвести логику работы этой функции, но у меня есть список всех возможных АrtId. Можно ли средствами IDA вызвать код этой функции со своим списком аргументов "a1", и сделать дамп "a2" чтобы получить таблицу соответствия "a1 - a2" ? В ida я мягко говоря плаваю.. Буду рад любому ответу |
|
Создано: 13 августа 2017 14:43 · Личное сообщение · #2 |
|
Создано: 13 августа 2017 15:08 · Поправил: i_am_kisly · Личное сообщение · #3 Мне нужно не количество аргументов. У меня есть список всех значений для первого аргумента (несколько тысяч), и хочу получить для каждого из них значение по указателю для второго аргумента, которое генерируется во время выполнения функции (строка с именем файла). Чтобы использовать метод по ссылке, я должен запустить отладку игры в ida, и потратить десятки часов бегая по локациям. Или я не прав ? |
|
Создано: 13 августа 2017 15:25 · Личное сообщение · #4 https://github.com/36hours/idaemu ? можно под себя переписать | Сообщение посчитали полезным: i_am_kisly |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 13 августа 2017 15:42 · Личное сообщение · #5 |
|
Создано: 13 августа 2017 15:51 · Личное сообщение · #6 Я может чего то не понимаю, но эта функция принимает а1 и а2 параметры, а следовательно нужно смотреть выше, где эти параметры берутся и оттуда их и получить. Или как вариант хукнуть функцию и все параметры записать в текстовый файл, правда тогда придется побегать в игре или эмулировать выполнение кода, при условие что количество параметра а1 известно. |
|
Создано: 13 августа 2017 18:15 · Поправил: i_am_kisly · Личное сообщение · #7 RevCred пишет: https://github.com/36hours/idaemu ? Code:
а как в IDAPython оформить передачу второго аргумента ? корый вроде как указатель. Code:
когда я пытаюсь передать вторым аргументом что-то вроде ctypes.create_string_buffer() (ведь возвращаемый тип у него ctypes.c_char_Array_%) то получаю Code:
Моих знаний о ctypes чертовски не хватает. Кто-нибудь пробовал ? |
|
Создано: 14 августа 2017 20:20 · Личное сообщение · #8 |
|
Создано: 14 августа 2017 22:01 · Личное сообщение · #9 Спасибо, помогло! В общем для таких же увальней как и я: Выбираем в списке отладчиков Local Win32 Debugger, запускаем отладку и в стабильном состоянии ставим отладку на паузу. Далее в консоли (на моем примере): Code:
Если тут ида не умерла из-за ошибки, то я вас поздравляю Code:
Проверяю еще раз Code:
Все получилось, можно писать цикл для формирования словаря. |
|
Создано: 15 августа 2017 20:33 · Личное сообщение · #10 i_am_kisly 1. > У меня есть список всех значений для первого аргумента (несколько тысяч) - Накоплено значение аргумента A. 2. > и хочу получить для каждого из них значение по указателю для второго аргумента Тут мозг отказывается воспринимать ваше описание. Во первых вы не корректно написали предложение, оно двусмысленно и вообще не понятно, бред какой то. По указателю на второй аргумент мб ? Тогда в этом случае утверждение лишено смысла, так как значения нет, а есть их массив. В другом варианте на ум приходит массив множества допустимых вопросов. Переформулируйте эту чушь. Учитывая сам вопрос: > забуксовал на одной функции декодирования ArtId спрайта (unsigned int32) в текстовое имя файла. Каким образом спрайт имеет отношение к файловой системе и имеет размерность адресации представить сложно, видимо нужно вдуть теже грибы что и вы ----- vx |
|
Создано: 15 августа 2017 22:48 · Личное сообщение · #11 |
eXeL@B —› Вопросы новичков —› IDA: Как снять дамп аргументов функции ? |