From db63ef6ff2f6b11e09b61cbdbd252815700919a3 Mon Sep 17 00:00:00 2001 From: eevee Date: Sun, 3 Nov 2024 18:29:07 +0300 Subject: [PATCH] First commit --- .gitignore | 8 + Common/DirectoryExtensions.cs | 41 ++++ Common/FileStreamExtensions.cs | 14 ++ Common/Models/BinaryHeaders.cs | 30 +++ Common/Models/IviMachOBinary.cs | 68 ++++++ Common/Models/RegularExpressions.cs | 12 + .../Codesigning/CodesigningMachOExtensions.cs | 70 ++++++ Features/Codesigning/CodesigningManager.cs | 159 ++++++++++++ .../Codesigning/Models/IviEncryptionInfo.cs | 9 + Features/Command/IviRootCommand.cs | 133 ++++++++++ .../Command/IviRootCommandParametersBinder.cs | 83 +++++++ Features/Command/IviRootCommandProcessor.cs | 130 ++++++++++ Features/Command/LoggerFactoryBinder.cs | 17 ++ Features/Command/Models/IviPackagingInfo.cs | 9 + Features/Command/Models/IviParameters.cs | 15 ++ Features/Command/Models/IviSigningInfo.cs | 8 + Features/Injection/DebManager.cs | 60 +++++ Features/Injection/DependencyExtensions.cs | 89 +++++++ Features/Injection/InjectionManager.cs | 231 ++++++++++++++++++ Features/Injection/Models/IviCopiedBinary.cs | 35 +++ .../Injection/Models/IviInjectionEntry.cs | 46 ++++ .../Injection/Models/IviInjectionEntryType.cs | 11 + .../Injection/Models/RegularExpressions.cs | 9 + .../InfoPlistDictionaryExtensions.cs | 36 +++ Features/Packaging/Models/DirectoryNames.cs | 7 + .../Models/InfoPlistDictionaryKeys.cs | 16 ++ .../Packaging/Models/IviDirectoriesInfo.cs | 10 + Features/Packaging/Models/IviPackageInfo.cs | 12 + Features/Packaging/PackageManager.cs | 67 +++++ .../Packaging/PackageManager_Modifications.cs | 104 ++++++++ Features/Packaging/PackageManager_Output.cs | 81 ++++++ Images/Banner.png | Bin 0 -> 21620 bytes .../CydiaSubstrate.framework/CydiaSubstrate | Bin 0 -> 377872 bytes .../CydiaSubstrate.framework/Info.plist | 25 ++ KnownFrameworks/Orion.framework/Info.plist | Bin 0 -> 745 bytes KnownFrameworks/Orion.framework/Orion | Bin 0 -> 216448 bytes LICENSE | 21 ++ Program.cs | 14 ++ README.md | 20 ++ ivinject.csproj | 26 ++ ivinject.sln | 16 ++ 41 files changed, 1742 insertions(+) create mode 100644 .gitignore create mode 100644 Common/DirectoryExtensions.cs create mode 100644 Common/FileStreamExtensions.cs create mode 100644 Common/Models/BinaryHeaders.cs create mode 100644 Common/Models/IviMachOBinary.cs create mode 100644 Common/Models/RegularExpressions.cs create mode 100644 Features/Codesigning/CodesigningMachOExtensions.cs create mode 100644 Features/Codesigning/CodesigningManager.cs create mode 100644 Features/Codesigning/Models/IviEncryptionInfo.cs create mode 100644 Features/Command/IviRootCommand.cs create mode 100644 Features/Command/IviRootCommandParametersBinder.cs create mode 100644 Features/Command/IviRootCommandProcessor.cs create mode 100644 Features/Command/LoggerFactoryBinder.cs create mode 100644 Features/Command/Models/IviPackagingInfo.cs create mode 100644 Features/Command/Models/IviParameters.cs create mode 100644 Features/Command/Models/IviSigningInfo.cs create mode 100644 Features/Injection/DebManager.cs create mode 100644 Features/Injection/DependencyExtensions.cs create mode 100644 Features/Injection/InjectionManager.cs create mode 100644 Features/Injection/Models/IviCopiedBinary.cs create mode 100644 Features/Injection/Models/IviInjectionEntry.cs create mode 100644 Features/Injection/Models/IviInjectionEntryType.cs create mode 100644 Features/Injection/Models/RegularExpressions.cs create mode 100644 Features/Packaging/InfoPlistDictionaryExtensions.cs create mode 100644 Features/Packaging/Models/DirectoryNames.cs create mode 100644 Features/Packaging/Models/InfoPlistDictionaryKeys.cs create mode 100644 Features/Packaging/Models/IviDirectoriesInfo.cs create mode 100644 Features/Packaging/Models/IviPackageInfo.cs create mode 100644 Features/Packaging/PackageManager.cs create mode 100644 Features/Packaging/PackageManager_Modifications.cs create mode 100644 Features/Packaging/PackageManager_Output.cs create mode 100644 Images/Banner.png create mode 100644 KnownFrameworks/CydiaSubstrate.framework/CydiaSubstrate create mode 100644 KnownFrameworks/CydiaSubstrate.framework/Info.plist create mode 100644 KnownFrameworks/Orion.framework/Info.plist create mode 100755 KnownFrameworks/Orion.framework/Orion create mode 100644 LICENSE create mode 100644 Program.cs create mode 100644 README.md create mode 100644 ivinject.csproj create mode 100644 ivinject.sln diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..60a5a63 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +bin/ +obj/ +.idea +._* +.DS_Store +/packages/ +riderModule.iml +/_ReSharper.Caches/ \ No newline at end of file diff --git a/Common/DirectoryExtensions.cs b/Common/DirectoryExtensions.cs new file mode 100644 index 0000000..a6b5870 --- /dev/null +++ b/Common/DirectoryExtensions.cs @@ -0,0 +1,41 @@ +namespace ivinject.Common; + +internal static class DirectoryExtensions +{ + internal static string TempDirectoryPath() + { + return Path.Combine( + Path.GetTempPath(), + Path.ChangeExtension(Path.GetRandomFileName(), null) + ); + } + + internal static string HomeDirectoryPath() => + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + + internal static void CopyDirectory(string sourceDir, string destinationDir, bool recursive) + { + var dir = new DirectoryInfo(sourceDir); + + if (!dir.Exists) + throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}"); + + var dirs = dir.GetDirectories(); + + Directory.CreateDirectory(destinationDir); + + foreach (var file in dir.GetFiles()) + { + var targetFilePath = Path.Combine(destinationDir, file.Name); + file.CopyTo(targetFilePath); + } + + if (!recursive) return; + + foreach (var subDir in dirs) + { + var newDestinationDir = Path.Combine(destinationDir, subDir.Name); + CopyDirectory(subDir.FullName, newDestinationDir, true); + } + } +} \ No newline at end of file diff --git a/Common/FileStreamExtensions.cs b/Common/FileStreamExtensions.cs new file mode 100644 index 0000000..dc7016e --- /dev/null +++ b/Common/FileStreamExtensions.cs @@ -0,0 +1,14 @@ +namespace ivinject.Common; + +internal static class FileStreamExtensions +{ + internal static uint FileHeader(this FileStream stream) + { + using var reader = new BinaryReader(stream); + var bytes = reader.ReadBytes(4); + + return bytes.Length != 4 + ? uint.MinValue + : BitConverter.ToUInt32(bytes); + } +} \ No newline at end of file diff --git a/Common/Models/BinaryHeaders.cs b/Common/Models/BinaryHeaders.cs new file mode 100644 index 0000000..891827a --- /dev/null +++ b/Common/Models/BinaryHeaders.cs @@ -0,0 +1,30 @@ +namespace ivinject.Common.Models; + +internal class BinaryHeaders +{ + private const uint FatMagic = 0xcafebabe; + private const uint FatMagic64 = 0xcafebabf; + private const uint FatCigam = 0xbebafeca; + private const uint FatCigam64 = 0xbfbafeca; + + private const uint MhMagic = 0xfeedface; + private const uint MhMagic64 = 0xfeedfacf; + private const uint MhCigam = 0xcefaedfe; + private const uint MhCigam64 = 0xcffaedfe; + + internal static readonly uint[] FatHeaders = + [ + FatMagic, + FatMagic64, + FatCigam, + FatCigam64 + ]; + + internal static readonly uint[] MhHeaders = + [ + MhMagic, + MhMagic64, + MhCigam, + MhCigam64 + ]; +} \ No newline at end of file diff --git a/Common/Models/IviMachOBinary.cs b/Common/Models/IviMachOBinary.cs new file mode 100644 index 0000000..288c2b3 --- /dev/null +++ b/Common/Models/IviMachOBinary.cs @@ -0,0 +1,68 @@ +using System.Diagnostics; +using static ivinject.Common.Models.BinaryHeaders; + +namespace ivinject.Common.Models; + +internal class IviMachOBinary(string fileName) +{ + private FileInfo FileInfo { get; } = new(fileName); + + internal string Name => FileInfo.Name; + internal string FullName => FileInfo.FullName; + + internal bool IsFatFile + { + get + { + var header = File.OpenRead(FullName).FileHeader(); + return FatHeaders.Contains(header); + } + } + + internal string FileSize + { + get + { + FileInfo.Refresh(); + var size = FileInfo.Length; + + return size switch + { + + < 1024 => $"{size:F0} bytes", + _ when size >> 10 < 1024 => $"{size / (float)1024:F1} KB", + _ when size >> 20 < 1024 => $"{(size >> 10) / (float)1024:F1} MB", + _ => $"{(size >> 30) / (float)1024:F1} GB" + }; + } + } + + internal async Task IsEncrypted() + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "otool", + Arguments = $"-l {FullName}", + RedirectStandardOutput = true + } + ); + + var output = await process!.StandardOutput.ReadToEndAsync(); + return RegularExpressions.OToolEncryptedBinary().IsMatch(output); + } + + internal async Task Thin() + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "lipo", + Arguments = $"-thin arm64 {FullName} -output {FullName}" + } + ); + + await process!.WaitForExitAsync(); + return process.ExitCode == 0; + } +} \ No newline at end of file diff --git a/Common/Models/RegularExpressions.cs b/Common/Models/RegularExpressions.cs new file mode 100644 index 0000000..88b4fd6 --- /dev/null +++ b/Common/Models/RegularExpressions.cs @@ -0,0 +1,12 @@ +using System.Text.RegularExpressions; + +namespace ivinject.Common.Models; + +internal static partial class RegularExpressions +{ + [GeneratedRegex("cryptid 1", RegexOptions.Compiled)] + internal static partial Regex OToolEncryptedBinary(); + + [GeneratedRegex(@"\.(?:app|\w*ipa)$", RegexOptions.Compiled)] + internal static partial Regex ApplicationPackage(); +} \ No newline at end of file diff --git a/Features/Codesigning/CodesigningMachOExtensions.cs b/Features/Codesigning/CodesigningMachOExtensions.cs new file mode 100644 index 0000000..c0a8b6f --- /dev/null +++ b/Features/Codesigning/CodesigningMachOExtensions.cs @@ -0,0 +1,70 @@ +using System.Diagnostics; +using System.Text; +using ivinject.Common.Models; + +namespace ivinject.Features.Codesigning; + +internal static class CodesigningMachOExtensions +{ + internal static async Task SignAsync( + this IviMachOBinary binary, + string identity, + bool force, + FileInfo? entitlements, + bool preserveEntitlements = false + ) + { + var arguments = new StringBuilder($"-s {identity}"); + + if (entitlements is not null) + arguments.Append($" --entitlements {entitlements.FullName}"); + else if (preserveEntitlements) + arguments.Append(" --preserve-metadata=entitlements"); + + if (force) + arguments.Append(" -f"); + + arguments.Append($" {binary.FullName}"); + + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "codesign", + Arguments = arguments.ToString(), + RedirectStandardOutput = true + } + ); + + await process!.WaitForExitAsync(); + return process.ExitCode == 0; + } + + internal static async Task RemoveSignatureAsync(this IviMachOBinary binary) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "codesign", + Arguments = $"--remove-signature {binary.FullName}" + } + ); + + await process!.WaitForExitAsync(); + return process.ExitCode == 0; + } + + internal static async Task DumpEntitlementsAsync(this IviMachOBinary binary, string outputFilePath) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "codesign", + Arguments = $"-d --entitlements {outputFilePath} --xml {binary.FullName}", + RedirectStandardError = true + } + ); + + await process!.WaitForExitAsync(); + return process.ExitCode == 0; + } +} \ No newline at end of file diff --git a/Features/Codesigning/CodesigningManager.cs b/Features/Codesigning/CodesigningManager.cs new file mode 100644 index 0000000..9e0ac43 --- /dev/null +++ b/Features/Codesigning/CodesigningManager.cs @@ -0,0 +1,159 @@ +using ivinject.Common; +using ivinject.Common.Models; +using ivinject.Features.Codesigning.Models; +using ivinject.Features.Packaging.Models; +using Microsoft.Extensions.Logging; +using static ivinject.Features.Packaging.Models.DirectoryNames; +using static ivinject.Common.Models.BinaryHeaders; + +namespace ivinject.Features.Codesigning; + +internal class CodesigningManager(ILogger logger) : IDisposable +{ + private IviPackageInfo _packageInfo = null!; + + private readonly List _allBinaries = []; + private List Binaries => _allBinaries[1..]; + private IviMachOBinary MainBinary => _allBinaries[0]; + + private FileInfo? _savedMainEntitlements; + + internal void UpdateWithPackage(IviPackageInfo packageInfo) + { + _packageInfo = packageInfo; + ProcessBinaries(packageInfo); + } + + private void ProcessBinaries(IviPackageInfo packageInfo) + { + foreach (var file in Directory.EnumerateFiles( + packageInfo.DirectoriesInfo.BundleDirectory, + "*", + SearchOption.AllDirectories)) + { + var header = File.OpenRead(file).FileHeader(); + + if (!MhHeaders.Contains(header) && !FatHeaders.Contains(header)) + continue; + + if (file.Contains("Stub")) + { + var relativePath = Path.GetRelativePath( + packageInfo.DirectoriesInfo.BundleDirectory, + file + ); + logger.LogWarning( + "Skipping stub executable {}, its signature may not be modified", + relativePath + ); + continue; + } + + _allBinaries.Add(new IviMachOBinary(file)); + } + } + + internal async Task GetEncryptionStateAsync() + { + var results = await Task.WhenAll( + Binaries.Select( + async binary => new + { + Binary = binary, + IsEncrypted = await binary.IsEncrypted() + } + )); + + return new IviEncryptionInfo + { + IsMainBinaryEncrypted = await MainBinary.IsEncrypted(), + EncryptedBinaries = results + .Where(result => result.IsEncrypted) + .Select(result => result.Binary) + }; + } + + internal async Task SaveMainBinaryEntitlementsAsync() + { + var tempFile = Path.GetTempFileName(); + + if (await MainBinary.DumpEntitlementsAsync(tempFile)) + { + logger.LogInformation("Saved {} entitlements", MainBinary.Name); + _savedMainEntitlements = new FileInfo(tempFile); + + return; + } + + logger.LogWarning( + "Unable to save {} entitlements. The binary is likely unsigned.", + MainBinary.Name + ); + } + + internal async Task SignAsync(string identity, bool isAdHocSigning, FileInfo? entitlements) + { + var mainExecutablesCount = 0; + + var signingResults = await Task.WhenAll( + Binaries.Select(async binary => + { + var isMainExecutable = !Path.GetRelativePath( + _packageInfo.DirectoriesInfo.BundleDirectory, + binary.FullName + ).Contains(FrameworksDirectoryName); + + if (isMainExecutable) + mainExecutablesCount++; + + return await binary.SignAsync( + identity, + isAdHocSigning, + isMainExecutable + ? entitlements + : null, + isMainExecutable && entitlements is null + ); + } + ) + ); + + if (signingResults.Any(result => !result)) + return false; + + if (!await MainBinary.SignAsync(identity, false, _savedMainEntitlements ?? entitlements)) + return false; + + logger.LogInformation( + "Signed {} binaries ({} main executables) with the specified identity", + _allBinaries.Count, + mainExecutablesCount + 1 // App main executable + ); + + return true; + } + + internal async Task RemoveSignatureAsync(bool allBinaries) + { + if (allBinaries) + { + var removingResults = await Task.WhenAll( + _allBinaries.Select(binary => binary.RemoveSignatureAsync()) + ); + + if (removingResults.Any(result => !result)) + return false; + + logger.LogInformation("Signature removed from {} binaries", _allBinaries.Count); + return true; + } + + if (!await MainBinary.RemoveSignatureAsync()) + return false; + + logger.LogInformation("Removed {} signature", MainBinary.Name); + return true; + } + + public void Dispose() => _savedMainEntitlements?.Delete(); +} \ No newline at end of file diff --git a/Features/Codesigning/Models/IviEncryptionInfo.cs b/Features/Codesigning/Models/IviEncryptionInfo.cs new file mode 100644 index 0000000..5c326a3 --- /dev/null +++ b/Features/Codesigning/Models/IviEncryptionInfo.cs @@ -0,0 +1,9 @@ +using ivinject.Common.Models; + +namespace ivinject.Features.Codesigning.Models; + +internal class IviEncryptionInfo +{ + internal bool IsMainBinaryEncrypted { get; init; } + internal IEnumerable EncryptedBinaries { get; init; } = []; +} \ No newline at end of file diff --git a/Features/Command/IviRootCommand.cs b/Features/Command/IviRootCommand.cs new file mode 100644 index 0000000..4f6c966 --- /dev/null +++ b/Features/Command/IviRootCommand.cs @@ -0,0 +1,133 @@ +using System.CommandLine; +using System.CommandLine.Parsing; +using System.IO.Compression; +using ivinject.Common.Models; + +namespace ivinject.Features.Command; + +internal class IviRootCommand : RootCommand +{ + private static string ParseAppPackageResult(ArgumentResult result) + { + var value = result.Tokens[0].Value; + + if (!RegularExpressions.ApplicationPackage().IsMatch(value)) + result.ErrorMessage = "The application package must be either an .app bundle or an .ipa$ archive."; + + return value; + } + + // + + private readonly Argument _targetArgument = new( + name: "target", + description: "The application package, either .app bundle or ipa$", + parse: ParseAppPackageResult + ); + + private readonly Argument _outputArgument = new( + name: "output", + description: "The output application package, either .app bundle or ipa$", + parse: ParseAppPackageResult + ); + + private readonly Option _overwriteOutputOption = new( + "--overwrite", + "Overwrite the output if it already exists" + ); + + private readonly Option _compressionLevelOption = new( + "--compression-level", + description: "The compression level for ipa$ archive output", + getDefaultValue: () => CompressionLevel.Fastest + ); + + // + + private readonly Option> _itemsOption = new("--items") + { + Description = "The entries to inject (Debian packages, Frameworks, and Bundles)", + AllowMultipleArgumentsPerToken = true + }; + + private readonly Option _codesignIdentityOption = new( + "--sign", + "The identity for code signing (use \"-\" for ad hoc, a.k.a. fake signing)" + ); + + private readonly Option _codesignEntitlementsOption = new( + "--entitlements", + "The file containing entitlements that will be written into main executables" + ); + + // + + private readonly Option _customBundleIdOption = new( + "--bundleId", + "The custom identifier that will be applied to application bundles" + ); + + private readonly Option _enableDocumentsSupportOption = new( + "--enable-documents-support", + "Enables documents support (file sharing) for the application" + ); + + private readonly Option _removeSupportedDevicesOption = new( + "--remove-supported-devices", + "Removes supported devices property" + ); + + private readonly Option> _directoriesToRemoveOption = new("--remove-directories") + { + Description = "Directories to remove in the app package, e.g. PlugIns, Watch, AppClip", + AllowMultipleArgumentsPerToken = true + }; + + internal IviRootCommand() : base("The most demure iOS app injector and signer") + { + _itemsOption.AddAlias("-i"); + _codesignIdentityOption.AddAlias("-s"); + _compressionLevelOption.AddAlias("--level"); + _codesignEntitlementsOption.AddAlias("-e"); + + _customBundleIdOption.AddAlias("-b"); + _enableDocumentsSupportOption.AddAlias("-d"); + _removeSupportedDevicesOption.AddAlias("-u"); + _directoriesToRemoveOption.AddAlias("-r"); + + AddArgument(_targetArgument); + AddArgument(_outputArgument); + AddOption(_overwriteOutputOption); + AddOption(_compressionLevelOption); + + AddOption(_itemsOption); + AddOption(_codesignIdentityOption); + AddOption(_codesignEntitlementsOption); + + AddOption(_customBundleIdOption); + AddOption(_enableDocumentsSupportOption); + AddOption(_removeSupportedDevicesOption); + AddOption(_directoriesToRemoveOption); + + this.SetHandler(async (iviParameters, loggerFactory) => + { + var commandProcessor = new IviRootCommandProcessor(loggerFactory); + await commandProcessor.ProcessRootCommand(iviParameters); + }, + new IviRootCommandParametersBinder( + _targetArgument, + _outputArgument, + _overwriteOutputOption, + _compressionLevelOption, + _itemsOption, + _codesignIdentityOption, + _codesignEntitlementsOption, + _customBundleIdOption, + _enableDocumentsSupportOption, + _removeSupportedDevicesOption, + _directoriesToRemoveOption + ), + new LoggerFactoryBinder() + ); + } +} \ No newline at end of file diff --git a/Features/Command/IviRootCommandParametersBinder.cs b/Features/Command/IviRootCommandParametersBinder.cs new file mode 100644 index 0000000..14bfa81 --- /dev/null +++ b/Features/Command/IviRootCommandParametersBinder.cs @@ -0,0 +1,83 @@ +using System.CommandLine; +using System.CommandLine.Binding; +using System.IO.Compression; +using ivinject.Features.Command.Models; +using ivinject.Features.Injection.Models; + +namespace ivinject.Features.Command; + +internal class IviRootCommandParametersBinder( + Argument targetArgument, + Argument outputArgument, + Option overwriteOutputOption, + Option compressionLevelOption, + Option> itemsOption, + Option codesignIdentityOption, + Option codesignEntitlementsOption, + Option customBundleIdOption, + Option enableDocumentsSupportOption, + Option removeSupportedDevicesOption, + Option> directoriesToRemoveOption +) : BinderBase +{ + protected override IviParameters GetBoundValue(BindingContext bindingContext) + { + var targetAppPackage = + bindingContext.ParseResult.GetValueForArgument(targetArgument); + var outputAppPackage = + bindingContext.ParseResult.GetValueForArgument(outputArgument); + var overwriteOutput = + bindingContext.ParseResult.GetValueForOption(overwriteOutputOption); + var compressionLevel = + bindingContext.ParseResult.GetValueForOption(compressionLevelOption); + + var items = + bindingContext.ParseResult.GetValueForOption(itemsOption); + var codesignIdentity = + bindingContext.ParseResult.GetValueForOption(codesignIdentityOption); + var codesignEntitlements = + bindingContext.ParseResult.GetValueForOption(codesignEntitlementsOption); + + var bundleId = + bindingContext.ParseResult.GetValueForOption(customBundleIdOption); + var enableDocumentsSupport = + bindingContext.ParseResult.GetValueForOption(enableDocumentsSupportOption); + var removeSupportedDevices = + bindingContext.ParseResult.GetValueForOption(removeSupportedDevicesOption); + var directoriesToRemove = + bindingContext.ParseResult.GetValueForOption(directoriesToRemoveOption); + + IviPackagingInfo? packagingInfo; + + if (bundleId is null + && directoriesToRemove is null + && !enableDocumentsSupport + && !removeSupportedDevices) + packagingInfo = null; + else + packagingInfo = new IviPackagingInfo + { + CustomBundleId = bundleId, + EnableDocumentsSupport = enableDocumentsSupport, + RemoveSupportedDevices = removeSupportedDevices, + DirectoriesToRemove = directoriesToRemove ?? [] + }; + + return new IviParameters + { + TargetAppPackage = targetAppPackage, + OutputAppPackage = outputAppPackage, + OverwriteOutput = overwriteOutput, + CompressionLevel = compressionLevel, + InjectionEntries = items?.Select(item => new IviInjectionEntry(item)) ?? [], + SigningInfo = codesignIdentity is null + ? null + : new IviSigningInfo + { + Identity = codesignIdentity, + Entitlements = codesignEntitlements + }, + PackagingInfo = packagingInfo + }; + } +} \ No newline at end of file diff --git a/Features/Command/IviRootCommandProcessor.cs b/Features/Command/IviRootCommandProcessor.cs new file mode 100644 index 0000000..544f014 --- /dev/null +++ b/Features/Command/IviRootCommandProcessor.cs @@ -0,0 +1,130 @@ +using System.Diagnostics.CodeAnalysis; +using ivinject.Features.Codesigning; +using ivinject.Features.Command.Models; +using ivinject.Features.Injection; +using ivinject.Features.Injection.Models; +using ivinject.Features.Packaging; +using ivinject.Features.Packaging.Models; +using Microsoft.Extensions.Logging; + +namespace ivinject.Features.Command; + +internal class IviRootCommandProcessor +{ + private readonly ILogger _logger; + private readonly PackageManager _packageManager; + private readonly InjectionManager _injectionManager; + private readonly CodesigningManager _codesigningManager; + + internal IviRootCommandProcessor(ILoggerFactory loggerFactory) + { + _logger = loggerFactory.CreateLogger("Main"); + _packageManager = new PackageManager( + loggerFactory.CreateLogger("PackageManager") + ); + _injectionManager = new InjectionManager( + loggerFactory.CreateLogger("InjectionManager") + ); + _codesigningManager = new CodesigningManager( + loggerFactory.CreateLogger("CodesigningManager") + ); + } + + [SuppressMessage("Usage", "CA2254")] + private void CriticalError(string? message, params object?[] args) + { + _logger.LogCritical(message, args); + Environment.Exit(1); + } + + private async Task InjectEntries(IEnumerable injectionEntries) + { + await _injectionManager.AddEntriesAsync(injectionEntries); + + if (!await _injectionManager.ThinCopiedBinariesAsync()) + CriticalError("Unable to thin one or more binaries."); + + await _injectionManager.CopyKnownFrameworksAsync(); + await _injectionManager.FixCopiedDependenciesAsync(); + } + + private async Task CheckForEncryptedBinaries(IviPackageInfo packageInfo) + { + var encryptionInfo = await _codesigningManager.GetEncryptionStateAsync(); + + if (encryptionInfo.IsMainBinaryEncrypted) + CriticalError("The main application binary, {}, is encrypted.", packageInfo.MainBinary.Name); + + if (encryptionInfo.EncryptedBinaries.Any()) + { + var encryptedPaths = encryptionInfo.EncryptedBinaries.Select(binary => + Path.GetRelativePath(packageInfo.DirectoriesInfo.BundleDirectory, binary.FullName) + ); + + _logger.LogError( + "The app package contains encrypted binaries. Consider removing them: \n{}", + string.Join("\n", encryptedPaths) + ); + } + } + + private async Task ProcessSigning(IviSigningInfo? signingInfo) + { + var hasIdentity = signingInfo is not null; + var isAdHocSigning = signingInfo?.IsAdHocSigning ?? false; + var hasEntitlements = signingInfo?.Entitlements is not null; + + if (hasIdentity && !isAdHocSigning && !hasEntitlements) + CriticalError("Entitlements are required for non ad hoc identity signing."); + + if (isAdHocSigning && !hasEntitlements) + await _codesigningManager.SaveMainBinaryEntitlementsAsync(); + + if (!await _codesigningManager.RemoveSignatureAsync(!hasIdentity || hasEntitlements)) + CriticalError("Unable to remove signature from one or more binaries."); + + await _injectionManager.InsertLoadCommandsAsync(); + + if (hasIdentity) + { + if (!await _codesigningManager.SignAsync( + signingInfo!.Identity, + isAdHocSigning, + signingInfo.Entitlements)) + CriticalError("Unable to sign one or more binaries."); + } + } + + internal async Task ProcessRootCommand(IviParameters parameters) + { + _packageManager.LoadAppPackage(parameters.TargetAppPackage); + _logger.LogInformation("Loaded app package"); + + var packageInfo = _packageManager.PackageInfo; + + if (parameters.PackagingInfo is { } packagingInfo) + await _packageManager.PerformPackageModifications(packagingInfo); + + // + + _injectionManager.UpdateWithPackage(packageInfo); + await InjectEntries(parameters.InjectionEntries); + + _codesigningManager.UpdateWithPackage(packageInfo); + await CheckForEncryptedBinaries(packageInfo); + + await ProcessSigning(parameters.SigningInfo); + + if (!_packageManager.CreateAppPackage( + parameters.OutputAppPackage, + parameters.OverwriteOutput, + parameters.CompressionLevel + )) + CriticalError( + "The app package couldn't be created. If it already exists, use --overwrite to replace." + ); + + _codesigningManager.Dispose(); + _packageManager.Dispose(); + } +} \ No newline at end of file diff --git a/Features/Command/LoggerFactoryBinder.cs b/Features/Command/LoggerFactoryBinder.cs new file mode 100644 index 0000000..37e8bed --- /dev/null +++ b/Features/Command/LoggerFactoryBinder.cs @@ -0,0 +1,17 @@ +using System.CommandLine.Binding; +using Microsoft.Extensions.Logging; + +namespace ivinject.Features.Command; + +internal class LoggerFactoryBinder : BinderBase +{ + protected override ILoggerFactory GetBoundValue(BindingContext bindingContext) + => GetLoggerFactory(); + private static ILoggerFactory GetLoggerFactory() + { + var loggerFactory = LoggerFactory.Create(builder => + builder.AddConsole()); + + return loggerFactory; + } +} \ No newline at end of file diff --git a/Features/Command/Models/IviPackagingInfo.cs b/Features/Command/Models/IviPackagingInfo.cs new file mode 100644 index 0000000..cae2252 --- /dev/null +++ b/Features/Command/Models/IviPackagingInfo.cs @@ -0,0 +1,9 @@ +namespace ivinject.Features.Command.Models; + +internal class IviPackagingInfo +{ + internal string? CustomBundleId { get; init; } + internal bool RemoveSupportedDevices { get; init; } + internal bool EnableDocumentsSupport { get; init; } + internal required IEnumerable DirectoriesToRemove { get; init; } +} \ No newline at end of file diff --git a/Features/Command/Models/IviParameters.cs b/Features/Command/Models/IviParameters.cs new file mode 100644 index 0000000..d2bd5d1 --- /dev/null +++ b/Features/Command/Models/IviParameters.cs @@ -0,0 +1,15 @@ +using System.IO.Compression; +using ivinject.Features.Injection.Models; + +namespace ivinject.Features.Command.Models; + +internal class IviParameters +{ + internal required string TargetAppPackage { get; init; } + internal required string OutputAppPackage { get; init; } + internal bool OverwriteOutput { get; init; } + internal CompressionLevel CompressionLevel { get; init; } + internal required IEnumerable InjectionEntries { get; init; } + internal IviSigningInfo? SigningInfo { get; init; } + internal IviPackagingInfo? PackagingInfo { get; init; } +} \ No newline at end of file diff --git a/Features/Command/Models/IviSigningInfo.cs b/Features/Command/Models/IviSigningInfo.cs new file mode 100644 index 0000000..c901f76 --- /dev/null +++ b/Features/Command/Models/IviSigningInfo.cs @@ -0,0 +1,8 @@ +namespace ivinject.Features.Command.Models; + +internal class IviSigningInfo +{ + internal required string Identity { get; init; } + internal bool IsAdHocSigning => Identity == "-"; + internal FileInfo? Entitlements { get; init; } +} \ No newline at end of file diff --git a/Features/Injection/DebManager.cs b/Features/Injection/DebManager.cs new file mode 100644 index 0000000..7a80548 --- /dev/null +++ b/Features/Injection/DebManager.cs @@ -0,0 +1,60 @@ +using System.Diagnostics; +using ivinject.Features.Injection.Models; +using static ivinject.Common.DirectoryExtensions; + +namespace ivinject.Features.Injection; + +internal class DebManager(IviInjectionEntry debEntry) : IDisposable +{ + private readonly string _tempPath = TempDirectoryPath(); + + internal async Task ExtractDebEntries() + { + if (debEntry.Type is not IviInjectionEntryType.DebianPackage) + throw new ArgumentException("Entry type is not DebianPackage"); + + Directory.CreateDirectory(_tempPath); + + var process = Process.Start( + new ProcessStartInfo + { + FileName = "tar", + Arguments = $"-xf {debEntry.FullName} --directory={_tempPath}" + } + ); + + await process!.WaitForExitAsync(); + + var dataArchive = Directory.GetFiles(_tempPath, "data*.*")[0]; + + process = Process.Start( + new ProcessStartInfo + { + FileName = "tar", + Arguments = $"-xf {dataArchive}", + WorkingDirectory = _tempPath + } + ); + + await process!.WaitForExitAsync(); + + var dataFiles = Directory.EnumerateFiles( + _tempPath, + "*", + SearchOption.AllDirectories + ); + + var dataDirectories = Directory.EnumerateDirectories( + _tempPath, + "*", + SearchOption.AllDirectories + ); + + return dataFiles.Concat(dataDirectories) + .Select(entry => new IviInjectionEntry(entry)) + .Where(entry => entry.Type is not IviInjectionEntryType.Unknown) + .ToArray(); + } + + public void Dispose() => Directory.Delete(_tempPath, true); +} \ No newline at end of file diff --git a/Features/Injection/DependencyExtensions.cs b/Features/Injection/DependencyExtensions.cs new file mode 100644 index 0000000..cfe4d08 --- /dev/null +++ b/Features/Injection/DependencyExtensions.cs @@ -0,0 +1,89 @@ +using System.Diagnostics; +using ivinject.Common.Models; +using ivinject.Features.Injection.Models; +using RegularExpressions = ivinject.Features.Injection.Models.RegularExpressions; + +namespace ivinject.Features.Injection; + +internal static class DependencyExtensions +{ + internal static async Task GetSharedLibraries(this IviMachOBinary binary) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "otool", + Arguments = $"-L {binary.FullName}", + RedirectStandardOutput = true + } + ); + + var output = await process!.StandardOutput.ReadToEndAsync(); + var matches = RegularExpressions.OToolSharedLibrary().Matches(output); + + // the first result is actually LC_ID_DYLIB, not LC_LOAD_DYLIB + return matches.Select(match => match.Groups[1].Value).ToArray()[1..]; + } + + internal static async Task ChangeDependency( + this IviMachOBinary binary, + string oldPath, + string newPath + ) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "install_name_tool", + Arguments = $"-change {oldPath} {newPath} {binary.FullName}", + RedirectStandardError = true + } + ); + + await process!.WaitForExitAsync(); + } + + internal static async Task AddRunPath( + this IviMachOBinary binary, + string rPath + ) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "install_name_tool", + Arguments = $"-add_rpath {rPath} {binary.FullName}", + RedirectStandardOutput = true + } + ); + + await process!.WaitForExitAsync(); + return process.ExitCode == 0; + } + + internal static async Task InsertDependency( + this IviMachOBinary binary, + string dependency + ) + { + using var process = Process.Start( + new ProcessStartInfo + { + FileName = "insert-dylib", + Arguments = $"{dependency} {binary.FullName} --all-yes --inplace", + RedirectStandardOutput = true + } + ); + + await process!.WaitForExitAsync(); + } + + internal static async Task> AllDependencies(this List copiedBinaries) + { + return (await Task.WhenAll( + copiedBinaries.Select(async binary => await binary.Binary.GetSharedLibraries()) + )) + .SelectMany(dependencies => dependencies) + .Distinct(); + } +} \ No newline at end of file diff --git a/Features/Injection/InjectionManager.cs b/Features/Injection/InjectionManager.cs new file mode 100644 index 0000000..aa81374 --- /dev/null +++ b/Features/Injection/InjectionManager.cs @@ -0,0 +1,231 @@ +using Claunia.PropertyList; +using ivinject.Common.Models; +using ivinject.Features.Injection.Models; +using ivinject.Features.Packaging; +using ivinject.Features.Packaging.Models; +using Microsoft.Extensions.Logging; +using static ivinject.Common.DirectoryExtensions; + +namespace ivinject.Features.Injection; + +internal class InjectionManager(ILogger logger) +{ + private readonly List _copiedBinaries = []; + private IviPackageInfo _packageInfo = null!; + + private static readonly IviInjectionEntry[] KnownFrameworkEntries = Directory.GetDirectories( + Path.Combine(HomeDirectoryPath(), ".ivinject"), + "*.framework" + ) + .Select(framework => new IviInjectionEntry(framework)) + .ToArray(); + + private static readonly IviInjectionEntry OrionFramework = KnownFrameworkEntries + .Single(framework => framework.Name == "Orion.framework"); + + private static readonly IviInjectionEntry SubstrateFramework = KnownFrameworkEntries + .Single(framework => framework.Name == "CydiaSubstrate.framework"); + + internal void UpdateWithPackage(IviPackageInfo packageInfo) => + _packageInfo = packageInfo; + + private async Task PrepareEntriesAsync( + IviInjectionEntry[] entries, + List debManagers + ) + { + var finalEntries = entries.Where(entry => + entry.Type is not IviInjectionEntryType.DebianPackage + ).ToList(); + + var debFiles = entries.Where(entry => + entry.Type is IviInjectionEntryType.DebianPackage + ); + + foreach (var debFile in debFiles) + { + var name = debFile.Name; + + var debManager = new DebManager(debFile); + + var debEntries = await debManager.ExtractDebEntries(); + logger.LogInformation("{} entries within {} will be injected", debEntries.Length, name); + + finalEntries.AddRange(debEntries); + debManagers.Add(debManager); + } + + return finalEntries.ToArray(); + } + + private void CopyEntries(IEnumerable entries) + { + foreach (var entry in entries) + { + var isReplaced = false; + var pathInBundle = entry.GetPathInBundle(_packageInfo.DirectoriesInfo); + + var isDynamicLibrary = entry.Type is IviInjectionEntryType.DynamicLibrary; + + if (isDynamicLibrary || entry.Type is IviInjectionEntryType.Unknown) + { + if (File.Exists(pathInBundle)) + { + File.Delete(pathInBundle); + isReplaced = true; + } + + File.Copy(entry.FullName, pathInBundle); + + if (isDynamicLibrary) + _copiedBinaries.Add( + new IviCopiedBinary + { + Binary = new IviMachOBinary(pathInBundle), + Type = entry.Type + } + ); + } + else + { + if (Directory.Exists(pathInBundle)) + { + Directory.Delete(pathInBundle, true); + isReplaced = true; + } + + CopyDirectory(entry.FullName, pathInBundle, true); + + if (entry.Type is not IviInjectionEntryType.Bundle) { + var infoDictionaryPath = Path.Combine(pathInBundle, "Info.plist"); + var infoDictionary = (NSDictionary)PropertyListParser.Parse(infoDictionaryPath); + + _copiedBinaries.Add( + new IviCopiedBinary + { + Binary = new IviMachOBinary( + Path.Combine(pathInBundle, infoDictionary.BundleExecutable()) + ), + Type = entry.Type + } + ); + } + } + + logger.LogInformation("{} {}", isReplaced ? "Replaced" : "Copied", entry.Name); + } + } + + internal async Task AddEntriesAsync(IEnumerable files) + { + var debManagers = new List(); + + var entries = await PrepareEntriesAsync(files.ToArray(), debManagers); + CopyEntries(entries); + + debManagers.ForEach(manager => manager.Dispose()); + } + + internal async Task ThinCopiedBinariesAsync() + { + var fatBinaries = + _copiedBinaries.Select(binary => binary.Binary).Where(binary => binary.IsFatFile); + + foreach (var fatBinary in fatBinaries) + { + var previousSize = fatBinary.FileSize; + + if (!await fatBinary.Thin()) + return false; + + logger.LogInformation( + "Thinned {} ({} -> {})", + fatBinary.Name, + previousSize, + fatBinary.FileSize + ); + } + + return true; + } + + internal async Task CopyKnownFrameworksAsync() + { + var allDependencies = await _copiedBinaries.AllDependencies(); + + var entries = KnownFrameworkEntries.Where(framework => + allDependencies.Any(dependency => dependency.Contains(framework.Name)) + ).ToList(); + + if (entries.Contains(OrionFramework) && !entries.Contains(SubstrateFramework)) + entries.Add(SubstrateFramework); + + CopyEntries(entries); + } + + internal async Task FixCopiedDependenciesAsync() + { + var copiedNames = _copiedBinaries.Select(binary => binary.Name); + + foreach (var binary in _copiedBinaries.Select(binary => binary.Binary)) + { + var dependencies = await binary.GetSharedLibraries(); + + var brokenDependencies = dependencies.Where(dependency => + !dependency.StartsWith('@') && copiedNames.Any(dependency.Contains) + ); + + foreach (var dependency in brokenDependencies) + { + var copiedBinary = _copiedBinaries.Single(copiedBinary => + dependency.Contains(copiedBinary.Name) + ); + + var newPath = copiedBinary.GetRunPath(_packageInfo.DirectoriesInfo); + await binary.ChangeDependency(dependency, newPath); + + logger.LogInformation( + "Fixed dependency path in {} ({} -> {})", + binary.Name, + dependency, + newPath + ); + } + } + } + + internal async Task InsertLoadCommandsAsync() + { + var mainBinary = _packageInfo.MainBinary; + + var copiedDependencies = (await _copiedBinaries.AllDependencies()) + .Where(dependency => dependency.StartsWith('@')); + + var mainBinaryDependencies = await mainBinary.GetSharedLibraries(); + + // if (mainBinaryDependencies.All(dependency => !dependency.StartsWith("@rpath"))) + // { + // await mainBinary.AddRunPath("@executable_path/Frameworks"); + // logger.LogInformation("Added Frameworks to {}'s run path", mainBinary.Name); + // } + + var dependenciesToInsert = _copiedBinaries + .Where(binary => + binary.Type is IviInjectionEntryType.DynamicLibrary or IviInjectionEntryType.Framework + ) + .Where(binary => + copiedDependencies.All(dependency => !dependency.Contains(binary.Name)) + ); + + foreach (var dependency in dependenciesToInsert) + { + if (mainBinaryDependencies.Contains(dependency.Name)) + continue; + + var runPath = dependency.GetRunPath(_packageInfo.DirectoriesInfo); + + await mainBinary.InsertDependency(runPath); + logger.LogInformation("Inserted load command {} into {}", runPath, mainBinary.Name); + } + } +} \ No newline at end of file diff --git a/Features/Injection/Models/IviCopiedBinary.cs b/Features/Injection/Models/IviCopiedBinary.cs new file mode 100644 index 0000000..c2b881c --- /dev/null +++ b/Features/Injection/Models/IviCopiedBinary.cs @@ -0,0 +1,35 @@ +using System.Text; +using ivinject.Common.Models; +using ivinject.Features.Packaging.Models; + +namespace ivinject.Features.Injection.Models; + +internal class IviCopiedBinary +{ + internal required IviInjectionEntryType Type { get; init; } + internal required IviMachOBinary Binary { get; init; } + + internal string Name => Binary.Name; + + internal string GetRunPath(IviDirectoriesInfo directoriesInfo) + { + var builder = new StringBuilder("@rpath/"); + + builder.Append( + Type switch + { + IviInjectionEntryType.Framework => Path.GetRelativePath( + directoriesInfo.FrameworksDirectory, + Binary.FullName + ), + IviInjectionEntryType.PlugIn => Path.GetRelativePath( + directoriesInfo.PlugInsDirectory, + Binary.FullName + ), + _ => Binary.Name + } + ); + + return builder.ToString(); + } +} \ No newline at end of file diff --git a/Features/Injection/Models/IviInjectionEntry.cs b/Features/Injection/Models/IviInjectionEntry.cs new file mode 100644 index 0000000..6f4df1f --- /dev/null +++ b/Features/Injection/Models/IviInjectionEntry.cs @@ -0,0 +1,46 @@ +using ivinject.Features.Packaging.Models; + +namespace ivinject.Features.Injection.Models; + +internal class IviInjectionEntry +{ + private readonly FileInfo _fileInfo; + internal string FullName => _fileInfo.FullName; + internal string Name => _fileInfo.Name; + internal IviInjectionEntryType Type => _fileInfo.Extension switch + { + ".dylib" => IviInjectionEntryType.DynamicLibrary, + ".deb" => IviInjectionEntryType.DebianPackage, + ".bundle" => IviInjectionEntryType.Bundle, + ".framework" => IviInjectionEntryType.Framework, + ".appex" => IviInjectionEntryType.PlugIn, + _ => IviInjectionEntryType.Unknown + }; + + internal IviInjectionEntry(FileInfo fileInfo) + => _fileInfo = fileInfo; + + internal IviInjectionEntry(string filePath) + => _fileInfo = new FileInfo(filePath); + + internal string GetPathInBundle(IviDirectoriesInfo directoriesInfo) => + Type switch + { + IviInjectionEntryType.DynamicLibrary or IviInjectionEntryType.Unknown => + Path.Combine( + Type is IviInjectionEntryType.DynamicLibrary + ? directoriesInfo.FrameworksDirectory + : directoriesInfo.BundleDirectory, + Name + ), + IviInjectionEntryType.Framework => Path.Combine( + directoriesInfo.FrameworksDirectory, + Name + ), + IviInjectionEntryType.PlugIn => Path.Combine( + directoriesInfo.PlugInsDirectory, + Name + ), + _ => Path.Combine(directoriesInfo.BundleDirectory, Name) + }; +} diff --git a/Features/Injection/Models/IviInjectionEntryType.cs b/Features/Injection/Models/IviInjectionEntryType.cs new file mode 100644 index 0000000..a3d0f1d --- /dev/null +++ b/Features/Injection/Models/IviInjectionEntryType.cs @@ -0,0 +1,11 @@ +namespace ivinject.Features.Injection.Models; + +internal enum IviInjectionEntryType +{ + DynamicLibrary, + DebianPackage, + Bundle, + Framework, + PlugIn, + Unknown +} \ No newline at end of file diff --git a/Features/Injection/Models/RegularExpressions.cs b/Features/Injection/Models/RegularExpressions.cs new file mode 100644 index 0000000..b38bd0d --- /dev/null +++ b/Features/Injection/Models/RegularExpressions.cs @@ -0,0 +1,9 @@ +using System.Text.RegularExpressions; + +namespace ivinject.Features.Injection.Models; + +internal static partial class RegularExpressions +{ + [GeneratedRegex(@"([\/@].*) \(.*\)", RegexOptions.Compiled)] + internal static partial Regex OToolSharedLibrary(); +} \ No newline at end of file diff --git a/Features/Packaging/InfoPlistDictionaryExtensions.cs b/Features/Packaging/InfoPlistDictionaryExtensions.cs new file mode 100644 index 0000000..1ae0d15 --- /dev/null +++ b/Features/Packaging/InfoPlistDictionaryExtensions.cs @@ -0,0 +1,36 @@ +using Claunia.PropertyList; +using static ivinject.Features.Packaging.Models.InfoPlistDictionaryKeys; + +namespace ivinject.Features.Packaging; + +internal static class InfoPlistDictionaryExtensions +{ + internal static string? BundleIdentifier(this NSDictionary dictionary) => + dictionary.TryGetValue(CoreFoundationBundleIdentifierKey, out var bundleIdObject) + ? ((NSString)bundleIdObject).Content + : null; + + internal static string? WatchKitCompanionAppBundleIdentifier(this NSDictionary dictionary) => + dictionary.TryGetValue(WatchKitCompanionAppBundleIdentifierKey, out var bundleIdObject) + ? ((NSString)bundleIdObject).Content + : null; + internal static NSDictionary? Extension(this NSDictionary dictionary) => + dictionary.TryGetValue(NextStepExtensionKey, out var extension) + ? (NSDictionary)extension + : null; + + internal static string ExtensionPointIdentifier(this NSDictionary dictionary) => + ((NSString)dictionary[NextStepExtensionPointIdentifierKey]).Content; + + internal static NSDictionary ExtensionAttributes(this NSDictionary dictionary) => + (NSDictionary)dictionary[NextStepExtensionAttributesKey]; + + internal static string WatchKitAppBundleIdentifier(this NSDictionary dictionary) => + ((NSString)dictionary[WatchKitAppBundleIdentifierKey]).Content; + + internal static string BundleExecutable(this NSDictionary dictionary) => + ((NSString)dictionary[CoreFoundationBundleExecutableKey]).Content; + + internal static async Task SaveToFile(this NSDictionary dictionary, string filePath) => + await File.WriteAllTextAsync(filePath, dictionary.ToXmlPropertyList()); +} \ No newline at end of file diff --git a/Features/Packaging/Models/DirectoryNames.cs b/Features/Packaging/Models/DirectoryNames.cs new file mode 100644 index 0000000..f395153 --- /dev/null +++ b/Features/Packaging/Models/DirectoryNames.cs @@ -0,0 +1,7 @@ +namespace ivinject.Features.Packaging.Models; + +internal class DirectoryNames +{ + internal const string FrameworksDirectoryName = "Frameworks"; + internal const string PlugInsDirectoryName = "PlugIns"; +} \ No newline at end of file diff --git a/Features/Packaging/Models/InfoPlistDictionaryKeys.cs b/Features/Packaging/Models/InfoPlistDictionaryKeys.cs new file mode 100644 index 0000000..870202a --- /dev/null +++ b/Features/Packaging/Models/InfoPlistDictionaryKeys.cs @@ -0,0 +1,16 @@ +namespace ivinject.Features.Packaging.Models; + +internal static class InfoPlistDictionaryKeys +{ + internal const string UiKitSupportedDevicesKey = "UISupportedDevices"; + internal const string UiKitSupportsDocumentBrowserKey = "UISupportsDocumentBrowser"; + internal const string UiKitFileSharingEnabledKey = "UIFileSharingEnabled"; + + internal const string CoreFoundationBundleIdentifierKey = "CFBundleIdentifier"; + internal const string CoreFoundationBundleExecutableKey = "CFBundleExecutable"; + internal const string WatchKitCompanionAppBundleIdentifierKey = "WKCompanionAppBundleIdentifier"; + internal const string NextStepExtensionKey = "NSExtension"; + internal const string NextStepExtensionPointIdentifierKey = "NSExtensionPointIdentifier"; + internal const string NextStepExtensionAttributesKey = "NSExtensionAttributes"; + internal const string WatchKitAppBundleIdentifierKey = "WKAppBundleIdentifier"; +} \ No newline at end of file diff --git a/Features/Packaging/Models/IviDirectoriesInfo.cs b/Features/Packaging/Models/IviDirectoriesInfo.cs new file mode 100644 index 0000000..d5d1855 --- /dev/null +++ b/Features/Packaging/Models/IviDirectoriesInfo.cs @@ -0,0 +1,10 @@ +using static ivinject.Features.Packaging.Models.DirectoryNames; + +namespace ivinject.Features.Packaging.Models; + +internal class IviDirectoriesInfo(string bundleDirectory) +{ + internal string BundleDirectory { get; } = bundleDirectory; + internal string FrameworksDirectory { get; } = Path.Combine(bundleDirectory, FrameworksDirectoryName); + internal string PlugInsDirectory { get; } = Path.Combine(bundleDirectory, PlugInsDirectoryName); +} \ No newline at end of file diff --git a/Features/Packaging/Models/IviPackageInfo.cs b/Features/Packaging/Models/IviPackageInfo.cs new file mode 100644 index 0000000..5362089 --- /dev/null +++ b/Features/Packaging/Models/IviPackageInfo.cs @@ -0,0 +1,12 @@ +using ivinject.Common.Models; + +namespace ivinject.Features.Packaging.Models; + +internal class IviPackageInfo(string mainBinary, string bundleIdentifier, IviDirectoriesInfo directoriesInfo) +{ + internal IviMachOBinary MainBinary { get; } = new( + Path.Combine(directoriesInfo.BundleDirectory, mainBinary) + ); + internal string BundleIdentifier { get; } = bundleIdentifier; + internal IviDirectoriesInfo DirectoriesInfo { get; } = directoriesInfo; +} \ No newline at end of file diff --git a/Features/Packaging/PackageManager.cs b/Features/Packaging/PackageManager.cs new file mode 100644 index 0000000..c3a8c54 --- /dev/null +++ b/Features/Packaging/PackageManager.cs @@ -0,0 +1,67 @@ +using System.IO.Compression; +using Claunia.PropertyList; +using ivinject.Features.Packaging.Models; +using Microsoft.Extensions.Logging; +using static ivinject.Common.DirectoryExtensions; + +namespace ivinject.Features.Packaging; + +internal partial class PackageManager(ILogger logger) : IDisposable +{ + private readonly string _tempDirectory = TempDirectoryPath(); + private string TempPayloadDirectory => Path.Combine(_tempDirectory, "Payload"); + private string _bundleDirectory = null!; + + private FileInfo _infoDictionaryFile = null!; + private NSDictionary _infoDictionary = null!; + + internal IviPackageInfo PackageInfo { get; private set; } = null!; + + private void LoadPackageInfo() + { + _infoDictionaryFile = new FileInfo( + Path.Combine(_bundleDirectory, "Info.plist") + ); + + _infoDictionary = (NSDictionary)PropertyListParser.Parse(_infoDictionaryFile); + + PackageInfo = new IviPackageInfo( + _infoDictionary.BundleExecutable(), + ((NSString)_infoDictionary["CFBundleIdentifier"]).Content, + new IviDirectoriesInfo(_bundleDirectory) + ); + } + + private void ProcessAppPackage(string targetAppPackage) + { + var directoryInfo = new DirectoryInfo(targetAppPackage); + + if (directoryInfo.Exists) + { + var packageName = directoryInfo.Name; + + _bundleDirectory = Path.Combine(TempPayloadDirectory, packageName); + + CopyDirectory(targetAppPackage, _bundleDirectory, true); + logger.LogInformation("Copied {}", packageName); + + return; + } + + var fileInfo = new FileInfo(targetAppPackage); + var fileName = fileInfo.Name; + + ZipFile.ExtractToDirectory(targetAppPackage, _tempDirectory); + logger.LogInformation("Extracted {}", fileName); + + _bundleDirectory = Directory.GetDirectories(TempPayloadDirectory)[0]; + } + + internal void LoadAppPackage(string targetAppPackage) + { + ProcessAppPackage(targetAppPackage); + LoadPackageInfo(); + } + + public void Dispose() => Directory.Delete(_tempDirectory, true); +} \ No newline at end of file diff --git a/Features/Packaging/PackageManager_Modifications.cs b/Features/Packaging/PackageManager_Modifications.cs new file mode 100644 index 0000000..00045ae --- /dev/null +++ b/Features/Packaging/PackageManager_Modifications.cs @@ -0,0 +1,104 @@ +using Claunia.PropertyList; +using ivinject.Features.Command.Models; +using Microsoft.Extensions.Logging; +using static ivinject.Features.Packaging.Models.InfoPlistDictionaryKeys; + +namespace ivinject.Features.Packaging; + +internal partial class PackageManager +{ + private void RemoveSupportedDevices() + { + if (_infoDictionary.Remove(UiKitSupportedDevicesKey)) + logger.LogInformation("Removed supported devices property"); + else + logger.LogWarning("Unable to remove supported devices property. The key is likely not present."); + } + + private void EnableDocumentSupport() + { + _infoDictionary[UiKitSupportsDocumentBrowserKey] = new NSNumber(true); + _infoDictionary[UiKitFileSharingEnabledKey] = new NSNumber(true); + + logger.LogInformation("Enabled documents support for the application"); + } + + private void RemoveDirectories(IEnumerable directories) + { + foreach (var directory in directories) + { + Directory.Delete(Path.Combine(_bundleDirectory, directory), true); + logger.LogInformation("Removed {} directory from the app package", directory); + } + } + + private static void ReplaceWatchKitIdentifiers( + NSDictionary dictionary, + string customBundleId, + string packageBundleId + ) + { + if (dictionary.WatchKitCompanionAppBundleIdentifier() is not null) + dictionary[WatchKitCompanionAppBundleIdentifierKey] = new NSString(customBundleId); + + if (dictionary.Extension() is not { } extension + || extension.ExtensionPointIdentifier() != "com.apple.watchkit") + return; + + var attributes = extension.ExtensionAttributes(); + var watchKitAppBundleId = attributes.WatchKitAppBundleIdentifier(); + + attributes[WatchKitAppBundleIdentifierKey] = new NSString( + watchKitAppBundleId.Replace(packageBundleId, customBundleId) + ); + } + + private async Task ReplaceBundleIdentifiers(string customBundleId) + { + var packageBundleId = PackageInfo.BundleIdentifier; + var replacedCount = 0; + + var infoPlistFiles = Directory.EnumerateFiles( + _bundleDirectory, + "Info.plist", + SearchOption.AllDirectories + ); + + foreach (var file in infoPlistFiles) + { + var dictionary = (NSDictionary)PropertyListParser.Parse(file); + + ReplaceWatchKitIdentifiers(dictionary, customBundleId, packageBundleId); + + if (dictionary.BundleIdentifier() is not { } bundleId + || !bundleId.Contains(packageBundleId)) + continue; + + var newBundleId = bundleId.Replace(packageBundleId, customBundleId); + dictionary[CoreFoundationBundleIdentifierKey] = new NSString(newBundleId); + + await dictionary.SaveToFile(file); + replacedCount++; + } + + logger.LogInformation("Replaced bundle identifier of {} bundles", replacedCount); + } + + internal async Task PerformPackageModifications(IviPackagingInfo packagingInfo) + { + RemoveDirectories(packagingInfo.DirectoriesToRemove); + + if (packagingInfo.RemoveSupportedDevices) + RemoveSupportedDevices(); + + if (packagingInfo.EnableDocumentsSupport) + EnableDocumentSupport(); + + await _infoDictionary.SaveToFile(_infoDictionaryFile.FullName); + + if (packagingInfo.CustomBundleId is not { } customBundleId) + return; + + await ReplaceBundleIdentifiers(customBundleId); + } +} \ No newline at end of file diff --git a/Features/Packaging/PackageManager_Output.cs b/Features/Packaging/PackageManager_Output.cs new file mode 100644 index 0000000..b0e5b8d --- /dev/null +++ b/Features/Packaging/PackageManager_Output.cs @@ -0,0 +1,81 @@ +using System.IO.Compression; +using Microsoft.Extensions.Logging; +using static ivinject.Common.DirectoryExtensions; + +namespace ivinject.Features.Packaging; + +internal partial class PackageManager +{ + private bool CopyAppPackage(string outputAppPackage, bool overwrite, ref bool isOverwritten) + { + var packageDirectory = new DirectoryInfo(outputAppPackage); + + if (packageDirectory.Exists) + { + if (overwrite) + { + packageDirectory.Delete(true); + isOverwritten = true; + } + else + { + return false; + } + } + + CopyDirectory(_bundleDirectory, packageDirectory.FullName, true); + logger.LogInformation("{} {}", isOverwritten ? "Replaced" : "Copied", packageDirectory.Name); + + return true; + } + + private bool CreateAppArchive( + string outputAppPackage, + bool overwrite, + CompressionLevel compressionLevel, + ref bool isOverwritten + ) + { + var packageFile = new FileInfo(outputAppPackage); + + if (packageFile.Exists) + { + if (overwrite) + { + packageFile.Delete(); + isOverwritten = true; + } + else + { + return false; + } + } + + foreach (var dotFile in Directory.EnumerateFiles(TempPayloadDirectory, ".*")) + { + var fileInfo = new FileInfo(dotFile); + + File.Delete(fileInfo.FullName); + logger.LogWarning("Removed {} from the app package", fileInfo.Name); + } + + ZipFile.CreateFromDirectory( + TempPayloadDirectory, + packageFile.FullName, + compressionLevel, + true + ); + logger.LogInformation("{} {}", isOverwritten ? "Replaced" : "Created", packageFile.Name); + + return true; + } + + internal bool CreateAppPackage(string outputAppPackage, bool overwrite, CompressionLevel compressionLevel) + { + var isOverwritten = false; + + return outputAppPackage.EndsWith(".app") + ? CopyAppPackage(outputAppPackage, overwrite, ref isOverwritten) + : CreateAppArchive(outputAppPackage, overwrite, compressionLevel, ref isOverwritten); + } +} \ No newline at end of file diff --git a/Images/Banner.png b/Images/Banner.png new file mode 100644 index 0000000000000000000000000000000000000000..31bc244f5fc7afa98dff55c5dc4db111b8e0ad2d GIT binary patch literal 21620 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

~z+@>R5}ai&KZzB(uhKXCZ4` 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 A)Cl;fsh%@ljosidJnr=j6LlLpgQdVu-EljJ+_ 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 literal 0 HcmV?d00001 diff --git a/KnownFrameworks/CydiaSubstrate.framework/Info.plist b/KnownFrameworks/CydiaSubstrate.framework/Info.plist new file mode 100644 index 0000000..6bc23c5 --- /dev/null +++ b/KnownFrameworks/CydiaSubstrate.framework/Info.plist @@ -0,0 +1,25 @@ + + + + + CFBundleExecutable + CydiaSubstrate + + CFBundleIdentifier + ellekit + + CFBundleName + ElleKit + + CFBundleShortVersionString + 1.1.3 + + CFBundleVersion + 1.1.3 + + UIRequiredDeviceCapabilities + + arm64 + + + diff --git a/KnownFrameworks/Orion.framework/Info.plist b/KnownFrameworks/Orion.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..a681923b34bfd2ee269805d3f26d2f6975ae5d80 GIT binary patch literal 745 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%0DWaaIh1~;Ai+3-3YDMZ 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 literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e95a14e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 whoeevee + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..6369a62 --- /dev/null +++ b/Program.cs @@ -0,0 +1,14 @@ +using System.CommandLine; +using ivinject.Features.Command; + +namespace ivinject; + +internal class Program +{ + private static readonly RootCommand RootCommand = new IviRootCommand(); + + private static async Task Main(string[] args) + { + return await RootCommand.InvokeAsync(args); + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e447b8 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ + + +An iOS app injector and signer, the most demure in my opinion. The point is, while developing, I was primarily accommodating myself and made the injector exactly as I wanted to see it. Well, I'm happy to use it. The EeveeSpotify official IPAs are also created with ivinject starting from version 5.8. + +Thus, feature requests and bug reports are not accepted. You probably would like to use [cyan](https://github.com/asdfzxcvbn/pyzule-rw) instead, which remains highly recommended for widespread public use due to its support. In fact, many things are quite similar: both ivinject and cyan can inject tweaks, frameworks, and bundles, fix dependencies, fake sign, etc. However, there are some crucial differences. + +## The Demureness +- **ivinject is an entirely different project, written in C# with .NET 9. The code architecture and quality are significantly better. Compiled with NativeAOT, it produces native binaries, offering incredible speed and low resource usage, without needing anything like venv to run.** + +- ivinject is not just an injector but also a signer. You can specify a code signing identity and a file with entitlements that will be written into the main executables. It signs the code properly according to Apple's technotes, passing codesign verification with the `--strict` option. It only supports developer certificates (.p12 and .mobileprovision). + +- ivinject does not and won’t support anything except for macOS — I couldn’t care less about other platforms. + +- Some more differences like ivinject supports more bundle types for signing and package modifications, such as Extensions or Watch; forcefully thins binaries; does not and won't support configuration files, etc. + +## Prerequisites +* Make sure Xcode is installed +* Install insert-dylib (`brew install --HEAD samdmarshall/formulae/insert-dylib`) +* Copy the contents of `KnownFrameworks` to `~/.ivinject` +* For code signing, the identity needs to be added to Keychain, and the provisioning profile must be installed on the device (you can also add it to the app package by specifying `embedded.mobileprovision` in items) \ No newline at end of file diff --git a/ivinject.csproj b/ivinject.csproj new file mode 100644 index 0000000..6496e52 --- /dev/null +++ b/ivinject.csproj @@ -0,0 +1,26 @@ + + + + Exe + net9.0 + enable + enable + + true + + true + Speed + true + + true + true + + + + + + + + + + diff --git a/ivinject.sln b/ivinject.sln new file mode 100644 index 0000000..a6289a0 --- /dev/null +++ b/ivinject.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ivinject", "ivinject.csproj", "{F5D4F0AB-BD7F-46CF-B6E0-46A9B6D5E7C3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F5D4F0AB-BD7F-46CF-B6E0-46A9B6D5E7C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5D4F0AB-BD7F-46CF-B6E0-46A9B6D5E7C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5D4F0AB-BD7F-46CF-B6E0-46A9B6D5E7C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5D4F0AB-BD7F-46CF-B6E0-46A9B6D5E7C3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal