Как узнать адрес в двоичном файле только с кодом Python? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть двоичный файл, например https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/nmap

1) Как найти адрес этой серии байтов: 48 8B 45 A8 48 8D 1C 02 48 8B 45 C8?, результат должен быть 0x6B0C67

2) Как узнать 12 байтов, которые в адресе 0x6B0C67?результат должен быть 48 8B 45 A8 48 8D 1C 02 48 8B 45 C8.

3) Как найти, какой адрес вызова конкретной строки?например i + 1 == features[i].index, которые находятся в 0x6FC272?результат должен быть 0x4022F6

Как я могу найти все это без открытого Ida?только с кодом Python / C?

спасибо

1 Ответ

1 голос
/ 03 мая 2019

Для 1) Ваш файл достаточно мал для загрузки в память?Тогда это так же просто, как

offset = open(file, 'rb').read().find(
    bytes.fromhex("48 8B 45 A8 48 8D 1C 02 48 8B 45 C8")
)

# offset will be -1 if not found

Если нет, вам нужно будет прочитать его кусками.

Для 2), выполните

with open(file, 'rb') as stream:
   stream.seek(0x6b0c67)
   data = stream.read(12)

БоюсьЯ не понимаю вопроса в 3) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...