-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild_integrated.sh
More file actions
executable file
·176 lines (149 loc) · 5.14 KB
/
build_integrated.sh
File metadata and controls
executable file
·176 lines (149 loc) · 5.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/bash
# 통합 빌드 스크립트 - 정적 탐지 + 동적 탐지
# 지원 플랫폼: macOS (Apple Silicon/Intel), Linux (AMD64/ARM64)
set -e
echo "=================================================="
echo "통합 빌드 스크립트 시작"
echo "=================================================="
# OS 및 아키텍처 탐지
OS=$(uname -s)
ARCH=$(uname -m)
echo "OS: $OS"
echo "Architecture: $ARCH"
echo ""
# 1. CryptoScanner (정적 탐지) 확인
echo "=================================================="
echo "1. CryptoScanner (정적 탐지) 확인 중..."
echo "=================================================="
cd CryptoScanner
# 기존 바이너리가 있는지 확인
if [ -f "CryptoScannerCLI" ]; then
echo "✅ 기존 CryptoScannerCLI 바이너리 발견, 사용합니다"
else
echo "⚠️ CryptoScannerCLI 바이너리가 없습니다. 빌드를 시도합니다..."
if [ "$OS" = "Darwin" ]; then
# macOS - Qt 없이 빌드 시도
make clean 2>/dev/null || true
make -j$(sysctl -n hw.ncpu) || {
echo "❌ Makefile 빌드 실패. qmake를 사용해 빌드합니다..."
qmake CryptoScannerCLI.pro
make -j$(sysctl -n hw.ncpu)
}
# CLI 바이너리 이름 변경
if [ -f "CryptoScannerGUI" ]; then
mv CryptoScannerGUI CryptoScannerCLI
fi
elif [ "$OS" = "Linux" ]; then
# Linux
make clean 2>/dev/null || true
make -j$(nproc)
# CLI 바이너리 이름 변경
if [ -f "CryptoScannerGUI" ]; then
mv CryptoScannerGUI CryptoScannerCLI
fi
else
echo "❌ 지원하지 않는 OS: $OS"
exit 1
fi
if [ -f "CryptoScannerCLI" ]; then
echo "✅ CryptoScannerCLI 빌드 완료"
else
echo "❌ CryptoScannerCLI 빌드 실패"
echo "기존 빌드된 바이너리를 사용하거나, 수동으로 빌드해주세요:"
echo " cd CryptoScanner && qmake CryptoScannerCLI.pro && make"
exit 1
fi
fi
cd ..
# 2. DynamicAnalysis (동적 탐지) 빌드
echo ""
echo "=================================================="
echo "2. DynamicAnalysis (동적 탐지) 빌드 중..."
echo "=================================================="
cd DynamicAnalysis
# 빌드 디렉토리 이름 설정
if [ "$OS" = "Darwin" ]; then
BUILD_DIR="build-macos"
elif [ "$OS" = "Linux" ]; then
BUILD_DIR="build-linux"
fi
# 기존 빌드 디렉토리 제거
rm -rf "$BUILD_DIR"
# CMake 빌드 (OpenSSL만 사용)
echo "CMake 구성 중..."
ENABLE_NSS_FLAG="-DENABLE_NSS=OFF"
if [ "$OS" = "Linux" ]; then
ENABLE_NSS_FLAG="-DENABLE_NSS=ON"
fi
cmake -S . -B "$BUILD_DIR" \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_AF_ALG=OFF \
-DENABLE_CRYPTODEV=OFF \
-DENABLE_LIBSODIUM=OFF \
-DENABLE_MBEDTLS=OFF \
-DENABLE_WOLFSSL=OFF \
-DENABLE_GNUTLS=OFF \
"$ENABLE_NSS_FLAG" \
-DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations"
echo "빌드 중..."
cmake --build "$BUILD_DIR" -j
echo "✅ DynamicAnalysis 빌드 완료"
echo " - 후킹 라이브러리: $BUILD_DIR/lib/"
echo " - CLI 도구: $BUILD_DIR/bin/dynamic_analysis_cli"
cd ..
# 3. 빌드된 파일들을 Electron 앱에 복사
echo ""
echo "=================================================="
echo "3. 빌드된 파일들을 Electron 앱에 복사 중..."
echo "=================================================="
# crypto-scanner-gui/src/main 디렉토리에 바이너리 복사
DEST_DIR="crypto-scanner-gui/src/main"
mkdir -p "$DEST_DIR"
# 정적 탐지 바이너리 복사
if [ -f "CryptoScanner/CryptoScannerCLI" ]; then
cp "CryptoScanner/CryptoScannerCLI" "$DEST_DIR/"
chmod +x "$DEST_DIR/CryptoScannerCLI"
echo "✅ CryptoScannerCLI 복사 완료"
fi
# patterns.json 복사
if [ -f "CryptoScanner/patterns.json" ]; then
cp "CryptoScanner/patterns.json" "$DEST_DIR/"
echo "✅ patterns.json 복사 완료"
fi
# 동적 탐지 바이너리 및 라이브러리 복사
if [ -f "DynamicAnalysis/$BUILD_DIR/bin/dynamic_analysis_cli" ]; then
cp "DynamicAnalysis/$BUILD_DIR/bin/dynamic_analysis_cli" "$DEST_DIR/"
chmod +x "$DEST_DIR/dynamic_analysis_cli"
echo "✅ dynamic_analysis_cli 복사 완료"
fi
# 후킹 라이브러리 복사
if [ "$OS" = "Darwin" ]; then
if [ -f "DynamicAnalysis/$BUILD_DIR/lib/libhook.dylib" ]; then
cp "DynamicAnalysis/$BUILD_DIR/lib/libhook.dylib" "$DEST_DIR/"
echo "✅ libhook.dylib 복사 완료"
fi
elif [ "$OS" = "Linux" ]; then
if [ -f "DynamicAnalysis/$BUILD_DIR/lib/libhook.so" ]; then
cp "DynamicAnalysis/$BUILD_DIR/lib/libhook.so" "$DEST_DIR/"
echo "✅ libhook.so 복사 완료"
fi
fi
echo ""
echo "=================================================="
echo "통합 빌드 완료!"
echo "=================================================="
echo ""
echo "다음 단계:"
echo "1. cd crypto-scanner-gui"
echo "2. npm install"
echo "3. npm run build"
if [ "$OS" = "Darwin" ]; then
echo "4. npm run dist"
elif [ "$OS" = "Linux" ]; then
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
echo "4. npm run dist:linux-arm"
else
echo "4. npm run dist:linux-amd"
fi
fi
echo ""