diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b289681 --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Xcode +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +# DEBUG Lilu for building +Lilu.kext diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..bc3a56e --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,13 @@ +Copyright (C) 2018 Alex James (TheRacerMaster). + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/NoTouchID.xcodeproj/project.pbxproj b/NoTouchID.xcodeproj/project.pbxproj new file mode 100755 index 0000000..655fd86 --- /dev/null +++ b/NoTouchID.xcodeproj/project.pbxproj @@ -0,0 +1,440 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 47; + objects = { + +/* Begin PBXBuildFile section */ + 1C748C2D1C21952C0024EED2 /* kern_start.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C748C2C1C21952C0024EED2 /* kern_start.cpp */; }; + CE405EC91E49DD9700AA0B3D /* libkmod.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE405EC71E49DD7100AA0B3D /* libkmod.a */; }; + CE405ED91E4A080700AA0B3D /* plugin_start.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE405ED81E4A080700AA0B3D /* plugin_start.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 1C642F521C8F157A006B4C51 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1C748C271C21952C0024EED2 /* NoTouchID.kext */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NoTouchID.kext; sourceTree = BUILT_PRODUCTS_DIR; }; + 1C748C2C1C21952C0024EED2 /* kern_start.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = kern_start.cpp; sourceTree = ""; }; + 1C748C2E1C21952C0024EED2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CE405EBA1E49DD7100AA0B3D /* kern_compression.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_compression.hpp; sourceTree = ""; }; + CE405EBB1E49DD7100AA0B3D /* kern_disasm.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_disasm.hpp; sourceTree = ""; }; + CE405EBC1E49DD7100AA0B3D /* kern_file.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_file.hpp; sourceTree = ""; }; + CE405EBD1E49DD7100AA0B3D /* kern_iokit.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_iokit.hpp; sourceTree = ""; }; + CE405EBE1E49DD7100AA0B3D /* kern_mach.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_mach.hpp; sourceTree = ""; }; + CE405EBF1E49DD7100AA0B3D /* kern_patcher.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_patcher.hpp; sourceTree = ""; }; + CE405EC01E49DD7100AA0B3D /* kern_policy.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_policy.hpp; sourceTree = ""; }; + CE405EC31E49DD7100AA0B3D /* kern_user.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_user.hpp; sourceTree = ""; }; + CE405EC41E49DD7100AA0B3D /* kern_util.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_util.hpp; sourceTree = ""; }; + CE405EC61E49DD7100AA0B3D /* LegacyIOService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegacyIOService.h; sourceTree = ""; }; + CE405EC71E49DD7100AA0B3D /* libkmod.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libkmod.a; sourceTree = ""; }; + CE405ECF1E49EC9100AA0B3D /* kern_config.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = kern_config.hpp; sourceTree = ""; usesTabs = 1; }; + CE405ED21E49F9FC00AA0B3D /* kern_api.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = kern_api.hpp; sourceTree = ""; }; + CE405ED81E4A080700AA0B3D /* plugin_start.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin_start.cpp; sourceTree = ""; }; + CE405EDA1E4A080F00AA0B3D /* plugin_start.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = plugin_start.hpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1C748C231C21952C0024EED2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CE405EC91E49DD9700AA0B3D /* libkmod.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1C748C1D1C21952C0024EED2 = { + isa = PBXGroup; + children = ( + CE405EC81E49DD7B00AA0B3D /* SDK */, + 1C748C291C21952C0024EED2 /* NoTouchID */, + 1C748C281C21952C0024EED2 /* Products */, + ); + sourceTree = ""; + }; + 1C748C281C21952C0024EED2 /* Products */ = { + isa = PBXGroup; + children = ( + 1C748C271C21952C0024EED2 /* NoTouchID.kext */, + ); + name = Products; + sourceTree = ""; + }; + 1C748C291C21952C0024EED2 /* NoTouchID */ = { + isa = PBXGroup; + children = ( + 83023F341F37461700850499 /* Sources */, + 83023F351F37463000850499 /* Supporting Files */, + ); + path = NoTouchID; + sourceTree = ""; + }; + 83023F341F37461700850499 /* Sources */ = { + isa = PBXGroup; + children = ( + 1C748C2C1C21952C0024EED2 /* kern_start.cpp */, + ); + name = Sources; + sourceTree = ""; + }; + 83023F351F37463000850499 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1C748C2E1C21952C0024EED2 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + CE405EB91E49DD7100AA0B3D /* Headers */ = { + isa = PBXGroup; + children = ( + CE405ED21E49F9FC00AA0B3D /* kern_api.hpp */, + CE405ECF1E49EC9100AA0B3D /* kern_config.hpp */, + CE405EBA1E49DD7100AA0B3D /* kern_compression.hpp */, + CE405EBB1E49DD7100AA0B3D /* kern_disasm.hpp */, + CE405EBC1E49DD7100AA0B3D /* kern_file.hpp */, + CE405EBD1E49DD7100AA0B3D /* kern_iokit.hpp */, + CE405EBE1E49DD7100AA0B3D /* kern_mach.hpp */, + CE405EBF1E49DD7100AA0B3D /* kern_patcher.hpp */, + CE405EC01E49DD7100AA0B3D /* kern_policy.hpp */, + CE405EC31E49DD7100AA0B3D /* kern_user.hpp */, + CE405EC41E49DD7100AA0B3D /* kern_util.hpp */, + CE405EDA1E4A080F00AA0B3D /* plugin_start.hpp */, + ); + name = Headers; + path = Lilu.kext/Contents/Resources/Headers; + sourceTree = SOURCE_ROOT; + }; + CE405EC51E49DD7100AA0B3D /* Library */ = { + isa = PBXGroup; + children = ( + CE405EC61E49DD7100AA0B3D /* LegacyIOService.h */, + CE405EC71E49DD7100AA0B3D /* libkmod.a */, + CE405ED81E4A080700AA0B3D /* plugin_start.cpp */, + ); + name = Library; + path = Lilu.kext/Contents/Resources/Library; + sourceTree = SOURCE_ROOT; + }; + CE405EC81E49DD7B00AA0B3D /* SDK */ = { + isa = PBXGroup; + children = ( + CE405EB91E49DD7100AA0B3D /* Headers */, + CE405EC51E49DD7100AA0B3D /* Library */, + ); + name = SDK; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 1C748C241C21952C0024EED2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 1C748C261C21952C0024EED2 /* NoTouchID */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1C748C311C21952C0024EED2 /* Build configuration list for PBXNativeTarget "NoTouchID" */; + buildPhases = ( + 1C748C221C21952C0024EED2 /* Sources */, + 1C748C231C21952C0024EED2 /* Frameworks */, + 1C748C241C21952C0024EED2 /* Headers */, + 1C642F521C8F157A006B4C51 /* CopyFiles */, + CE5356961FB9BD050051346D /* Archive */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NoTouchID; + productName = CPUFriend; + productReference = 1C748C271C21952C0024EED2 /* NoTouchID.kext */; + productType = "com.apple.product-type.kernel-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1C748C1E1C21952C0024EED2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0930; + ORGANIZATIONNAME = theracermaster; + TargetAttributes = { + 1C748C261C21952C0024EED2 = { + CreatedOnToolsVersion = 7.2; + }; + }; + }; + buildConfigurationList = 1C748C211C21952C0024EED2 /* Build configuration list for PBXProject "NoTouchID" */; + compatibilityVersion = "Xcode 6.3"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 1C748C1D1C21952C0024EED2; + productRefGroup = 1C748C281C21952C0024EED2 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1C748C261C21952C0024EED2 /* NoTouchID */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + CE5356961FB9BD050051346D /* Archive */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Archive; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "cd \"${TARGET_BUILD_DIR}\"\n\ndist=(\"$FULL_PRODUCT_NAME\")\nif [ -d \"$DWARF_DSYM_FILE_NAME\" ]; then dist+=(\"$DWARF_DSYM_FILE_NAME\"); fi\n\narchive=\"${MODULE_VERSION} ($(echo $CONFIGURATION | tr /a-z/ /A-Z/)).zip\"\nrm -rf *.zip\nif [ \"$CONFIGURATION\" == \"Release\" ]; then\n strip -x -T \"${EXECUTABLE_PATH}\" &>/dev/null || strip -x \"${EXECUTABLE_PATH}\"\nfi\nzip -qry \"${archive}\" \"${dist[@]}\""; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1C748C221C21952C0024EED2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE405ED91E4A080700AA0B3D /* plugin_start.cpp in Sources */, + 1C748C2D1C21952C0024EED2 /* kern_start.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1C748C2F1C21952C0024EED2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "c++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + 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_IMPLICIT_RETAIN_SELF = 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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = 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; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 1C748C301C21952C0024EED2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "c++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + 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_IMPLICIT_RETAIN_SELF = 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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = c11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_UNROLL_LOOPS = 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; + SDKROOT = macosx; + }; + name = Release; + }; + 1C748C321C21952C0024EED2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = "$(MODULE_VERSION)"; + DEPLOYMENT_POSTPROCESSING = YES; + GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS = NO; + GCC_ENABLE_KERNEL_DEVELOPMENT = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "MODULE_VERSION=$(MODULE_VERSION)", + "PRODUCT_NAME=$(PRODUCT_NAME)", + "$(inherited)", + ); + HEADER_SEARCH_PATHS = "${PROJECT_DIR}/Lilu.kext/Contents/Resources"; + INFOPLIST_FILE = "$(SRCROOT)/NoTouchID/Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Lilu.kext/Contents/Resources/Library", + ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + MODULE_NAME = xyz.racermaster.NoTouchID; + MODULE_START = "$(PRODUCT_NAME)_kern_start"; + MODULE_STOP = "$(PRODUCT_NAME)_kern_stop"; + MODULE_VERSION = 1.0.0; + OTHER_CFLAGS = ( + "-mmmx", + "-msse", + "-msse2", + "-msse3", + "-mfpmath=sse", + "-mssse3", + "-ftree-vectorize", + "-fno-non-call-exceptions", + "-fno-builtin", + "-fno-asynchronous-unwind-tables", + ); + OTHER_LDFLAGS = "-static"; + PRODUCT_BUNDLE_IDENTIFIER = xyz.racermaster.NoTouchID; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = kext; + }; + name = Debug; + }; + 1C748C331C21952C0024EED2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + CURRENT_PROJECT_VERSION = "$(MODULE_VERSION)"; + DEAD_CODE_STRIPPING = YES; + DEPLOYMENT_POSTPROCESSING = YES; + GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS = NO; + GCC_ENABLE_KERNEL_DEVELOPMENT = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PREPROCESSOR_DEFINITIONS = ( + "MODULE_VERSION=$(MODULE_VERSION)", + "PRODUCT_NAME=$(PRODUCT_NAME)", + ); + HEADER_SEARCH_PATHS = "${PROJECT_DIR}/Lilu.kext/Contents/Resources"; + INFOPLIST_FILE = "$(SRCROOT)/NoTouchID/Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Lilu.kext/Contents/Resources/Library", + ); + LLVM_LTO = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MODULE_NAME = xyz.racermaster.NoTouchID; + MODULE_START = "$(PRODUCT_NAME)_kern_start"; + MODULE_STOP = "$(PRODUCT_NAME)_kern_stop"; + MODULE_VERSION = 1.0.0; + OTHER_CFLAGS = ( + "-mmmx", + "-msse", + "-msse2", + "-msse3", + "-mfpmath=sse", + "-mssse3", + "-ftree-vectorize", + "-fno-non-call-exceptions", + "-fno-builtin", + "-fno-asynchronous-unwind-tables", + ); + OTHER_LDFLAGS = "-static"; + PRODUCT_BUNDLE_IDENTIFIER = xyz.racermaster.NoTouchID; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + WRAPPER_EXTENSION = kext; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1C748C211C21952C0024EED2 /* Build configuration list for PBXProject "NoTouchID" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1C748C2F1C21952C0024EED2 /* Debug */, + 1C748C301C21952C0024EED2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1C748C311C21952C0024EED2 /* Build configuration list for PBXNativeTarget "NoTouchID" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1C748C321C21952C0024EED2 /* Debug */, + 1C748C331C21952C0024EED2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1C748C1E1C21952C0024EED2 /* Project object */; +} diff --git a/NoTouchID.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/NoTouchID.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000..919434a --- /dev/null +++ b/NoTouchID.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/NoTouchID.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/NoTouchID.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/NoTouchID.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/NoTouchID/Info.plist b/NoTouchID/Info.plist new file mode 100644 index 0000000..b1b86f0 --- /dev/null +++ b/NoTouchID/Info.plist @@ -0,0 +1,59 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + KEXT + CFBundleShortVersionString + $(MODULE_VERSION) + CFBundleVersion + $(MODULE_VERSION) + IOKitPersonalities + + NoTouchID + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + IOClass + $(PRODUCT_NAME:rfc1034identifier) + IOMatchCategory + $(PRODUCT_NAME:rfc1034identifier) + IOProviderClass + IOResources + IOResourceMatch + IOKit + + + OSBundleCompatibleVersion + 1.0 + OSBundleLibraries + + as.vit9696.Lilu + 1.2.0 + com.apple.kpi.bsd + 12.0.0 + com.apple.kpi.dsep + 12.0.0 + com.apple.kpi.iokit + 12.0.0 + com.apple.kpi.libkern + 12.0.0 + com.apple.kpi.mach + 12.0.0 + com.apple.kpi.unsupported + 12.0.0 + + OSBundleRequired + Root + + diff --git a/NoTouchID/kern_start.cpp b/NoTouchID/kern_start.cpp new file mode 100644 index 0000000..9d6a1cb --- /dev/null +++ b/NoTouchID/kern_start.cpp @@ -0,0 +1,73 @@ +// +// kern_start.cpp +// NoTouchID +// +// Copyright (C) 2018 Alex James (TheRacerMaster). All rights reserved. +// + +#include +#include +#include + +// Target framework +static const char *binPath = "/System/Library/PrivateFrameworks/BiometricKit.framework/Versions/A/BiometricKit"; + +// Accompanied processes +static const char *procList[] { + "/System/Library/Frameworks/LocalAuthentication.framework/Support/DaemonUtils.framework/Versions/A/DaemonUtils" +}; + +static const uint8_t find[] = "board-id"; +static const uint8_t repl[] = "board-ix"; + +static UserPatcher::BinaryModPatch patch { + CPU_TYPE_X86_64, + find, + repl, + strlen(reinterpret_cast(find)), + 0, + 1, + UserPatcher::FileSegment::SegmentTextCstring, + 1 +}; + +UserPatcher::BinaryModInfo ADDPR(binaryMod)[] { + { binPath, &patch, 1 } +}; + +const size_t ADDPR(binaryModSize) = 1; + +static UserPatcher::ProcInfo ADDPR(procInfo)[] { + { procList[0], static_cast(strlen(procList[0])), 1 } +}; + +const size_t ADDPR(procInfoSize) = 1; + +static void noBioStart() { + lilu.onProcLoad(ADDPR(procInfo), ADDPR(procInfoSize), nullptr, nullptr, ADDPR(binaryMod), ADDPR(binaryModSize)); +} + +static const char *bootargOff[] { + "-nobiooff" +}; + +static const char *bootargBeta[] { + "-nobiobeta" +}; + +PluginConfiguration ADDPR(config) { + xStringify(PRODUCT_NAME), + parseModuleVersion(xStringify(MODULE_VERSION)), + LiluAPI::AllowNormal, + bootargOff, + arrsize(bootargOff), + nullptr, + 0, + bootargBeta, + arrsize(bootargBeta), + KernelVersion::HighSierra, + KernelVersion::HighSierra, + []() { + noBioStart(); + } +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..79dc442 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# NoTouchID +[Lilu](https://github.com/vit9696/Lilu) plugin for disabling Touch ID checks. + +### Configuration + - Add `-nobiooff` to disable NoTouchID + - Add `-nobiobeta` to enable NoTouchID on unsupported OS versions (10.13 is + supported by default) + +### Downloads +Available on the [releases](https://github.com/al3xtjames/NoTouchID/releases) +page.