This commit is contained in:
Slice 2024-11-09 20:02:12 +03:00
commit d1d1aaff0e
15 changed files with 288 additions and 1334 deletions

View File

@ -27,8 +27,6 @@ jobs:
- name: Build Clover Pack
run: |
chmod +x ./buildme
chmod +x ./Clover_Duet.command
cp -rf ./Clover_Duet.command ./CloverPackage/CloverV2/
./buildme "" ci
- name: Prepare Release Packs
run: |

View File

@ -1,229 +1,285 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>18G9323</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>FakeSMC</string>
<key>CFBundleIdentifier</key>
<string>org.netkas.FakeSMC</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>FakeSMC</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>3.5.4</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>3.5.4</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>11B53</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>17C76</string>
<key>DTSDKName</key>
<string>macosx10.13</string>
<key>DTXcode</key>
<string>1120</string>
<key>DTXcodeBuild</key>
<string>11B53</string>
<key>IOKitPersonalities</key>
<dict>
<key>SMC Device Emulator</key>
<dict>
<key>CFBundleIdentifier</key>
<string>org.netkas.FakeSMC</string>
<key>Configuration</key>
<dict>
<key>Keys</key>
<dict>
<key>$Num</key>
<array>
<string>ui8 </string>
<data>AQ==</data>
</array>
<key>ACID</key>
<array>
<string>ch8*</string>
<data>ur48RcADEEM=</data>
</array>
<key>ALI0</key>
<array>
<string>{ali</string>
<data>BgECAA==</data>
</array>
<key>ALRV</key>
<array>
<string>ui16</string>
<data>AAE=</data>
</array>
<key>ALV0</key>
<array>
<string>{alv</string>
<data>AQEDtwCjABVq9A==</data>
</array>
<key>CLKH</key>
<array>
<string>{clh</string>
<data>AABwgAABGUA=</data>
</array>
<key>CLKT</key>
<array>
<string>ui32</string>
<data>AAByGw==</data>
</array>
<key>EPCI</key>
<array>
<string>flag</string>
<data>AQ==</data>
</array>
<key>FNum</key>
<array>
<string>ui8</string>
<data>AA==</data>
</array>
<key>LSOF</key>
<array>
<string>flag</string>
<data>AQ==</data>
</array>
<key>LSSB</key>
<array>
<string>{lso</string>
<data>AQE=</data>
</array>
<key>LsNM</key>
<array>
<string>ui8</string>
<data>AQ==</data>
</array>
<key>LsbV</key>
<array>
<string>{rev</string>
<data>AQQKAAY=</data>
</array>
<key>MOST</key>
<array>
<string>ui16</string>
<data>gAM=</data>
</array>
<key>MSDW</key>
<array>
<string>ui8</string>
<data>AQ==</data>
</array>
<key>MSPS</key>
<array>
<string>{msp</string>
<data>AA==</data>
</array>
<key>MSSD</key>
<array>
<string>si8</string>
<data>BQ==</data>
</array>
<key>NATJ</key>
<array>
<string>ui8</string>
<data>AA==</data>
</array>
<key>NATi</key>
<array>
<string>ui16</string>
<string>0000</string>
</array>
<key>NTOK</key>
<array>
<string>ui8</string>
<data>AQ==</data>
</array>
<key>NVPR</key>
<array>
<string>ui8</string>
<data>AA==</data>
</array>
<key>OSK0</key>
<array>
<string>ch8*</string>
<data>b3VyaGFyZHdvcmtieXRoZXNld29yZHNndWFyZGVkcGw=</data>
</array>
<key>OSK1</key>
<array>
<string>ch8*</string>
<data>ZWFzZWRvbnRzdGVhbChjKUFwcGxlQ29tcHV0ZXJJbmM=</data>
</array>
<key>REV </key>
<array>
<string>{rev</string>
<data>ATAPAAAD</data>
</array>
<key>RGEN</key>
<array>
<string>ui8</string>
<data>Ag==</data>
</array>
<key>RMde</key>
<array>
<string>char</string>
<data>QQ==</data>
</array>
<key>RPlt</key>
<array>
<string>ch8*</string>
<string>m82</string>
</array>
<key>RVBF</key>
<array>
<string>{rev</string>
<data>ATAPAAAD</data>
</array>
</dict>
<key>debug</key>
<false/>
<key>smc-compatible</key>
<string>smc-napa</string>
</dict>
<key>IOClass</key>
<string>FakeSMC</string>
<key>IOMatchCategory</key>
<string>IOACPIPlatformDevice</string>
<key>IOProviderClass</key>
<string>AppleACPIPlatformExpert</string>
<key>IOResourceMatch</key>
<string>ACPI</string>
</dict>
</dict>
<key>LSMinimumSystemVersion</key>
<string>10.13</string>
<key>OSBundleCompatibleVersion</key>
<string>3.3.0</string>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOACPIFamily</key>
<string>1.0.0d1</string>
<key>com.apple.kpi.iokit</key>
<string>9.0.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0.0</string>
<key>com.apple.kpi.mach</key>
<string>9.0.0</string>
<key>com.apple.kpi.unsupported</key>
<string>9.0.0</string>
</dict>
<key>OSBundleRequired</key>
<string>Root</string>
</dict>
<dict>
<key>BuildMachineOSBuild</key>
<string>23C64</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>FakeSMC</string>
<key>CFBundleIdentifier</key>
<string>org.netkas.FakeSMC</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>FakeSMC</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>3.5.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>3.5.6</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.2</string>
<key>DTSDKBuild</key>
<string>23C53</string>
<key>DTSDKName</key>
<string>macosx14.2</string>
<key>DTXcode</key>
<string>1510</string>
<key>DTXcodeBuild</key>
<string>15C65</string>
<key>IOKitPersonalities</key>
<dict>
<key>SMC Device Emulator</key>
<dict>
<key>CFBundleIdentifier</key>
<string>org.netkas.FakeSMC</string>
<key>Configuration</key>
<dict>
<key>Keys</key>
<dict>
<key>$Num</key>
<array>
<string>ui8 </string>
<data>
AQ==
</data>
</array>
<key>ACID</key>
<array>
<string>ch8*</string>
<data>
ur48RcADEEM=
</data>
</array>
<key>ALI0</key>
<array>
<string>{ali</string>
<data>
BgECAA==
</data>
</array>
<key>ALRV</key>
<array>
<string>ui16</string>
<data>
AAE=
</data>
</array>
<key>ALV0</key>
<array>
<string>{alv</string>
<data>
AQEDtwCjABVq9A==
</data>
</array>
<key>CLKH</key>
<array>
<string>{clh</string>
<data>
AABwgAABGUA=
</data>
</array>
<key>CLKT</key>
<array>
<string>ui32</string>
<data>
AAByGw==
</data>
</array>
<key>EPCI</key>
<array>
<string>flag</string>
<data>
AQ==
</data>
</array>
<key>FNum</key>
<array>
<string>ui8</string>
<data>
AA==
</data>
</array>
<key>LSOF</key>
<array>
<string>flag</string>
<data>
AQ==
</data>
</array>
<key>LSSB</key>
<array>
<string>{lso</string>
<data>
AQE=
</data>
</array>
<key>LsNM</key>
<array>
<string>ui8</string>
<data>
AQ==
</data>
</array>
<key>LsbV</key>
<array>
<string>{rev</string>
<data>
AQQKAAY=
</data>
</array>
<key>MOST</key>
<array>
<string>ui16</string>
<data>
gAM=
</data>
</array>
<key>MSDW</key>
<array>
<string>ui8</string>
<data>
AQ==
</data>
</array>
<key>MSPS</key>
<array>
<string>{msp</string>
<data>
AA==
</data>
</array>
<key>MSSD</key>
<array>
<string>si8</string>
<data>
BQ==
</data>
</array>
<key>NATJ</key>
<array>
<string>ui8</string>
<data>
AA==
</data>
</array>
<key>NATi</key>
<array>
<string>ui16</string>
<string>0000</string>
</array>
<key>NTOK</key>
<array>
<string>ui8</string>
<data>
AQ==
</data>
</array>
<key>NVPR</key>
<array>
<string>ui8</string>
<data>
AA==
</data>
</array>
<key>OSK0</key>
<array>
<string>ch8*</string>
<data>
b3VyaGFyZHdvcmtieXRoZXNld29y
ZHNndWFyZGVkcGw=
</data>
</array>
<key>OSK1</key>
<array>
<string>ch8*</string>
<data>
ZWFzZWRvbnRzdGVhbChjKUFwcGxl
Q29tcHV0ZXJJbmM=
</data>
</array>
<key>REV </key>
<array>
<string>{rev</string>
<data>
ATAPAAAD
</data>
</array>
<key>RGEN</key>
<array>
<string>ui8</string>
<data>
Ag==
</data>
</array>
<key>RMde</key>
<array>
<string>char</string>
<data>
QQ==
</data>
</array>
<key>RPlt</key>
<array>
<string>ch8*</string>
<string>m82</string>
</array>
<key>RVBF</key>
<array>
<string>{rev</string>
<data>
ATAPAAAD
</data>
</array>
</dict>
<key>debug</key>
<false/>
<key>smc-compatible</key>
<string>smc-napa</string>
</dict>
<key>IOClass</key>
<string>FakeSMC</string>
<key>IOMatchCategory</key>
<string>IOACPIPlatformDevice</string>
<key>IOProviderClass</key>
<string>AppleACPIPlatformExpert</string>
<key>IOResourceMatch</key>
<string>ACPI</string>
</dict>
</dict>
<key>LSMinimumSystemVersion</key>
<string>10.13</string>
<key>OSBundleCompatibleVersion</key>
<string>3.3.0</string>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOACPIFamily</key>
<string>1.0.0d1</string>
<key>com.apple.kpi.iokit</key>
<string>9.0.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0.0</string>
<key>com.apple.kpi.mach</key>
<string>9.0.0</string>
<key>com.apple.kpi.unsupported</key>
<string>9.0.0</string>
</dict>
<key>OSBundleRequired</key>
<string>Root</string>
</dict>
</plist>

View File

@ -1,225 +0,0 @@
#!/bin/bash
# Clover-LegacyDuet: by chris1111
# Thanks: CloverHackyColor
# Thanks: Acidanthera
apptitle="Clover-LegacyDuet"
version="1.0"
# Set Icon directory and file
iconfile="/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns"
printf '\e[8;47;83t'
PARENTDIR=$(dirname "$0")
cd "$PARENTDIR"
echo " "
echo "🚫 Do not use this program on a disk where Clover or OpenCore is already installed!"
rm -rf ./boot*
Sleep 1
cp -Rp ./Bootloaders/x64/{boot6,boot7} ./
cp -Rp ./BootSectors/{boot0af,boot1f32} ./
# Install Clover booter on physical disk.
#get BOOT File
if [ "$2" == "" ]; then
echo " "
echo "Choose (6 or 7) for the Booter
6 = -> Clover EFI 64-bits using SATA to access drives.
7 = -> Clover EFI 64-bit using Bios Block I/O to access drives. "
echo "Make a choice followed by Enter: "
while [ -z "$BOOT" ]; do
read BOOT
done
else
BOOT="$2"
fi
export ARCHS=$BOOT
if [ ! -f "boot${ARCHS}" ] || [ ! -f boot0af ] || [ ! -f boot1f32 ] || [ ! -f EFI/CLOVER/CLOVERX64.efi ]; then
echo "Clover is not build?"
echo "Or you probably have change directory on this package?"
exit 1
fi
if [ "$(uname)" = "Linux" ]; then
if [ "$EUID" -ne 0 ]
then echo "Please run this script as root"
exit
fi
if [ "$(which lsblk)" = "" ]; then
echo "lsblk tool is missing! Try installing util-linux package"
exit 1
fi
if [ "$(which fdisk)" = "" ]; then
echo "fdisk tool is missing!"
exit 1
fi
rm -rf ./origbs
rm -rf ./newbs
rm -rf ./boot*
echo "Select the disk where you want to install boot files:"
lsblk -d | tail -n+2 | cut -d" " -f1
echo "Example: sda"
read -r DRIVE
DRIVE="/dev/${DRIVE}"
if ! lsblk "$DRIVE"; then
echo Disk "${DRIVE}" not found
exit 1
fi
echo "Choose EFI partition on selected disk:"
lsblk -f "${DRIVE}"
echo "Example: sda1"
read -r EFI_PART
EFI_PART="/dev/${EFI_PART}"
if ! lsblk -f "$EFI_PART" | grep -q -e FAT32 -e vfat; then
echo "No FAT32 partition to install"
exit 1
fi
# Write MBR
dd if=boot0af of="$DRIVE" bs=1 count=446 conv=notrunc || exit 1
umount "${EFI_PART}"
dd if="${EFI_PART}" count=1 of=origbs
cp -v boot1f32 newbs
dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=/dev/random of=newbs skip=496 seek=496 bs=1 count=14 conv=notrunc
dd if=newbs of="${EFI_PART}"
p=/tmp/$(uuidgen)/EFI
mkdir -p "${p}" || exit 1
mount -t vfat "${EFI_PART}" "${p}" -o rw,noatime,uid="$(id -u)",gid="$(id -g)" || exit 1
cp -v "boot${ARCHS}" "${p}/boot" || exit 1
echo "Install EFI -> /Volumes/EFI/EFI Wait. . ."
cp -Rp "EFI" "${p}" || exit 1
echo Check "${p}" boot drive to install Clover Duet
DISK_SCHEME=$(fdisk -l "${DRIVE}" | sed -n 's/.*Disklabel type: *//p')
if [ "$DISK_SCHEME" != "gpt" ]; then
BOOT_FLAG=$(dd if="$DRIVE" bs=1 count=1 status=none skip=$((0x1BE)) | od -t x1 -A n | tr -d ' ')
if [ "$BOOT_FLAG" != "80" ]; then
fdisk "$DRIVE" <<END
p
a
1
w
END
fi
fi
else
rm -rf ./origbs
rm -rf ./newbs
diskutil list
echo "Disable SIP in the case of any problems with installation!!!"
echo "Enter disk number to install to:"
read -r N
if ! diskutil info disk"${N}" | grep -q "/dev/disk"; then
echo Disk "$N" not found
exit 1
fi
if ! diskutil info disk"${N}"s1 | grep -q -e FAT_32 -e EFI; then
echo "No FAT32 partition to install"
exit 1
fi
# Write MBR
echo "Type your password to continue!"
sudo fdisk -uy -f boot0af /dev/rdisk"${N}" || exit 1
echo " "
echo "Clover Duet boot$ARCHS$BO0T will be Install to ➤ EFI System Partition"
echo " "
diskutil umount disk"${N}"s1
sudo dd if=/dev/rdisk"${N}"s1 count=1 of=origbs
cp -v boot1f32 newbs
sudo dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=/dev/random of=newbs skip=496 seek=496 bs=1 count=14 conv=notrunc
sudo dd if=newbs of=/dev/rdisk"${N}"s1
#if [[ "$(sudo diskutil mount disk"${N}"s1)" == *"mounted" ]]
if sudo diskutil mount disk"${N}"s1 | grep -q mounted; then
cp -v "boot${ARCHS}" "$(diskutil info disk"${N}"s1 | sed -n 's/.*Mount Point: *//p')/boot"
else
p=/tmp/$(uuidgen)/EFI
mkdir -p "${p}" || exit 1
sudo mount_msdos /dev/disk"${N}"s1 "${p}" || exit 1
cp -v "boot${ARCHS}" "${p}/boot" || exit 1
fi
if diskutil info disk"${N}" | grep -q FDisk_partition_scheme; then
sudo fdisk -e /dev/rdisk"$N" <<-MAKEACTIVE
p
f 1
w
y
q
MAKEACTIVE
fi
fi
Sleep 1
rm -rf ./origbs
rm -rf ./newbs
rm -rf ./boot*
while true
do
response=$(osascript -e 'tell app "System Events" to display dialog "Clover Duet is installed!
You can install a Clover EFI folder that you created.
You can use Generic Clover EFI folder from this release.\n\nCancel to not install EFI folder." buttons {"Cancel","Generic Clover EFI","Personal EFI"} default button 3 with title "'"$apptitle"' '"$version"'" with icon POSIX file "'"$iconfile"'" ')
action=$(echo $response | cut -d ':' -f2)
# Exit if Canceled
if [ ! "$action" ] ; then
osascript -e 'display notification "Program closing" with title "'"$apptitle"'" subtitle "User cancelled"'
echo "User cancelled Program Clover-LegacyDuet closing in 2 sec"
Sleep 2
exit 1
fi
if [ "$action" == "Generic Clover EFI" ] ; then
mv ./EFI/CLOVER/config-sample.plist ./EFI/CLOVER/config.plist
Sleep 1
cp -Rp "EFI" "$(diskutil info disk${N}s1 | sed -n 's/.*Mount Point: *//p')"
echo "Install EFI -> /Volumes/EFI/EFI Done!"
mv ./EFI/CLOVER/config.plist ./EFI/CLOVER/config-sample.plist
Sleep 2
Open -R "$(diskutil info disk"${N}"s1 | sed -n 's/.*Mount Point: *//p')/boot"
exit 1
fi
if [ "$action" == "Personal EFI" ] ; then
echo " "
#get EFI folder
if [ "$2" == "" ]; then
echo " "
echo "Move your EFI folder here"
echo "Followed by Enter: "
while [ -z "$EFIfolder" ]; do
read EFIfolder
done
else
EFIfolder="$2"
fi
cp -Rp "$EFIfolder" "$(diskutil info disk${N}s1 | sed -n 's/.*Mount Point: *//p')"
echo "Install EFI -> /Volumes/EFI/EFI Done!"
Sleep 2
Open -R "$(diskutil info disk"${N}"s1 | sed -n 's/.*Mount Point: *//p')/boot"
exit 1
fi
done

View File

@ -1,8 +0,0 @@
#!/bin/bash
cd "$(dirname "$0")" || exit 1
export DUETTOOL=Clover_Duet.command
cp -Rp $DUETTOOL ./CloverPackage/CloverV2
./CloverPackage/CloverV2/$DUETTOOL
Sleep 1
rm -rf ./CloverPackage/CloverV2/$DUETTOOL

View File

@ -20,6 +20,8 @@ Bootloader for macOS, Windows and Linux in UEFI and in legacy mode
- Press **F4** to save original (OEM) ACPI tables into `/EFI/CLOVER/ACPI/origin`
- Press **F5** to test DSDT patching
- Press **F6** to save graphics firmware into `/EFI/CLOVER/misc`
- Press **F7** to test HDA output
- Press **F9** to switch screen resolution
- Press **F10** to save screenshots from GUI
- Press **F11** to reset NVRAM
- Press **F12** to eject CD/DVD
@ -29,7 +31,7 @@ Bootloader for macOS, Windows and Linux in UEFI and in legacy mode
- Create custom boot entries for personalizing boot entries and add support for other operating systems
- Create Clover boot entry in NVRAM with tool from GUI
- Launch EFI command shell from GUI
- Startup sound controlled by **F8** and checked by **F7**
- Startup sound checked by **F7**
### Developers:
@ -42,7 +44,7 @@ Bootloader for macOS, Windows and Linux in UEFI and in legacy mode
Chameleon team, crazybirdy, JrCs, chris1111.
### Clover is open source based on different projects :
* Clover, rEFIt, XNU, VirtualBox. [The main is EDK2 latest revision](https://github.com/CloverHackyColor/CloverBootloader)
* Chameleon, rEFIt, XNU, VirtualBox. [The main is EDK2 latest revision](https://github.com/CloverHackyColor/CloverBootloader)
* Recent developments and changes in details at [Clover Change Explanations](https://www.insanelymac.com/forum/topic/304530-clover-change-explanations/)
* Support forum discussion [AppleLife](https://applelife.ru/threads/clover.42089/) (Russian) [Insanelymac](https://www.insanelymac.com/forum/topic/284656-clover-general-discussion/) (English) [macos86.it](https://www.macos86.it/forum/46-clover/) (Italian)
---------------------------------------------------------

View File

@ -1,49 +0,0 @@
#!/bin/sh
#Credit: chris1111
#Credit: Jief_Machak
#Vars
apptitle="Config Validator"
version="1.0"
sleep 1
rm -rf /Private/tmp/CloverConfigPlistValidator.zip
#Dialog Text
read -r -d '' applescriptCode <<'EOF'
set dialogText to text returned of (display dialog "
Type the numer of the CloverConfigPlistValidator you whant to use?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The lowest you can start is ➢ 5143
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Type the number then click Continue" default answer "" with icon 0 buttons {"Continue"} default button "Continue")
return dialogText
EOF
dialogText=$(osascript -e "$applescriptCode");
echo " "
echo Your choice is CloverConfigPlistValidator $dialogText;
echo " "
echo "
******************************************************
Clover Config.Plist Validator
Drag config.plist file to verify it
******************************************************"
#Set Droping directory and file
rm -rf /Private/tmp/CloverConfigPlistValidator.zip
sleep 1
rm -rf /Private/tmp/CloverConfigPlistValidator
curl -L https://github.com/CloverHackyColor/CloverBootloader/releases/download/$dialogText/CloverConfigPlistValidator_$dialogText.zip -s -o /Private/tmp/CloverConfigPlistValidator.zip
Sleep 1
ditto -x -k --sequesterRsrc --rsrc /Private/tmp/CloverConfigPlistValidator.zip /Private/tmp
sleep 1
rm -rf /Private/tmp/CloverConfigPlistValidator.zip
#get config path
if [ "$2" == "" ]; then
while [ -z "$config" ]; do
read config
echo "Start of verification:"
sleep 1
done
else
config="$2"
fi
/Private/tmp/CloverConfigPlistValidator_$dialogText -v "$config"

View File

@ -1,276 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
83D6FCAC274A7F8600DF00C5 /* ConfigValidator.c in Sources */ = {isa = PBXBuildFile; fileRef = 83D6FCAB274A7F8600DF00C5 /* ConfigValidator.c */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
83D6FCA6274A7F8600DF00C5 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
83D6FCA8274A7F8600DF00C5 /* ConfigValidator */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ConfigValidator; sourceTree = BUILT_PRODUCTS_DIR; };
83D6FCAB274A7F8600DF00C5 /* ConfigValidator.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ConfigValidator.c; sourceTree = "<group>"; };
83D6FCB2274A7FBA00DF00C5 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
83D6FCB3274A7FBF00DF00C5 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
83D6FCA5274A7F8600DF00C5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
83D6FC9F274A7F8600DF00C5 = {
isa = PBXGroup;
children = (
83D6FCB3274A7FBF00DF00C5 /* CoreFoundation.framework */,
83D6FCB2274A7FBA00DF00C5 /* IOKit.framework */,
83D6FCAA274A7F8600DF00C5 /* ConfigValidator */,
83D6FCA9274A7F8600DF00C5 /* Products */,
);
sourceTree = "<group>";
};
83D6FCA9274A7F8600DF00C5 /* Products */ = {
isa = PBXGroup;
children = (
83D6FCA8274A7F8600DF00C5 /* ConfigValidator */,
);
name = Products;
sourceTree = "<group>";
};
83D6FCAA274A7F8600DF00C5 /* ConfigValidator */ = {
isa = PBXGroup;
children = (
83D6FCAB274A7F8600DF00C5 /* ConfigValidator.c */,
);
path = ConfigValidator;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
83D6FCA7274A7F8600DF00C5 /* ConfigValidator */ = {
isa = PBXNativeTarget;
buildConfigurationList = 83D6FCAF274A7F8600DF00C5 /* Build configuration list for PBXNativeTarget "ConfigValidator" */;
buildPhases = (
83D6FCA4274A7F8600DF00C5 /* Sources */,
83D6FCA5274A7F8600DF00C5 /* Frameworks */,
83D6FCA6274A7F8600DF00C5 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = ConfigValidator;
productName = ConfigValidator;
productReference = 83D6FCA8274A7F8600DF00C5 /* ConfigValidator */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
83D6FCA0274A7F8600DF00C5 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0920;
ORGANIZATIONNAME = chris;
TargetAttributes = {
83D6FCA7274A7F8600DF00C5 = {
CreatedOnToolsVersion = 9.2;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 83D6FCA3274A7F8600DF00C5 /* Build configuration list for PBXProject "ConfigValidator" */;
compatibilityVersion = "Xcode 8.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 83D6FC9F274A7F8600DF00C5;
productRefGroup = 83D6FCA9274A7F8600DF00C5 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
83D6FCA7274A7F8600DF00C5 /* ConfigValidator */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
83D6FCA4274A7F8600DF00C5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
83D6FCAC274A7F8600DF00C5 /* ConfigValidator.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
83D6FCAD274A7F8600DF00C5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
83D6FCAE274A7F8600DF00C5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
83D6FCB0274A7F8600DF00C5 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
83D6FCB1274A7F8600DF00C5 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
83D6FCA3274A7F8600DF00C5 /* Build configuration list for PBXProject "ConfigValidator" */ = {
isa = XCConfigurationList;
buildConfigurations = (
83D6FCAD274A7F8600DF00C5 /* Debug */,
83D6FCAE274A7F8600DF00C5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
83D6FCAF274A7F8600DF00C5 /* Build configuration list for PBXNativeTarget "ConfigValidator" */ = {
isa = XCConfigurationList;
buildConfigurations = (
83D6FCB0274A7F8600DF00C5 /* Debug */,
83D6FCB1274A7F8600DF00C5 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 83D6FCA0274A7F8600DF00C5 /* Project object */;
}

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:ConfigValidator.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,504 +0,0 @@
#if 0
shc Version 3.8.9b, Generic Script Compiler
Copyright (c) 1994-2015 Francisco Rosales <frosal@fi.upm.es>
./shc -v -r -T -f ./ConfigValidator.sh
#endif
static char data [] =
#define msg1_z 42
#define msg1 ((&data[6]))
"\233\150\044\313\040\005\310\215\377\044\043\272\360\062\203\301"
"\267\327\203\242\173\355\003\065\230\317\341\013\160\222\025\257"
"\174\041\006\331\151\070\053\007\161\263\250\222\134\220\123\167"
"\132"
#define chk1_z 22
#define chk1 ((&data[51]))
"\036\002\301\354\114\036\262\160\323\316\126\322\103\333\125\146"
"\245\002\206\002\302\177\220\025\340\262\075\021"
#define msg2_z 19
#define msg2 ((&data[77]))
"\322\362\137\041\163\034\331\056\026\024\206\006\040\313\175\267"
"\067\213\234\312"
#define xecc_z 15
#define xecc ((&data[99]))
"\152\276\165\352\335\200\050\306\016\010\342\317\342\326\250\255"
"\175"
#define chk2_z 19
#define chk2 ((&data[118]))
"\041\003\140\147\350\325\334\344\324\351\240\333\135\077\321\230"
"\013\116\211\034\222\145\003\375\162\133"
#define text_z 1633
#define text ((&data[468]))
"\332\223\133\117\353\157\261\253\233\243\035\167\326\172\152\035"
"\101\260\305\012\170\154\302\114\065\020\023\076\356\070\072\277"
"\152\331\254\253\373\123\144\076\067\200\154\336\363\223\106\042"
"\141\214\277\011\064\125\324\043\034\240\310\130\375\366\242\112"
"\177\362\352\073\002\312\163\254\025\316\167\210\017\137\306\143"
"\267\003\017\235\073\240\047\334\161\136\257\341\265\327\212\252"
"\332\025\210\104\346\176\362\206\321\365\026\227\050\070\176\033"
"\142\160\050\162\353\141\370\353\364\265\215\351\022\022\035\264"
"\227\212\263\256\215\312\147\114\301\131\025\365\000\267\337\233"
"\365\035\073\016\302\355\032\140\002\246\212\212\166\220\166\143"
"\301\153\074\347\370\320\007\221\031\220\107\206\307\117\322\244"
"\214\171\221\302\113\374\176\363\017\073\037\275\013\243\357\377"
"\312\337\255\361\206\105\235\012\060\044\176\106\243\055\273\044"
"\254\120\100\001\253\117\043\105\324\234\155\153\167\307\001\326"
"\370\115\336\172\005\153\122\056\335\075\110\336\054\101\265\342"
"\057\107\146\320\172\366\156\201\036\360\226\335\343\220\237\377"
"\161\217\342\117\031\060\343\325\204\317\326\311\114\370\210\206"
"\115\236\203\363\065\174\164\160\210\044\021\167\330\004\340\342"
"\016\245\055\264\025\050\070\300\247\154\264\263\032\257\322\125"
"\062\020\331\224\257\040\201\324\021\354\052\217\205\244\045\263"
"\175\165\341\154\246\304\124\070\113\022\327\355\200\173\222\207"
"\201\066\360\011\364\057\376\366\340\301\275\355\236\320\003\036"
"\375\263\160\163\034\043\307\277\177\371\161\166\050\177\334\311"
"\241\012\041\321\317\211\272\330\040\351\214\311\341\000\352\235"
"\353\350\003\074\126\031\377\227\145\064\301\266\335\002\112\011"
"\046\053\005\145\124\301\315\242\021\153\355\314\011\342\221\304"
"\121\336\326\162\376\247\070\147\124\157\211\063\010\301\350\205"
"\130\337\141\073\203\011\345\243\227\166\162\302\201\164\331\064"
"\121\006\006\326\362\300\022\051\317\164\132\046\057\221\040\225"
"\255\376\254\341\066\053\105\211\034\146\206\201\134\272\064\252"
"\264\036\147\274\354\262\277\132\373\303\211\352\266\377\250\324"
"\006\126\167\076\252\067\307\025\025\231\020\132\340\336\360\107"
"\214\155\047\014\315\170\120\235\175\233\372\170\351\173\272\335"
"\006\106\102\303\247\255\070\153\153\302\054\037\221\061\277\076"
"\153\021\033\002\003\232\345\326\160\341\200\343\356\054\260\237"
"\337\234\112\160\374\105\126\071\314\110\036\014\241\025\365\106"
"\072\130\333\135\157\302\127\043\207\000\034\104\240\012\205\054"
"\041\054\271\221\166\210\011\066\052\324\134\141\236\240\007\244"
"\035\143\211\247\001\215\173\363\332\153\235\255\046\045\255\140"
"\351\257\205\147\262\232\077\022\070\010\075\233\017\313\241\155"
"\360\113\143\225\356\356\243\260\015\077\206\256\273\347\260\242"
"\105\114\231\213\366\117\310\326\035\055\146\334\127\312\151\132"
"\042\362\057\153\223\064\311\054\237\331\030\346\267\123\001\227"
"\147\262\136\073\216\042\360\310\253\157\144\214\050\375\012\056"
"\264\253\006\231\052\321\215\273\250\127\151\047\166\005\076\005"
"\122\061\113\017\073\346\276\164\333\221\067\310\321\177\162\216"
"\057\107\064\013\141\217\056\044\304\072\140\077\366\253\125\003"
"\055\165\046\311\226\272\107\011\040\145\241\202\005\174\146\210"
"\044\213\157\350\324\356\215\142\244\244\133\302\024\027\332\075"
"\314\017\153\122\142\261\303\300\136\021\270\314\326\370\235\226"
"\320\167\042\012\171\255\271\234\331\147\327\140\367\123\242\102"
"\260\204\120\165\213\056\064\335\336\075\367\212\216\005\316\223"
"\272\267\212\127\020\034\053\267\102\234\175\177\113\134\112\246"
"\067\212\006\024\323\056\172\370\206\072\205\361\030\150\247\212"
"\345\022\255\306\170\233\016\002\230\273\121\347\032\131\005\166"
"\054\165\210\170\110\046\024\046\000\053\352\077\020\140\062\014"
"\276\172\251\375\134\357\257\206\040\366\226\334\235\212\167\135"
"\062\377\252\067\264\204\126\163\223\243\247\340\031\211\350\154"
"\032\074\275\122\375\035\276\366\177\104\135\254\037\134\374\372"
"\375\001\122\131\342\226\023\147\155\200\231\317\203\067\343\226"
"\310\321\022\277\240\362\242\360\364\017\056\111\110\032\235\234"
"\364\216\115\357\027\215\343\145\152\322\330\140\304\337\042\262"
"\324\147\155\270\110\000\167\372\246\050\205\231\067\161\222\337"
"\220\347\256\343\064\137\150\325\267\375\146\020\053\021\120\171"
"\327\011\363\221\362\266\345\373\200\265\207\200\167\200\245\021"
"\264\311\333\253\022\155\363\231\303\300\066\244\024\111\264\024"
"\101\245\311\043\115\242\031\347\257\241\014\051\100\326\323\135"
"\151\316\024\037\206\023\020\125\036\363\021\214\350\214\357\106"
"\255\277\122\057\162\144\146\047\061\160\337\105\040\121\133\001"
"\323\102\034\164\305\053\113\110\252\176\072\272\220\313\156\321"
"\213\116\022\273\176\212\130\366\113\320\116\010\004\011\023\024"
"\037\222\240\174\375\301\067\364\025\270\015\232\353\037\014\354"
"\263\134\055\001\120\060\131\130\232\204\343\337\055\326\147\131"
"\273\231\154\153\314\376\344\211\263\215\177\310\371\246\225\011"
"\215\001\221\342\112\220\026\027\355\114\205\374\226\211\064\126"
"\041\134\321\353\276\107\170\231\000\145\372\010\146\346\261\310"
"\244\327\352\253\221\363\261\331\341\100\135\204\163\237\300\375"
"\037\000\126\246\035\200\034\040\263\216\213\210\205\065\064\316"
"\035\251\344\013\176\044\322\353\225\266\304\055\104\131\213\162"
"\177\023\112\251\250\077\303\271\156\027\012\145\075\120\005\162"
"\273\325\106\313\354\370\231\262\132\041\302\060\106\211\153\061"
"\036\346\006\250\063\006\174\050\210\050\304\301\242\274\055\121"
"\376\176\055\325\155\365\200\000\146\352\107\135\150\332\330\220"
"\216\127\277\230\310\161\145\030\300\327\107\242\026\267\102\241"
"\302\353\035\252\134\125\261\120\354\132\373\162\063\177\257\361"
"\170\353\214\314\212\272\275\174\110\214\033\372\106\107\172\205"
"\061\351\377\077\144\360\165\200\050\051\254\101\173\354\233\104"
"\361\143\352\030\340\341\006\360\370\206\124\166\215\107\231\346"
"\027\330\137\233\311\301\005\366\021\342\350\235\127\334\116\275"
"\031\220\156\301\244\030\304\217\207\256\036\136\333\362\175\345"
"\047\017\065\256\213\132\101\143\216\376\353\074\372\362\222\217"
"\115\344\226\042\044\177\326\122\144\317\015\300\226\236\261\346"
"\045\132\065\355\250\120\161\031\120\032\001\217\056\237\151\360"
"\177\131\276\114\252\162\201\001\114\003\355\352\303\244\177\151"
"\137\014\021\312\165\003\065\316\351\345\232\167\017\235\170\037"
"\100\122\371\034\205\150\327\217\333\247\001\044\146\305\347\324"
"\100\072\147\065\367\246\007\017\031\337\177\016\215\022\134\005"
"\253\315\124\146\170\236\335\326\041\157\240\204\001\251\115\353"
"\306\046\176\370\044\106\314\127\046\327\033\020\131\300\312\207"
"\076\151\336\226\251\276\341\177\361\224\210\170\124\341\156\022"
"\257\370\242\132\340\212\167\033\312\013\037\224\004\051\156\157"
"\043\035\101\215\361\107\036\362\331\247\037\250\207\127\124\226"
"\253\136\045\331\054\043\226\310\133\312\002\066\116\112\366\151"
"\322\213\226\364\150\312\053\276\230\003\143\150\273\366\225\012"
"\117\354\031\341\347\211\203\050\103\066\262\373\257\165\263\034"
"\256\324\267\252\137\310\365\155\125\177\265\106\037\301\135\344"
"\203\064\235\200\351\204\352\151\041\165\302\046\111\110\305\314"
"\220\325\353\001\203\356\322\146\032\005\143\361\134\061\007\173"
"\055\066\277\053\000\054\077\315\332\076\343\375\003\074\260\253"
"\176\055\331\350\117\240\321\113\303\054\026\240\103\276\055\350"
"\024\040\345\076\074\261\332\221\060\225\312\344\150\032\051\334"
"\066\075\005\330\020\150\304\114\264\062\114\077\061\043\264\254"
"\054\334\226\237\305\326\165\265\016\004\274\037\070\014\377\336"
"\355\242\123\323\226\336\142\077\271\256\044\254\237\273\035\115"
"\257\371\225\233\103\336\371\353\044\030\150\372\343\000\112\266"
"\047\112\334\365\034\275\133\100\225\032\221\101\133\315\106\251"
"\334\231\134\236\327\376\372\271\042\350\263\006\322\305\252\133"
"\352\027\130\236\153\257\057\141\325\215\324\113\347\027\177\103"
"\327\330\036\276\122\265\044\200\025\025\223\275\253\010\276\301"
"\331\264\062\310\062\126\070\154\150\146\210\343\207\204\124\130"
"\343\226\032\123\301\126\366\275\033\306\323\072\051\143\251\024"
"\272\321\032\164\143\242\024\067\126\063\132\340\133\332\076\052"
"\275\170\224\175\152\122\246\266\161\151\013\020\004\170\273\245"
"\151\021\153\306\204\006\311\374\247\035\162\260\076\005\270\122"
"\053\236\304\250\162\025\105\361\027\341\223\155\330\017\377\055"
"\236\361\000\354\017\077\274\105\217\371\251\225\230\113\011\317"
"\065\237\010\176\137\004\133\035\001\223\277\065\010\117\253\334"
"\234\342\340\342\326\020\310\304\102\132\020\144\313\352\022\250"
"\306\241\144\362\167\126\174\361\330\245\111\332\003\030\175\044"
"\023\311\221\201\363\233\166\373\172\253\165\047\003\141\120\304"
"\211\361\207\103\243\367\143\203\156"
#define tst1_z 22
#define tst1 ((&data[2230]))
"\014\205\023\224\235\247\111\054\223\114\047\203\345\017\017\165"
"\056\117\361\057\223\267\263\257"
#define lsto_z 1
#define lsto ((&data[2253]))
"\001"
#define pswd_z 256
#define pswd ((&data[2274]))
"\347\010\271\264\150\206\136\015\366\114\323\264\020\217\331\124"
"\100\253\020\335\153\115\253\134\027\054\010\254\246\146\371\045"
"\030\377\005\205\343\252\376\352\056\335\171\171\025\252\046\026"
"\205\177\074\370\323\213\032\334\135\314\026\022\062\333\245\213"
"\055\145\341\150\216\152\301\004\100\331\001\160\216\043\041\076"
"\362\060\211\036\245\026\152\301\212\054\172\342\006\313\010\107"
"\226\140\112\312\000\063\152\323\014\350\120\202\354\045\135\356"
"\344\054\167\014\054\367\355\306\317\052\233\271\175\314\327\336"
"\213\062\057\124\035\032\241\023\022\172\016\133\014\320\016\064"
"\346\026\323\274\066\122\040\364\047\347\141\147\200\215\052\301"
"\262\104\202\331\374\154\315\166\170\017\114\124\252\340\010\307"
"\034\117\146\363\300\234\232\005\151\143\152\326\023\371\012\247"
"\341\005\334\242\154\137\226\312\202\337\011\017\347\315\134\344"
"\060\314\152\301\161\345\217\164\255\161\334\153\220\123\305\067"
"\244\064\006\152\210\226\320\307\201\060\323\205\146\324\344\163"
"\043\150\135\352\142\170\346\025\110\323\063\221\266\315\032\271"
"\152\365\213\252\265\317\066\266\273\017\232\313\167\207\317\110"
"\135\161\337\036\132\001\221\065\066\326\236\255\061\322\156\101"
"\325\126\266\345\127\233\135\263\146\126\322\026\306\075\116\005"
"\173\367\013\073\076\260\014\315\046\170\371\265\155\167\215\321"
"\202\061\304\224\223\174\236\344\220\057\046\273\140\007\077\353"
"\203\140\355\073"
#define shll_z 8
#define shll ((&data[2595]))
"\353\337\372\041\022\264\303\351\006"
#define date_z 1
#define date ((&data[2603]))
"\332"
#define opts_z 1
#define opts ((&data[2604]))
"\371"
#define rlax_z 1
#define rlax ((&data[2605]))
"\222"
#define inlo_z 3
#define inlo ((&data[2606]))
"\037\174\041"
#define tst2_z 19
#define tst2 ((&data[2609]))
"\030\170\107\235\170\073\371\345\000\376\025\161\056\245\327\250"
"\340\122\041\153\054\353\204"/* End of data[] */;
#define hide_z 4096
#define DEBUGEXEC 0 /* Define as 1 to debug execvp calls */
#define TRACEABLE 1 /* Define as 1 to enable ptrace the executable */
/* rtc.c */
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
/* 'Alleged RC4' */
static unsigned char stte[256], indx, jndx, kndx;
/*
* Reset arc4 stte.
*/
void stte_0(void)
{
indx = jndx = kndx = 0;
do {
stte[indx] = indx;
} while (++indx);
}
/*
* Set key. Can be used more than once.
*/
void key(void * str, int len)
{
unsigned char tmp, * ptr = (unsigned char *)str;
while (len > 0) {
do {
tmp = stte[indx];
kndx += tmp;
kndx += ptr[(int)indx % len];
stte[indx] = stte[kndx];
stte[kndx] = tmp;
} while (++indx);
ptr += 256;
len -= 256;
}
}
/*
* Crypt data.
*/
void arc4(void * str, int len)
{
unsigned char tmp, * ptr = (unsigned char *)str;
while (len > 0) {
indx++;
tmp = stte[indx];
jndx += tmp;
stte[indx] = stte[jndx];
stte[jndx] = tmp;
tmp += stte[indx];
*ptr ^= stte[tmp];
ptr++;
len--;
}
}
/* End of ARC4 */
/*
* Key with file invariants.
*/
int key_with_file(char * file)
{
struct stat statf[1];
struct stat control[1];
if (stat(file, statf) < 0)
return -1;
/* Turn on stable fields */
memset(control, 0, sizeof(control));
control->st_ino = statf->st_ino;
control->st_dev = statf->st_dev;
control->st_rdev = statf->st_rdev;
control->st_uid = statf->st_uid;
control->st_gid = statf->st_gid;
control->st_size = statf->st_size;
control->st_mtime = statf->st_mtime;
control->st_ctime = statf->st_ctime;
key(control, sizeof(control));
return 0;
}
#if DEBUGEXEC
void debugexec(char * sh11, int argc, char ** argv)
{
int i;
fprintf(stderr, "shll=%s\n", sh11 ? sh11 : "<null>");
fprintf(stderr, "argc=%d\n", argc);
if (!argv) {
fprintf(stderr, "argv=<null>\n");
} else {
for (i = 0; i <= argc ; i++)
fprintf(stderr, "argv[%d]=%.60s\n", i, argv[i] ? argv[i] : "<null>");
}
}
#endif /* DEBUGEXEC */
void rmarg(char ** argv, char * arg)
{
for (; argv && *argv && *argv != arg; argv++);
for (; argv && *argv; argv++)
*argv = argv[1];
}
int chkenv(int argc)
{
char buff[512];
unsigned long mask, m;
int l, a, c;
char * string;
extern char ** environ;
mask = (unsigned long)&chkenv;
mask ^= (unsigned long)getpid() * ~mask;
sprintf(buff, "x%lx", mask);
string = getenv(buff);
#if DEBUGEXEC
fprintf(stderr, "getenv(%s)=%s\n", buff, string ? string : "<null>");
#endif
l = strlen(buff);
if (!string) {
/* 1st */
sprintf(&buff[l], "=%lu %d", mask, argc);
putenv(strdup(buff));
return 0;
}
c = sscanf(string, "%lu %d%c", &m, &a, buff);
if (c == 2 && m == mask) {
/* 3rd */
rmarg(environ, &string[-l - 1]);
return 1 + (argc - a);
}
return -1;
}
#if !TRACEABLE
#define _LINUX_SOURCE_COMPAT
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
# define PTRACE_ATTACH PT_ATTACH
#endif
void untraceable(char * argv0)
{
char proc[80];
int pid, mine;
switch(pid = fork()) {
case 0:
pid = getppid();
/* For problematic SunOS ptrace */
#if defined(__FreeBSD__)
sprintf(proc, "/proc/%d/mem", (int)pid);
#else
sprintf(proc, "/proc/%d/as", (int)pid);
#endif
close(0);
mine = !open(proc, O_RDWR|O_EXCL);
if (!mine && errno != EBUSY)
mine = !ptrace(PTRACE_ATTACH, pid, 0, 0);
if (mine) {
kill(pid, SIGCONT);
} else {
perror(argv0);
kill(pid, SIGKILL);
}
_exit(mine);
case -1:
break;
default:
if (pid == waitpid(pid, 0, 0))
return;
}
perror(argv0);
_exit(1);
}
#endif /* !TRACEABLE */
char * xsh(int argc, char ** argv)
{
char * scrpt;
int ret, i, j;
char ** varg;
char * me = argv[0];
stte_0();
key(pswd, pswd_z);
arc4(msg1, msg1_z);
arc4(date, date_z);
if (date[0] && (atoll(date)<time(NULL)))
return msg1;
arc4(shll, shll_z);
arc4(inlo, inlo_z);
arc4(xecc, xecc_z);
arc4(lsto, lsto_z);
arc4(tst1, tst1_z);
key(tst1, tst1_z);
arc4(chk1, chk1_z);
if ((chk1_z != tst1_z) || memcmp(tst1, chk1, tst1_z))
return tst1;
ret = chkenv(argc);
arc4(msg2, msg2_z);
if (ret < 0)
return msg2;
varg = (char **)calloc(argc + 10, sizeof(char *));
if (!varg)
return 0;
if (ret) {
arc4(rlax, rlax_z);
if (!rlax[0] && key_with_file(shll))
return shll;
arc4(opts, opts_z);
arc4(text, text_z);
arc4(tst2, tst2_z);
key(tst2, tst2_z);
arc4(chk2, chk2_z);
if ((chk2_z != tst2_z) || memcmp(tst2, chk2, tst2_z))
return tst2;
/* Prepend hide_z spaces to script text to hide it. */
scrpt = malloc(hide_z + text_z);
if (!scrpt)
return 0;
memset(scrpt, (int) ' ', hide_z);
memcpy(&scrpt[hide_z], text, text_z);
} else { /* Reexecute */
if (*xecc) {
scrpt = malloc(512);
if (!scrpt)
return 0;
sprintf(scrpt, xecc, me);
} else {
scrpt = me;
}
}
j = 0;
varg[j++] = argv[0]; /* My own name at execution */
if (ret && *opts)
varg[j++] = opts; /* Options on 1st line of code */
if (*inlo)
varg[j++] = inlo; /* Option introducing inline code */
varg[j++] = scrpt; /* The script itself */
if (*lsto)
varg[j++] = lsto; /* Option meaning last option */
i = (ret > 1) ? ret : 0; /* Args numbering correction */
while (i < argc)
varg[j++] = argv[i++]; /* Main run-time arguments */
varg[j] = 0; /* NULL terminated array */
#if DEBUGEXEC
debugexec(shll, j, varg);
#endif
execvp(shll, varg);
return shll;
}
int main(int argc, char ** argv)
{
#if DEBUGEXEC
debugexec("main", argc, argv);
#endif
#if !TRACEABLE
untraceable(argv[0]);
#endif
argv[1] = xsh(argc, argv);
fprintf(stderr, "%s%s%s: %s\n", argv[0],
errno ? ": " : "",
errno ? strerror(errno) : "",
argv[1] ? argv[1] : "<null>"
);
return 1;
}

View File

@ -1,7 +0,0 @@
#!/bin/sh
./shc -v -r -T -f ./ConfigValidator.sh
Sleep 1
rm -rf ./ConfigValidator/ConfigValidator.c
cp -rp ./ConfigValidator.sh.x.c ./ConfigValidator/ConfigValidator.c
rm -rf ./ConfigValidator.sh.x
rm -rf ./ConfigValidator.sh.x.c

View File

@ -1,28 +0,0 @@
XCODE_VERSION_GE_4 := $(shell expr `xcodebuild -version | sed -nE 's/^Xcode ([0-9]+).*/\1/p'` \>= 4)
XCODE_VERSION_GE_10 := $(shell expr `xcodebuild -version | sed -nE 's/^Xcode ([0-9]+).*/\1/p'` \>= 10)
XCODEBUILD_OPTIONS=-project 'ConfigValidator.xcodeproj' CONFIGURATION_BUILD_DIR=$(CURDIR)/build DEPLOYMENT_LOCATION=NO
ifeq "$(XCODE_VERSION_GE_10)" "1"
XCODEBUILD_OPTIONS += ARCHS=x86_64 VALID_ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES
endif
ifeq "$(XCODE_VERSION_GE_4)" "1"
XCODEBUILD_OPTIONS += -scheme 'ConfigValidator'
# BUILD_ACTION=running
else
XCODEBUILD_OPTIONS += -configuration 'Release'
endif
ConfigValidator:
@echo "Building ConfigValidator..."
@echo "ConfigValidator uses release of User choice"
@$/chmod 755 CreateBuild.sh
@$/chmod 755 ConfigValidator.sh
@$/chmod 755 shc
@$(CURDIR)/CreateBuild.sh
@/usr/bin/xcodebuild $(XCODEBUILD_OPTIONS) $(BUILD_ACTION) >/dev/null
@echo [XCODE] $(PROGRAMS)
.PHONY: ConfigValidator clean

Binary file not shown.

View File

@ -1141,6 +1141,9 @@ void AboutRefit(void)
AboutMenu.AddMenuInfo_f(" stinga11, TheRacerMaster, solstice, SoThOr, DF");
AboutMenu.AddMenuInfo_f(" cecekpawon, Micky1979, Needy, joevt, ErmaC, vit9696");
AboutMenu.AddMenuInfo_f(" ath, savvas, syscl, goodwin_c, clovy, jief_machak");
AboutMenu.AddMenuInfo_f(" chris1111, vector_sigma, LAbyOne, Florin9doi");
AboutMenu.AddMenuInfo_f("Package credits:");
AboutMenu.AddMenuInfo_f(" Chameleon team, crazybirdy, JrCs, chris1111");
AboutMenu.AddMenuInfo_f("Credits also:");
AboutMenu.AddMenuInfo_f(" projectosx.com, applelife.ru, insanelymac.com");
AboutMenu.AddMenuInfo_f(" ");