diffing-with-diaphora/i64tosqlite.py

46 lines
2.1 KiB
Python
Raw 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"IDA executable not found: {ida_executable}")
if not os.path.exists(i64_path):
raise FileNotFoundError(f".i64 file not found: {i64_path}")
if not os.path.exists(diaphora_script_path):
raise FileNotFoundError(f"Diaphora script not found: {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"SQLite database successfully created: {output_sqlite_path}")
except subprocess.CalledProcessError as e:
print(f"Error creating SQLite database: {e}")
except Exception as e:
print(f"Unknown error: {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)