diffing-with-diaphora/i64tosqlite.py

46 lines
2.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import os
import subprocess
def create_sqlite_from_i64(ida_executable, i64_path, diaphora_script_path, output_sqlite_path):
"""
Создаёт SQLite базу данных из .i64 базы данных с использованием Diaphora.
Пример использования в блоке if __name__ == "__main__"
"""
if not os.path.exists(ida_executable):
raise FileNotFoundError(f"\033[31mIDA executable not found:\033[0m {ida_executable}")
if not os.path.exists(i64_path):
raise FileNotFoundError(f"\033[31m.i64 file not found:\033[0m {i64_path}")
if not os.path.exists(diaphora_script_path):
raise FileNotFoundError(f"\033[31mDiaphora script not found:\033[0m {diaphora_script_path}")
# Формируем команду для запуска IDA Pro с Diaphora
cmd = [
ida_executable,
"-A", # Автоматический режим (без GUI)
f"-S{diaphora_script_path}", # Скрипт Diaphora
i64_path # Входной .i64 файл
]
# Устанавливаем переменные окружения для Diaphora
env = {
"DIAPHORA_AUTO": "1", # Автоматический режим
"DIAPHORA_USE_DECOMPILER": "1", # Использовать декомпилятор (если доступен)
"DIAPHORA_EXPORT_FILE": output_sqlite_path, # Путь для сохранения SQLite
}
try:
subprocess.run(cmd, env=env, check=True)
print(f"\033[92mSQLite database successfully created:\033[0m {output_sqlite_path}")
except subprocess.CalledProcessError as e:
print(f"\033[31mError creating SQLite database:\033[0m {e}")
except Exception as e:
print(f"\033[31mUnknown error:\033[0m {e}")
if __name__ == "__main__":
ida_executable = r"C:\tools\IDA\ida.exe" # Путь к IDA Pro
i64_path = r"C:\tools\ilya.exe.i64" # Путь к .i64 файлу
diaphora_script_path = r"C:\tools\diaphora\diaphora_ida.py" # Путь к скрипту Diaphora
output_sqlite_path = r"C:\tools\123.exe.sqlite" # Путь для сохранения SQLite
create_sqlite_from_i64(ida_executable, i64_path, diaphora_script_path, output_sqlite_path)