#!/bin/bash

# ============================================
# Malloc Enterprise IPA Export Script
# ============================================

set -e

# ---------- CONFIG ----------
PROJECT_DIR=&#34;PATH_TO_PROJECT/MallocIssue&#34;

PROJECT=&#34;MallocIssue.xcodeproj&#34;
SCHEME=&#34;MallocIssue&#34;

CONFIGURATION=&#34;Release&#34;

ARCHIVE_PATH=&#34;$PROJECT_DIR/build/MallocIssue.xcarchive&#34;
EXPORT_PATH=&#34;$HOME/Documents/MallocIssueVAPT&#34;

# Provisioning Profile Name
PROVISIONING_PROFILE=&#34;PROFILE_NAME&#34;

# Bundle Identifier
BUNDLE_ID=&#34;BUNDLE_IDENTIFIER&#34;

# ---------- START ----------
echo &#34;============================================&#34;
echo &#34;Cleaning old build...&#34;
echo &#34;============================================&#34;

# Remove only build folder
rm -rf &#34;$PROJECT_DIR/build&#34;

# Create folders if not exist
mkdir -p &#34;$PROJECT_DIR/build&#34;
mkdir -p &#34;$EXPORT_PATH&#34;

# Remove old exported files only
rm -rf &#34;$EXPORT_PATH&#34;/*

cd &#34;$PROJECT_DIR&#34;

echo &#34;============================================&#34;
echo &#34;Available Schemes:&#34;
echo &#34;============================================&#34;

xcodebuild -list -project &#34;$PROJECT&#34;

echo &#34;============================================&#34;
echo &#34;Creating Archive...&#34;
echo &#34;============================================&#34;

xcodebuild \
  -project &#34;$PROJECT&#34; \
  -scheme &#34;$SCHEME&#34; \
  -configuration &#34;$CONFIGURATION&#34; \
  -archivePath &#34;$ARCHIVE_PATH&#34; \
  clean archive

echo &#34;============================================&#34;
echo &#34;Preparing Export Options...&#34;
echo &#34;============================================&#34;

cat &gt; &#34;$PROJECT_DIR/build/ExportOptions.plist&#34; &lt;




    method
    enterprise

    signingStyle
    manual

    stripSwiftSymbols
    

    compileBitcode
    

    thinning
    &lt;none&gt;

    provisioningProfiles
    
        BUNDLE_IDENTIFIER
        PROFILE_NAME
    



EOF

echo &#34;============================================&#34;
echo &#34;Exporting IPA...&#34;
echo &#34;============================================&#34;

xcodebuild -exportArchive \
  -archivePath &#34;$ARCHIVE_PATH&#34; \
  -exportPath &#34;$EXPORT_PATH&#34; \
  -exportOptionsPlist &#34;$PROJECT_DIR/build/ExportOptions.plist&#34;

echo &#34;============================================&#34;
echo &#34;Creating scan_ipa.sh...&#34;
echo &#34;============================================&#34;

cat &gt; &#34;$EXPORT_PATH/scan_ipa.sh&#34; &lt;&lt;&#39;EOF&#39;
#!/bin/bash

set -e

IPA_NAME=&#34;MallocIssue.ipa&#34;
ZIP_NAME=&#34;MallocIssue.zip&#34;
UNZIP_DIR=&#34;extracted_ipa&#34;

echo &#34;🔹 Step 1: Renaming IPA to ZIP...&#34;
cp &#34;$IPA_NAME&#34; &#34;$ZIP_NAME&#34;
echo &#34;✅ Created: $ZIP_NAME&#34;

echo &#34;🔹 Step 2: Unzipping...&#34;
rm -rf &#34;$UNZIP_DIR&#34;
mkdir &#34;$UNZIP_DIR&#34;

unzip -q &#34;$ZIP_NAME&#34; -d &#34;$UNZIP_DIR&#34;

echo &#34;✅ Unzipped to: $UNZIP_DIR&#34;

cd &#34;$UNZIP_DIR&#34;

echo &#34;&#34;
echo &#34;🔍 Running security scans...&#34;

run_grep() {
  local pattern=$1

  echo &#34;&#34;
  echo &#34;➡️ Searching for: $pattern&#34;

  RESULT=$(grep -Ril &#34;$pattern&#34; . || true)

  if [ -z &#34;$RESULT&#34; ]; then
    echo &#34;❌ No matches found&#34;
  else
    echo &#34;✅ Matches found in:&#34;
    echo &#34;$RESULT&#34;
  fi
}

run_grep &#34;_malloc&#34;





echo &#34;&#34;
echo &#34;🎯 Scan completed.&#34;
EOF

chmod +x &#34;$EXPORT_PATH/scan_ipa.sh&#34;

echo &#34;============================================&#34;
echo &#34;Running scan_ipa.sh...&#34;
echo &#34;============================================&#34;

cd &#34;$EXPORT_PATH&#34;

./scan_ipa.sh

echo &#34;============================================&#34;
echo &#34;DONE!&#34;
echo &#34;IPA Exported to:&#34;
echo &#34;$EXPORT_PATH&#34;
echo &#34;============================================&#34;
