Обработка имен в IDAPython - PullRequest
0 голосов
/ 04 апреля 2019

Я работаю над небольшим скриптом IDAPython.

Сам скрипт работает 100% времени на таких строках:

qword_FFFFFFF006F1E6C0 DCQ 0xFFFFFFF007758C18

Как это выглядитв адрес 0xFFFF.. видит, есть ли там функция, и, если есть, переименовывает qword с именем функции + информация о сегменте.

Теперь, иногда, разборка выглядит так:

off_FFFFFFF006F1E690 DCQ OSDictionary::withCapacity(uint), и, конечно, здесь сценарий ломается (ожидает адрес, ему дается имя ..).

Что я хотел бы сделать, это получить адрес второго операнда (OSDictionary::with...) и выполните скрипт как обычно.

К сожалению, я понятия не имею, как это сделать, чтобы получить адрес, который я использую:

disas = GetDisasm(addr).split(" ")
fun_addr = disas[1]
....

1 Ответ

0 голосов
/ 06 апреля 2019

Если вы всегда хотите адрес получателя, вы можете использовать функцию get_qword

https://www.hex -rays.com / products / ida / support / idadoc / 1321.shtml

Какая функция Qword в IDAPython.Просто сделайте Qword(addr), это даст вам адрес в виде числа.Возможно, вам придется компенсировать порядковый номер (используйте структуру).

...