• XSS.stack #1 – первый литературный журнал от юзеров форума

IDAPython codesnippets

ph0enix.re

RAID-массив
Пользователь
Регистрация
04.08.2010
Сообщения
60
Реакции
0
Q : Как перечислить все функции в файле

Для этого нам нужно несколько функций

idautils.Segments()
возвращает список всех сегментов в бинарном файле

idc.SegStart(ea)
возвращает начальный адрес сегмента или BADADDR
ea - любой адрес в сегменте

idc.SegEnd(ea)
возвращает конечный адрес сегмента или BADADDR
ea - любой адрес в сегменте

idaapi.Functions(start, end)
возвращает список всех функций попавших в отрезок start - end

idc.GetFunctionName(ea)
возвращает имя функции по указанному адресу или пустую строку в случае если функции нет.

Код :

Код:
# Перечисляем все сегменты в файле, тк кодовых сегментов может быть несколько
for segEa in Segments():    

        # Перечисляем все функции в границах сегмента
        for funcEa in Functions(SegStart(segEa), SegEnd(segEa)):

                   name = GetFunctionName(funcEa)
                   print "func %s at 0x%x" % (name, funcEa)
 
Q : Как перечислить все импорты в файле

Необходимые функции :

idaapi.get_import_module_qty()
возвращает количество длл из которых происходит импорт

idaapi.get_import_module_name(i)
получаем имя dll из импорта с номером i

idaapi.enum_import_names(i, callback)
перечисляет импортируемые символы для каждого вызывая callback
сигнатура коллбэка:

def callback(ea, name, ordinal)
где
ea - адрес импорта
name - имя функции
ordinal - ординал функции

Код :

Код:
def print_import(ea, name, ordinal):

        if name:
             print "import : 0x%x -> %s" % (ea, name)
        else:
             print "import : 0x%x -> ord#%d" % (ea, ordinal)

        return True # продолжать перечисление


nimps = idaapi.get_import_module_qty()

for i in range(0, nimps):

         name = idaapi.get_import_module_name(i)

        if not name:

                 print "Failed get import name for %d" % i
                 continue

        print "walking -> %s" % name
	
        idaapi.enum_import_names(i, print_import)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх