a. 두 바이너리 → 두 .BinExport : py-bindiff 내에서 py-binexport 라이브러리와 IDA-Pro를 사용.(우리는 기드라를 씁니다)
b. 두 .BinExport diffing : py-bindiff 내에서 bindiff.exe 실행파일을 직접 호출하여 작업.
c. diff 파일 생성 : 두 바이너리와 연관되어 각 프로그램 객체에 내장됨
a. 바이너리 → .binexport : Ghidra(ver : 11.0.3) + binexport(ver : 12)
b. .binexport → .BinDiff : Bindiff(ver : 8)
c. .Bindiff → 가시화 : Bindiff(ver : 8)
a. 바이너리 → .binexport : python-Ghidra(ver : ?) + binexport(ver : ?)
b. .binexport → .BinDiff : python-bindiff(ver : ?)
c. .Bindiff → 가시화 : Bindiff(ver : ?)
IDE: PyCharm Community Edition 2024
python: python 3.12.9(반드시 3.9 버전 이상을 사용해야 함)
Ghidra: 11.3.1
bindiff: 8.msi
BinExport: 12(Updated for Ghidra 11.0.3)
#include <stdio.h>
void func() {
printf("simple\n");
}
int main() {
func();
return 0;
}
#include <stdio.h>
void func() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
if (sum > 1000) {
printf("Large sum: %d\n", sum);
}
else {
printf("Small sum: %d \n", sum);
}
}
int main() {
func();
return 0;
}



"C:\Program Files\BinDiff\bin\bindiff.exe" "D:\BinDiffTest\func_v1.BinExport" "D:\BinDiffTest\func_v2.BinExport" --output_dir "D:\BinDiffTest"


from bindiff import BinDiff
# 경로 설정
primary = "D:/BinDiffTest/func_v1.BinExport"
secondary = "D:/BinDiffTest/func_v2.BinExport"
diff_file = "D:/BinDiffTest/func_v1_vs_func_v2.BinDiff"
# BinDiff 로딩
diff = BinDiff(primary, secondary, diff_file)
# 변경된 함수만 출력
print("🔍 변경된 함수 (similarity < 1.00):")
for primary_func, secondary_func, match in diff.iter_function_matches():
if match.similarity < 1.0:
print(f"⚠️ {primary_func.name} ↔ {secondary_func.name} → similarity: {match.similarity:.2f}")


