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)