44 lines
1.3 KiB
Bash
44 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
export WINEPREFIX="/wine/prefix"
|
|
export WINEARCH=win32
|
|
export WINEDEBUG=-all
|
|
|
|
# Accept target filename as first argument
|
|
TARGET_FILENAME="${1:-target.exe}"
|
|
|
|
# Ensure required input files exist in the mounted volumes
|
|
if [ ! -f "/input/${TARGET_FILENAME}" ]; then
|
|
echo "[ERROR] Missing /input/${TARGET_FILENAME}"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "/app/ida/extract.idc" ]; then
|
|
echo "[ERROR] Missing /app/ida/extract.idc"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[INFO] Preparing internal analysis environment..."
|
|
cp "/input/${TARGET_FILENAME}" "/app/ida/target.exe"
|
|
|
|
# Force IDA to suppress all initial compiler dialogs and welcome screens
|
|
echo -e "ASK_COMPILER = NO\nASK_EXIT = NO\nDISPLAY_WELCOME = NO" >> /app/ida/ida.cfg
|
|
|
|
echo "[INFO] Launching IDA Pro 5 in headless batch mode..."
|
|
xvfb-run -a wine idag.exe -A -c -S"extract.idc" "target.exe"
|
|
|
|
echo "[INFO] Verifying generated artifacts..."
|
|
if [ -f "/app/ida/output.json" ]; then
|
|
cp /app/ida/output.json /output/output.json
|
|
echo "[SUCCESS] Static analysis completed. output.json is ready!"
|
|
RET_CODE=0
|
|
else
|
|
echo "[ERROR] IDC script failed to generate output.json"
|
|
RET_CODE=1
|
|
fi
|
|
|
|
# Clean up temporary files inside the container before exiting
|
|
rm -f /app/ida/target.exe /app/ida/target.idb /app/ida/output.json
|
|
|
|
exit $RET_CODE
|