android_class_shadowing_sca.../check_smali.sh

50 lines
1.4 KiB
Bash

#!/usr/bin/bash
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
source "${SCRIPT_DIR}/setup.sh"
PLATFORM_DIR=$(mktemp -d)
unzip "${PLATFORM_ZIP}" -d "${PLATFORM_DIR}"
for ad in "${PLATFORM_DIR}"/**/{platform,sdk}; do
cd ${ad}
for jar in "${ad}"/*.jar; do
java -Xmx8G -jar ${APKTOOL} d "${jar}"
done
done
cd "${WD}"
if [ -d "${OUT_SMALI_CHECK}" ]; then
rm -r "${OUT_SMALI_CHECK}"
fi
mkdir -p "${OUT_SMALI_CHECK}"
sqlite3 ${DB} 'SELECT sha256 FROM data WHERE nb_def_platform_32_classes >= 1 OR nb_def_platform_33_classes >= 1 OR nb_def_platform_34_classes >= 1 OR nb_duplicate_classes >= 1;' > "${OUT_DIR}/list_apks_shadow"
if [ ! -d "${OUT_DIR}/list_apks_shadow" ]; then
mkdir -p "${OUT_DIR}/apks_shadow"
split -a 2 -d -l "${N_CHUNK}" "${OUT_DIR}/list_apks_shadow" "${OUT_DIR}/apks_shadow/"
fi
worker () {
for sha in $(cat "${1}"); do
"${VENV}/bin/check-smali" \
--sha256 "${sha}" \
--output-dir "${OUT_SMALI_CHECK}" \
--apktool-jar "${APKTOOL}" \
--path-platform-smali "${PLATFORM_DIR}" \
--api-key-file "${ANDROZOO_KEY}"
done
echo "Finished ${1}"
}
for lst in ${app_lst[@]}; do
if [ -f "${OUT_DIR}/apks_shadow/${lst}" ]; then
echo start "${OUT_DIR}/apks_shadow/${lst}"
worker "${OUT_DIR}/apks_shadow/${lst}" &
sleep 1
fi
done
echo 'PROCESS LAUNCHED'