46 lines
2.2 KiB
Python
46 lines
2.2 KiB
Python
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) |