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)