├── GuardApp ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── GuardApp.h │ ├── LZAntiHelp.m │ ├── LZAntiHelp.h │ ├── AntiInjection.h │ ├── AntiDebug.h │ └── AntiNetWork.h ├── _Pods.xcodeproj ├── Example ├── Tests │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── Tests-Prefix.pch │ ├── Tests-Info.plist │ └── Tests.m ├── GuardApp │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── GuardApp_Example-Bridging-Header.h │ ├── LZViewController.h │ ├── LZAppDelegate.h │ ├── GuardApp-Prefix.pch │ ├── main.m │ ├── AntiForSwift.swift │ ├── AeonLucid.h │ ├── LZAppDelegate.m │ ├── GuardApp-Info.plist │ ├── LZViewController.m │ ├── MemHooks.h │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── AeonLucid.m │ └── MemHooks.m ├── libcycript.dylib ├── Dobby.framework │ ├── Dobby │ ├── Info.plist │ └── Headers │ │ └── dobby.h ├── Podfile ├── Pods │ ├── Target Support Files │ │ ├── GuardApp │ │ │ ├── GuardApp.modulemap │ │ │ ├── GuardApp-dummy.m │ │ │ ├── GuardApp-prefix.pch │ │ │ ├── GuardApp-umbrella.h │ │ │ ├── GuardApp.debug.xcconfig │ │ │ ├── GuardApp.release.xcconfig │ │ │ └── GuardApp-Info.plist │ │ └── Pods-GuardApp_Example │ │ │ ├── Pods-GuardApp_Example.modulemap │ │ │ ├── Pods-GuardApp_Example-dummy.m │ │ │ ├── Pods-GuardApp_Example-umbrella.h │ │ │ ├── Pods-GuardApp_Example.debug.xcconfig │ │ │ ├── Pods-GuardApp_Example.release.xcconfig │ │ │ ├── Pods-GuardApp_Example-Info.plist │ │ │ ├── Pods-GuardApp_Example-acknowledgements.markdown │ │ │ ├── Pods-GuardApp_Example-acknowledgements.plist │ │ │ └── Pods-GuardApp_Example-frameworks.sh │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── GuardApp.podspec.json │ └── Pods.xcodeproj │ │ └── project.pbxproj ├── GuardApp.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── GuardApp-Example.xcscheme │ └── project.pbxproj ├── GuardApp.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── Podfile.lock ├── .travis.yml ├── README.md ├── .gitignore ├── LICENSE └── GuardApp.podspec /GuardApp/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /GuardApp/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Example/Tests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/GuardApp/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/libcycript.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LZRight123/GuardApp/HEAD/Example/libcycript.dylib -------------------------------------------------------------------------------- /Example/Dobby.framework/Dobby: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LZRight123/GuardApp/HEAD/Example/Dobby.framework/Dobby -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | platform :ios, '9.0' 4 | 5 | target 'GuardApp_Example' do 6 | pod 'GuardApp', :path => '../' 7 | 8 | 9 | end 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp.modulemap: -------------------------------------------------------------------------------- 1 | framework module GuardApp { 2 | umbrella header "GuardApp-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Prefix.pch: -------------------------------------------------------------------------------- 1 | // The contents of this file are implicitly included at the beginning of every test case source file. 2 | 3 | #ifdef __OBJC__ 4 | 5 | 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_GuardApp : NSObject 3 | @end 4 | @implementation PodsDummy_GuardApp 5 | @end 6 | -------------------------------------------------------------------------------- /Example/GuardApp/GuardApp_Example-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_GuardApp_Example { 2 | umbrella header "Pods-GuardApp_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/GuardApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_GuardApp_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_GuardApp_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/GuardApp/LZViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LZViewController.h 3 | // GuardApp 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface LZViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /GuardApp/Classes/GuardApp.h: -------------------------------------------------------------------------------- 1 | // 2 | // GuardApp.h 3 | // GuardApp 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // 7 | 8 | #ifndef GuardApp_h 9 | #define GuardApp_h 10 | 11 | #import "AntiDebug.h" 12 | #import "AntiNetWork.h" 13 | #import "AntiInjection.h" 14 | 15 | 16 | #endif /* GuardApp_h */ 17 | 18 | 19 | -------------------------------------------------------------------------------- /Example/GuardApp.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/GuardApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - GuardApp (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - GuardApp (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | GuardApp: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | GuardApp: 3a879634b184a24da8b30117ec7113200c302eae 13 | 14 | PODFILE CHECKSUM: e5557f2cbc0fbec732211b0caa0fa6dd723dda1a 15 | 16 | COCOAPODS: 1.10.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - GuardApp (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - GuardApp (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | GuardApp: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | GuardApp: 3a879634b184a24da8b30117ec7113200c302eae 13 | 14 | PODFILE CHECKSUM: e5557f2cbc0fbec732211b0caa0fa6dd723dda1a 15 | 16 | COCOAPODS: 1.10.1 17 | -------------------------------------------------------------------------------- /Example/GuardApp/LZAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LZAppDelegate.h 3 | // GuardApp 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | @interface LZAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Example/GuardApp/GuardApp-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #import 8 | 9 | #ifndef __IPHONE_5_0 10 | #warning "This project uses features only available in iOS SDK 5.0 and later." 11 | #endif 12 | 13 | #ifdef __OBJC__ 14 | @import UIKit; 15 | @import Foundation; 16 | #endif 17 | -------------------------------------------------------------------------------- /Example/GuardApp/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GuardApp 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | #include 11 | #import "LZAppDelegate.h" 12 | 13 | int main(int argc, char * argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LZAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /GuardApp/Classes/LZAntiHelp.m: -------------------------------------------------------------------------------- 1 | // 2 | // LZAntiHelp.m 3 | // GuardApp 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // 7 | 8 | #import "LZAntiHelp.h" 9 | 10 | @implementation LZAntiHelp 11 | + (instancetype)share { 12 | static LZAntiHelp *_sharedManager = nil; 13 | static dispatch_once_t onceToken; 14 | dispatch_once(&onceToken, ^{ 15 | _sharedManager = [[self alloc] init]; 16 | }); 17 | 18 | return _sharedManager; 19 | } 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_GuardApp_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_GuardApp_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "AntiDebug.h" 14 | #import "AntiInjection.h" 15 | #import "AntiNetWork.h" 16 | #import "GuardApp.h" 17 | #import "LZAntiHelp.h" 18 | 19 | FOUNDATION_EXPORT double GuardAppVersionNumber; 20 | FOUNDATION_EXPORT const unsigned char GuardAppVersionString[]; 21 | 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/GuardApp.xcworkspace -scheme GuardApp-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/GuardApp.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GuardApp", 3 | "version": "0.1.0", 4 | "summary": "安全防护.", 5 | "description": "反调试,反网络中间人攻击,反注入等...", 6 | "homepage": "https://github.com/LZRight123/GuardApp", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "350442340@qq.com": "350442340@qq.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/LZRight123/GuardApp.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "9.0" 20 | }, 21 | "source_files": "GuardApp/Classes/**/*.{h,m}" 22 | } 23 | -------------------------------------------------------------------------------- /Example/GuardApp/AntiForSwift.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AntiForSwift.swift 3 | // AntiDebug_Example 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // Copyright © 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class SwAnitDebug: NSObject { 12 | @objc static func start() { 13 | // lz_anti_injected_start() 14 | // lz_syscall(); 15 | // lz_anti_net_start(); 16 | 17 | // lz_anti_start() 18 | // lz_ptrace() 19 | // lz_dlhandle() 20 | // lz_anti_debug_for_sysctl() 21 | // lz_syscall() 22 | // lz_asm_pt() 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GuardApp 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GuardApp 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Tests/Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Tests.m: -------------------------------------------------------------------------------- 1 | // 2 | // GuardAppTests.m 3 | // GuardAppTests 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | @import XCTest; 10 | 11 | @interface Tests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation Tests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | // Put setup code here. This method is called before the invocation of each test method in the class. 21 | } 22 | 23 | - (void)tearDown 24 | { 25 | // Put teardown code here. This method is called after the invocation of each test method in the class. 26 | [super tearDown]; 27 | } 28 | 29 | - (void)testExample 30 | { 31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 32 | } 33 | 34 | @end 35 | 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GuardApp 2 | ### 持续更新中.... 3 | 4 | ## Installation 5 | 6 | AntiDebug is available through [CocoaPods](https://cocoapods.org). To install 7 | it, simply add the following line to your Podfile: 8 | 9 | ```ruby 10 | pod 'GuardApp', :git => "https://github.com/LZRight123/GuardApp.git" 11 | ``` 12 | 13 | ## 反调试 14 | 15 | ```oc 16 | lz_anti_debug_start() 17 | ``` 18 | 内部调用了`lz_ptrace`,`lz_dlhandle`,`lz_anti_debug_for_sysctl`,`lz_asm_pt`,`lz_anti_debug_isatty`,`lz_anti_debug_get_prots` 19 | 20 | ## 反代理,反网络抓包 21 | 22 | ```oc 23 | lz_anti_net_start(); 24 | ``` 25 | 26 | ## 反注入 27 | - 调试阶段 28 | ```oc 29 | lz_anti_injected_start(); 30 | ``` 31 | 32 | ## Author 33 | 34 | 350442340@qq.com, 350442340@qq.com 35 | 36 | ## License 37 | 38 | AntiDebug is available under the MIT license. See the LICENSE file for more info. 39 | -------------------------------------------------------------------------------- /Example/Dobby.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | Dobby 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.dobby.dobby 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 21 | CFBundleShortVersionString 22 | 23 | CSResourcesFileMapped 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GuardApp" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GuardApp/GuardApp.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "GuardApp" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GuardApp" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GuardApp/GuardApp.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "GuardApp" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 10 | PODS_ROOT = ${SRCROOT}/Pods 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/GuardApp/GuardApp-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /GuardApp/Classes/LZAntiHelp.h: -------------------------------------------------------------------------------- 1 | // 2 | // LZAntiHelp.h 3 | // GuardApp 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // 7 | 8 | #import 9 | #define antiDebugTimer xcodebl 10 | #define antiNetworkTimer xcodebuild_cc 11 | #define antiInjectionTimer xcodebuild_inj 12 | 13 | 14 | @interface LZAntiHelp : NSObject 15 | @property (nonatomic) dispatch_source_t antiDebugTimer; 16 | @property (nonatomic) dispatch_source_t antiNetworkTimer; 17 | @property (nonatomic) dispatch_source_t antiInjectionTimer; 18 | 19 | + (instancetype)share; 20 | @end 21 | 22 | 23 | /// 退出程序 24 | static __attribute__((always_inline)) void lz_asm_exit() { 25 | #ifdef __arm64__ 26 | __asm__("mov X0, #0\n" 27 | "mov w16, #1\n" 28 | "svc #0x80\n" 29 | 30 | "mov x1, #0\n" 31 | "mov sp, x1\n" 32 | "mov x29, x1\n" 33 | "mov x30, x1\n" 34 | "ret"); 35 | #endif 36 | abort(); 37 | exit(-1); 38 | } 39 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/GuardApp/AeonLucid.h: -------------------------------------------------------------------------------- 1 | // 2 | // AeonLucid.h 3 | // GuardApp_Example 4 | // 5 | // Created by 梁泽 on 2021/4/1. 6 | // Copyright © 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | typedef void (*mshookmemory_t)(void *target, const void *data, size_t size); 12 | void scan_executable_memory_with_image_index(const uint8_t *target, const uint32_t target_len, void (*callback)(uint8_t *), uint32_t image_index); 13 | void scan_executable_memory(const uint8_t *target, const uint32_t target_len, void (*callback)(uint8_t *)); 14 | uint8_t *find_start_of_function(const uint8_t *target); 15 | void scan_executable_memory_with_mask(const uint64_t *target, const uint64_t *mask, const uint32_t target_len, void (*callback)(uint8_t *)); 16 | bool hook_memory(void *target, const void *data, size_t size); 17 | bool hasASLR(); 18 | uintptr_t get_slide(); 19 | uintptr_t calculateAddress(uintptr_t offset); 20 | bool getType(unsigned int data); 21 | //bool writeData(uintptr_t offset, unsigned int data); 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 350442340@qq.com <350442340@qq.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## GuardApp 5 | 6 | Copyright (c) 2021 350442340@qq.com <350442340@qq.com> 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /GuardApp.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint GuardApp.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'GuardApp' 11 | s.version = '0.1.0' 12 | s.summary = '安全防护.' 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = <<-DESC 21 | 反调试,反网络中间人攻击,反注入等... 22 | DESC 23 | 24 | s.homepage = 'https://github.com/LZRight123/GuardApp' 25 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 26 | s.license = { :type => 'MIT', :file => 'LICENSE' } 27 | s.author = { '350442340@qq.com' => '350442340@qq.com' } 28 | s.source = { :git => 'https://github.com/LZRight123/GuardApp.git', :tag => s.version.to_s } 29 | # s.social_media_url = 'https://twitter.com/' 30 | 31 | s.ios.deployment_target = '9.0' 32 | 33 | s.source_files = 'GuardApp/Classes/**/*.{h,m}' 34 | 35 | # s.resource_bundles = { 36 | # 'GuardApp' => ['GuardApp/Assets/*.png'] 37 | # } 38 | 39 | # s.public_header_files = 'Pod/Classes/**/*.h' 40 | # s.frameworks = 'UIKit', 'MapKit' 41 | # s.dependency 'AFNetworking', '~> 2.3' 42 | end 43 | -------------------------------------------------------------------------------- /Example/GuardApp/LZAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // LZAppDelegate.m 3 | // GuardApp 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LZAppDelegate.h" 10 | #import "GuardApp_Example-Swift.h" 11 | #import 12 | #include 13 | #import 14 | #import 15 | #import 16 | 17 | static int (*ptrace_ptr_t)(int _request,pid_t _pid, caddr_t _addr,int _data); 18 | int my_ptrace(int _request, pid_t _pid, caddr_t _addr, int _data){ 19 | if(_request != 31){ 20 | return ptrace_ptr_t(_request,_pid,_addr,_data); 21 | } 22 | 23 | 24 | return 0; 25 | } 26 | 27 | 28 | 29 | 30 | #import "MemHooks.h" 31 | #import "AeonLucid.h" 32 | 33 | // ====== PATCH CODE ====== // 34 | 35 | 36 | 37 | @implementation LZAppDelegate 38 | 39 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 40 | { 41 | 42 | lz_anti_debug_start(); 43 | lz_anti_net_start(); 44 | lz_anti_injected_start(); 45 | loadSVC80AccessMemHooks(); 46 | loadSVC80OpenMemHooks(); 47 | // loadSVC80FWMemHooks(); 48 | // DobbyHook(DobbySymbolResolver(NULL, "ptrace"), my_ptrace, &ptrace_ptr_t); 49 | // DobbyDestroy(ptrace_ptr_t); 50 | // lz_asm_exit(); 51 | dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, SIGSTOP, 0, dispatch_get_main_queue()); 52 | dispatch_source_set_event_handler(source, ^{ 53 | NSLog(@"SIGSTOP!!!"); 54 | }); 55 | dispatch_resume(source); 56 | 57 | 58 | // lz_anti_debug_start(); 59 | 60 | 61 | 62 | return YES; 63 | } 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Example/GuardApp/GuardApp-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Example/GuardApp/LZViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // LZViewController.m 3 | // GuardApp 4 | // 5 | // Created by 350442340@qq.com on 03/28/2021. 6 | // Copyright (c) 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | #import "LZViewController.h" 10 | //#include 11 | #import 12 | #import 13 | @interface LZViewController () 14 | 15 | @end 16 | 17 | 18 | #pragma mark - 19 | #pragma mark -NSLogc 20 | static void (*orig_NSLog)(NSString *, ...); 21 | static void my_NSLog(NSString *format, ...){ 22 | va_list args; 23 | if(format) { 24 | va_start(args, format); 25 | NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; 26 | orig_NSLog(@"我的输出:%@", message); 27 | va_end(args); 28 | } 29 | } 30 | 31 | int sum(int a,int b){ 32 | return a + b; 33 | } 34 | 35 | static int(*sum_p)(int a,int b); 36 | //新函数 37 | int mySum(int a,int b){ 38 | NSLog(@"原有的结果是:%d",sum_p(a,b)); 39 | return a - b; 40 | } 41 | 42 | 43 | 44 | 45 | @implementation LZViewController 46 | +(void)load 47 | { 48 | //Hook sum 49 | } 50 | 51 | - (void)viewDidLoad 52 | { 53 | [super viewDidLoad]; 54 | // NSLog(@"打印出:%d",sum(10, 20)); 55 | 56 | // DobbyHook(sum, mySum, (void *)&sum_p); 57 | // DobbyHook(NSLog, my_NSLog, (void *)&orig_NSLog); 58 | 59 | 60 | // Do any additional setup after loading the view, typically from a nib. 61 | } 62 | 63 | - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 64 | // if (!ioctl(1, TIOCGWINSZ)) { 65 | // NSLog(@"Being Debugged ioctl"); 66 | // } else { 67 | // NSLog(@"ioctl bypassed"); 68 | // } 69 | sum(10, 20); 70 | NSLog(@"打印出:%d",sum(10, 20)); 71 | 72 | 73 | } 74 | 75 | 76 | 77 | 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /Example/GuardApp/MemHooks.h: -------------------------------------------------------------------------------- 1 | // 2 | // MemHooks.h 3 | // GuardApp_Example 4 | // 5 | // Created by 梁泽 on 2021/4/1. 6 | // Copyright © 2021 350442340@qq.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | void loadFJMemoryHooks(); 12 | void loadFJMemoryRunTimeHooks(); 13 | void loadFJMemoryIntegrityRecover(); 14 | void loadFJMemorySymbolHooks(); 15 | void loadSVC80MemHooks(); 16 | void loadSVC80OpenMemHooks(); 17 | void loadSVC80AccessMemHooks(); 18 | void loadSVC80ExitMemHooks(); 19 | void loadOpendirMemHooks(); 20 | void loadSVC80FWMemHooks(); 21 | void startHookTarget_lxShield(uint8_t* match); 22 | void startHookTarget_AhnLab(uint8_t* match); 23 | void startHookTarget_AhnLab2(uint8_t* match); 24 | void startHookTarget_AhnLab3(uint8_t* match); 25 | void startHookTarget_AhnLab4(uint8_t* match); 26 | void startHookTarget_AhnLab5(uint8_t* match); 27 | void startHookTarget_AppSolid(uint8_t* match); 28 | void startPatchTarget_SYSAccess(uint8_t* match); 29 | void startPatchTarget_SYSAccessNOP(uint8_t* match); 30 | void startPatchTarget_SYSOpen(uint8_t* match); 31 | void startPatchTarget_KJBank(uint8_t* match); 32 | void startPatchTarget_KJBank2(uint8_t* match); 33 | void startPatchTarget_nProtect(uint8_t* match); 34 | void startPatchTarget_nProtect2(uint8_t* match); 35 | void startPatchTarget_MiniStock(uint8_t* match); 36 | void startPatchTarget_ixGuard(uint8_t* match); 37 | void startPatchTarget_HanaBank(uint8_t* match); 38 | void startPatchTarget_Yoti(uint8_t* match); 39 | void startPatchTarget_SaidaBank(uint8_t* match); 40 | void startHookTarget_ixShield(uint8_t* match); 41 | void startHookTarget_ixShield2(uint8_t* match); 42 | void startPatchTarget_MyGenesis(uint8_t* match); 43 | void setTossPatched(bool isPatched); 44 | bool isTossPatched(); 45 | 46 | @interface MemHooks: NSObject 47 | - (NSDictionary *)getFJMemory; 48 | @end 49 | -------------------------------------------------------------------------------- /Example/GuardApp/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Example/GuardApp/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Example/GuardApp/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /GuardApp/Classes/AntiInjection.h: -------------------------------------------------------------------------------- 1 | // 2 | // AntiInjection.h 3 | // GuardApp 4 | // 5 | // Created by 梁泽 on 2021/3/29. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | static __attribute__((always_inline)) void lz_anti_injected1() { 12 | int count = _dyld_image_count(); 13 | if (count > 0) { 14 | for (int i = 0; i < count; i++) {//遍历所有的image_name。判断是否有DynamicLibraries 15 | const char * dyld = _dyld_get_image_name(i); 16 | if (strstr(dyld, "DynamicLibraries")) { 17 | NSLog(@"lz_anti_Injected1"); 18 | return ; 19 | } 20 | } 21 | } 22 | } 23 | 24 | static __attribute__((always_inline)) void lz_anti_injected2() { 25 | int count = _dyld_image_count(); 26 | if (count > 0) { 27 | for (int i = 0; i < count; i++) {//遍历所有的image_name。判断是否有DynamicLibraries 28 | const char * dyld = _dyld_get_image_name(i); 29 | if (strstr(dyld, "/private/var/containers/Bundle/Application") && strstr(dyld, ".app") && strstr(dyld, ".dylib")) { 30 | NSLog(@"lz_anti_Injected2 === 命中"); 31 | return ; 32 | } 33 | } 34 | } 35 | } 36 | 37 | /// 检测环境变量是否有DYLD_INSERT_LIBRARIES 38 | static __attribute__((always_inline)) void lz_anti_injected3() { 39 | char* env = getenv("DYLD_INSERT_LIBRARIES"); 40 | printf("lz_anti_injected2 env = %s", env); 41 | if(env){ 42 | NSLog(@"lz_anti_Injected3"); 43 | return; 44 | } 45 | } 46 | 47 | static __attribute__((always_inline)) void lz_anti_injected_start() { 48 | 49 | @try { 50 | if (LZAntiHelp.share.antiInjectionTimer == nil) { 51 | LZAntiHelp.share.antiInjectionTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); 52 | } 53 | 54 | dispatch_source_t timer = LZAntiHelp.share.antiInjectionTimer; 55 | dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC); 56 | dispatch_source_set_event_handler(timer, ^{ 57 | lz_anti_injected1(); 58 | lz_anti_injected2(); 59 | lz_anti_injected3(); 60 | }); 61 | 62 | dispatch_resume(timer); 63 | 64 | } @catch (NSException *exception) { 65 | 66 | } @finally { 67 | 68 | } 69 | 70 | } 71 | 72 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2021 350442340@qq.com <350442340@qq.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | GuardApp 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/GuardApp.xcodeproj/xcshareddata/xcschemes/GuardApp-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 42 | 48 | 49 | 50 | 51 | 52 | 62 | 64 | 70 | 71 | 72 | 73 | 79 | 81 | 87 | 88 | 89 | 90 | 92 | 93 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /Example/Dobby.framework/Headers/dobby.h: -------------------------------------------------------------------------------- 1 | #ifndef dobby_h 2 | #define dobby_h 3 | 4 | // obfuscated interface 5 | #if 0 6 | #define DobbyBuildVersion c343f74888dffad84d9ad08d9c433456 7 | #define DobbyHook c8dc3ffa44f22dbd10ccae213dd8b1f8 8 | #define DobbyInstrument b71e27bca2c362de90c1034f19d839f9 9 | #endif 10 | 11 | #ifdef __cplusplus 12 | extern "C" { 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | typedef enum { 19 | kMemoryOperationSuccess, 20 | kMemoryOperationError, 21 | kNotSupportAllocateExecutableMemory, 22 | kNotEnough, 23 | kNone 24 | } MemoryOperationError; 25 | 26 | #define PLATFORM_INTERFACE_CODE_PATCH_TOOL_H 27 | MemoryOperationError CodePatch(void *address, uint8_t *buffer, uint32_t buffer_size); 28 | 29 | typedef uintptr_t addr_t; 30 | typedef uint32_t addr32_t; 31 | typedef uint64_t addr64_t; 32 | 33 | #if defined(__arm64__) || defined(__aarch64__) 34 | 35 | #define ARM64_TMP_REG_NDX_0 17 36 | 37 | // float register 38 | typedef union _FPReg { 39 | __int128_t q; 40 | struct { 41 | double d1; 42 | double d2; 43 | } d; 44 | struct { 45 | float f1; 46 | float f2; 47 | float f3; 48 | float f4; 49 | } f; 50 | } FPReg; 51 | 52 | // register context 53 | typedef struct _RegisterContext { 54 | uint64_t dmmpy_0; // dummy placeholder 55 | uint64_t sp; 56 | 57 | uint64_t dmmpy_1; // dummy placeholder 58 | union { 59 | uint64_t x[29]; 60 | struct { 61 | uint64_t x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, 62 | x23, x24, x25, x26, x27, x28; 63 | } regs; 64 | } general; 65 | 66 | uint64_t fp; 67 | uint64_t lr; 68 | 69 | union { 70 | FPReg q[32]; 71 | struct { 72 | FPReg q0, q1, q2, q3, q4, q5, q6, q7; 73 | // [!!! READ ME !!!] 74 | // for Arm64, can't access q8 - q31, unless you enable full floating-point register pack 75 | FPReg q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21, q22, q23, q24, q25, q26, q27, q28, q29, 76 | q30, q31; 77 | } regs; 78 | } floating; 79 | } RegisterContext; 80 | #elif defined(__arm__) 81 | typedef struct _RegisterContext { 82 | uint32_t dummy_0; 83 | uint32_t dummy_1; 84 | 85 | uint32_t dummy_2; 86 | uint32_t sp; 87 | 88 | union { 89 | uint32_t r[13]; 90 | struct { 91 | uint32_t r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12; 92 | } regs; 93 | } general; 94 | 95 | uint32_t lr; 96 | } RegisterContext; 97 | #elif defined(_M_IX86) || defined(__i386__) 98 | typedef struct _RegisterContext { 99 | uint32_t dummy_0; 100 | uint32_t esp; 101 | 102 | uint32_t dummy_1; 103 | uint32_t flags; 104 | 105 | union { 106 | struct { 107 | uint32_t eax, ebx, ecx, edx, ebp, esp, edi, esi; 108 | } regs; 109 | } general; 110 | 111 | } RegisterContext; 112 | #elif defined(_M_X64) || defined(__x86_64__) 113 | typedef struct _RegisterContext { 114 | uint64_t dummy_0; 115 | uint64_t rsp; 116 | 117 | union { 118 | struct { 119 | uint64_t rax, rbx, rcx, rdx, rbp, rsp, rdi, rsi, r8, r9, r10, r11, r12, r13, r14, r15; 120 | } regs; 121 | } general; 122 | 123 | uint64_t dummy_1; 124 | uint64_t flags; 125 | } RegisterContext; 126 | #endif 127 | 128 | #define RT_FAILED -1 129 | #define RT_SUCCESS 0 130 | typedef enum _RetStatus { RS_FAILED = -1, RS_SUCCESS = 0 } RetStatus; 131 | 132 | typedef struct _HookEntryInfo { 133 | int hook_id; 134 | union { 135 | void *target_address; 136 | void *function_address; 137 | void *instruction_address; 138 | }; 139 | } HookEntryInfo; 140 | 141 | // DobbyWrap <==> DobbyInstrument, so use DobbyInstrument instead of DobbyWrap 142 | #if 0 143 | // wrap function with pre_call and post_call 144 | typedef void (*PreCallTy)(RegisterContext *ctx, const HookEntryInfo *info); 145 | typedef void (*PostCallTy)(RegisterContext *ctx, const HookEntryInfo *info); 146 | int DobbyWrap(void *function_address, PreCallTy pre_call, PostCallTy post_call); 147 | #endif 148 | 149 | // return dobby build date 150 | const char *DobbyBuildVersion(); 151 | 152 | // replace function 153 | int DobbyHook(void *address, void *replace_call, void **origin_call); 154 | 155 | // dynamic binary instrument for instruction 156 | // [!!! READ ME !!!] 157 | // for Arm64, can't access q8 - q31, unless you enable full floating-point register pack 158 | typedef void (*DBICallTy)(RegisterContext *ctx, const HookEntryInfo *info); 159 | int DobbyInstrument(void *address, DBICallTy dbi_call); 160 | 161 | // destory and restore hook 162 | int DobbyDestroy(void *address); 163 | 164 | // iterate symbol table and find symbol 165 | void *DobbySymbolResolver(const char *image_name, const char *symbol_name); 166 | 167 | // global offset table 168 | int DobbyGlobalOffsetTableReplace(char *image_name, char *symbol_name, void *fake_func, void **orig_func); 169 | 170 | // [!!! READ ME !!!] 171 | // for arm, Arm64, dobby will use b xxx instead of ldr absolute indirect branch 172 | // for x64, dobby always use absolute indirect jump 173 | #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) || defined(_M_X64) || defined(__x86_64__) 174 | void dobby_enable_near_branch_trampoline(); 175 | void dobby_disable_near_branch_trampoline(); 176 | #endif 177 | 178 | // register linker load image callback 179 | typedef void (*linker_load_callback_t)(const char *image_name, void *handle); 180 | void dobby_register_image_load_callback(linker_load_callback_t func); 181 | 182 | #ifdef __cplusplus 183 | } 184 | #endif 185 | 186 | #endif 187 | -------------------------------------------------------------------------------- /GuardApp/Classes/AntiDebug.h: -------------------------------------------------------------------------------- 1 | // 2 | // AntiDebug.h 3 | // AntiDebug 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // 7 | 8 | #import "LZAntiHelp.h" 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | /// 直接pt 15 | static __attribute__((always_inline)) void lz_ptrace() { 16 | int ptrace(int _request, int _pid, char * _addr, int _data); 17 | ptrace(31, 0, 0, 0); 18 | } 19 | 20 | /// 间接pt 21 | static __attribute__((always_inline)) void lz_dlhandle() { 22 | typedef int (*ptrace_ptr_t)(int _request, int _pid, char * _addr, int _data); 23 | 24 | void *handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW); 25 | ptrace_ptr_t ptrace = (ptrace_ptr_t)dlsym(handle, "ptrace"); 26 | ptrace(31, 0, 0, 0); 27 | } 28 | 29 | /// syscall掉pt 30 | static __attribute__((always_inline)) void lz_syscall() { 31 | // https://www.theiphonewiki.com/wiki/Kernel_Syscalls 32 | syscall(26, 31, 0, 0, 0); 33 | } 34 | 35 | /// 汇编掉pt 36 | static __attribute__((always_inline)) void lz_asm_pt() { 37 | __asm( 38 | "mov x0,#31\n" 39 | "mov x1,#0\n" 40 | "mov x2,#0\n" 41 | "mov x3,#0\n" 42 | "mov w16,#26\n" //26是ptrace 43 | "svc #0x80" //0x80触发中断去找w16执行 44 | ); 45 | } 46 | 47 | 48 | //static int lz_get_pid() { 49 | // int err = 0; 50 | // struct kinfo_proc *proc_list = NULL; 51 | // size_t length = 0; 52 | // static const int sysName[] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0}; 53 | // err = sysctl((int*)sysName, 4, proc_list, &length, NULL, 0); 54 | // if (!err) { 55 | // proc_list = malloc(length); 56 | // if (proc_list) { 57 | // err = sysctl((int*)sysName, 4, proc_list, &length, NULL, 0); 58 | // } 59 | // } 60 | // if (!err && proc_list) { 61 | // int proc_count = length / sizeof(struct kinfo_proc); 62 | // char buf[17]; 63 | // } 64 | // return 0; 65 | //} 66 | 67 | ///stysctl 68 | static __attribute__((always_inline)) BOOL lz_isDebuggingWithSysctl() { 69 | /** 70 | 需要检测进程信息的字段数组 71 | */ 72 | int name[4]; 73 | name[0] = CTL_KERN; 74 | name[1] = KERN_PROC; 75 | name[2] = KERN_PROC_PID; 76 | name[3] = getpid(); 77 | 78 | /** 79 | 查询进程信息结果的结构体 80 | */ 81 | struct kinfo_proc info; 82 | size_t info_size = sizeof(info); 83 | info.kp_proc.p_flag = 0; 84 | 85 | /*查询成功返回0*/ 86 | int error = sysctl(name, sizeof(name) / sizeof(*name), &info, &info_size, NULL, 0); 87 | if (error == -1) { 88 | NSLog(@"sysctl process check error ..."); 89 | return NO; 90 | } 91 | 92 | /*根据标记位检测调试状态*/ 93 | return ((info.kp_proc.p_flag & P_TRACED) != 0); 94 | } 95 | 96 | 97 | static __attribute__((always_inline)) void lz_anti_debug_for_sysctl() { 98 | if (lz_isDebuggingWithSysctl()) { 99 | // abort(); 100 | lz_asm_exit(); 101 | }else { 102 | // NSLog(@"正常"); 103 | } 104 | 105 | } 106 | 107 | static __attribute__((always_inline)) void lz_anti_debug_isatty() { 108 | if (isatty(1)) { 109 | lz_asm_exit(); 110 | } 111 | } 112 | 113 | /// 获取异常端口 114 | static __attribute__((always_inline)) void lz_anti_debug_get_prots() { 115 | struct ios_exception_info{ 116 | exception_mask_t masks[EXC_TYPES_COUNT]; 117 | mach_port_t ports[EXC_TYPES_COUNT]; 118 | exception_behavior_t behaviors[EXC_TYPES_COUNT]; 119 | thread_state_flavor_t flavors[EXC_TYPES_COUNT]; 120 | mach_msg_type_number_t cout; 121 | }; 122 | 123 | 124 | struct ios_exception_info *info = malloc(sizeof(struct ios_exception_info)); 125 | task_get_exception_ports(mach_task_self(), 126 | EXC_MASK_ALL, 127 | info->masks, 128 | &info->cout, 129 | info->ports, 130 | info->behaviors, 131 | info->flavors); 132 | 133 | for(uint32_t i = 0; i < info->cout; i ++){ 134 | if(info->ports[i] != 0 || info->flavors[i] == THREAD_STATE_NONE){ 135 | lz_asm_exit(); 136 | } else { 137 | 138 | } 139 | } 140 | } 141 | 142 | 143 | 144 | 145 | /// 开启 146 | static __attribute__((always_inline)) void lz_anti_debug_start() { 147 | 148 | @try { 149 | if (LZAntiHelp.share.antiDebugTimer == nil) { 150 | LZAntiHelp.share.antiDebugTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); 151 | } 152 | 153 | dispatch_source_t timer = LZAntiHelp.share.antiDebugTimer; 154 | dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC); 155 | dispatch_source_set_event_handler(timer, ^{ 156 | // lz_ptrace(); 157 | // lz_dlhandle(); 158 | // lz_syscall(); 159 | // lz_anti_debug_for_sysctl(); 160 | // lz_anti_debug_isatty(); 161 | // lz_asm_pt(); 162 | // lz_anti_debug_get_prots(); 163 | }); 164 | 165 | dispatch_resume(timer); 166 | 167 | } @catch (NSException *exception) { 168 | 169 | } @finally { 170 | 171 | } 172 | 173 | 174 | 175 | } 176 | 177 | 178 | static __attribute__((constructor)) void lz_anti_debug_entry() { 179 | // NSLog(@"lz_anti_debug_entry"); _dyld_debugger_notification 180 | } 181 | -------------------------------------------------------------------------------- /Example/GuardApp/AeonLucid.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | #import 6 | #import "AeonLucid.h" 7 | 8 | void scan_executable_memory_with_image_index(const uint8_t *target, const uint32_t target_len, void (*callback)(uint8_t *), uint32_t image_index) { 9 | const struct mach_header_64 *header = (const struct mach_header_64*) _dyld_get_image_header(image_index); 10 | const struct section_64 *executable_section = getsectbynamefromheader_64(header, "__TEXT", "__text"); 11 | 12 | uint8_t *start_address = (uint8_t *) ((intptr_t) header + executable_section->offset); 13 | uint8_t *end_address = (uint8_t *) (start_address + executable_section->size); 14 | 15 | uint8_t *current = start_address; 16 | uint32_t index = 0; 17 | 18 | uint8_t current_target = 0; 19 | 20 | while (current < end_address) { 21 | current_target = target[index]; 22 | 23 | // Allow 0xFF as wildcard. 24 | if (current_target == *current++ || current_target == 0xFF) { 25 | index++; 26 | } else { 27 | index = 0; 28 | } 29 | 30 | // Check if match. 31 | if (index == target_len) { 32 | index = 0; 33 | callback(current - target_len); 34 | } 35 | } 36 | } 37 | 38 | void scan_executable_memory(const uint8_t *target, const uint32_t target_len, void (*callback)(uint8_t *)) { 39 | const struct mach_header_64 *header = (const struct mach_header_64*) _dyld_get_image_header(0); 40 | const struct section_64 *executable_section = getsectbynamefromheader_64(header, "__TEXT", "__text"); 41 | 42 | uint8_t *start_address = (uint8_t *) ((intptr_t) header + executable_section->offset); 43 | uint8_t *end_address = (uint8_t *) (start_address + executable_section->size); 44 | 45 | uint8_t *current = start_address; 46 | uint32_t index = 0; 47 | 48 | uint8_t current_target = 0; 49 | 50 | while (current < end_address) { 51 | current_target = target[index]; 52 | 53 | // Allow 0xFF as wildcard. 54 | if (current_target == *current++ || current_target == 0xFF) { 55 | index++; 56 | } else { 57 | index = 0; 58 | } 59 | 60 | // Check if match. 61 | if (index == target_len) { 62 | index = 0; 63 | callback(current - target_len); 64 | } 65 | } 66 | } 67 | 68 | uint8_t *find_start_of_function(const uint8_t *target) { 69 | const struct mach_header_64 *header = (const struct mach_header_64*) _dyld_get_image_header(0); 70 | const struct section_64 *executable_section = getsectbynamefromheader_64(header, "__TEXT", "__text"); 71 | uint32_t *start = (uint32_t *) ((intptr_t) header + executable_section->offset); 72 | 73 | uint32_t *current = (uint32_t *)target; 74 | 75 | for (; current >= start; current--) { 76 | uint32_t op = *current; 77 | 78 | if ((op & 0xFFC003FF) == 0x910003FD) { //mov x29, sp 79 | unsigned delta = (op >> 10) & 0xFFF; 80 | // NSLog(@"%p: ADD X29, SP, #0x%x\n", ((uint8_t *)current-_dyld_get_image_vmaddr_slide(0)), delta); 81 | if ((delta & 0xF) == 0) { 82 | // NSLog(@"[FlyJB] %p: ADD X29, SP, #0x%x\n", ((uint8_t *)current-_dyld_get_image_vmaddr_slide(0)), delta); 83 | uint8_t *prev = (uint8_t *)current - ((delta >> 4) + 1) * 4; 84 | // NSLog(@"[FlyJB] prev: %p, *prev: %x", prev-_dyld_get_image_vmaddr_slide(0), *(uint32_t *)prev); 85 | if ((*(uint32_t *)prev & 0xFFC003E0) == 0xA98003E0 86 | || (*(uint32_t *)prev & 0xFFC003E0) == 0x6D8003E0) { //STP x, y, [SP,#-imm]! 87 | return prev; 88 | } 89 | } 90 | } 91 | } 92 | 93 | return (uint8_t *)target; 94 | } 95 | 96 | void scan_executable_memory_with_mask(const uint64_t *target, const uint64_t *mask, const uint32_t target_len, void (*callback)(uint8_t *)) { 97 | const struct mach_header_64 *header = (const struct mach_header_64*) _dyld_get_image_header(0); 98 | const struct section_64 *executable_section = getsectbynamefromheader_64(header, "__TEXT", "__text"); 99 | 100 | uint64_t *start_address = (uint64_t *) ((intptr_t) header + executable_section->offset); 101 | uint64_t *end_address = (uint64_t *) (start_address + executable_section->size); 102 | 103 | uint32_t *current = (uint32_t *)start_address; 104 | uint32_t index = 0; 105 | 106 | uint32_t current_target = 0; 107 | 108 | while (start_address < end_address) { 109 | current_target = target[index]; 110 | 111 | // NSLog(@"[FlyJB] current_target: %x, *current: %x, mask[index]: %llx", current_target, *current, mask[index]); 112 | if (current_target == (*current++ & mask[index])) { 113 | // NSLog(@"[FlyJB] index: %u, current_target: %x, *current: %x, mask[index]: %llx, target_len: %x", index, current_target, *current, mask[index], target_len); 114 | index++; 115 | } else { 116 | index = 0; 117 | } 118 | 119 | // Check if match. 120 | if (index == target_len) { 121 | index = 0; 122 | callback((uint8_t *)(current - target_len)); 123 | } 124 | 125 | start_address+=0x4; 126 | } 127 | } 128 | 129 | /* 130 | This Function checks if the Application has ASLR enabled. 131 | It gets the mach_header of the Image at Index 0. 132 | It then checks for the MH_PIE flag. If it is there, it returns TRUE. 133 | Parameters: nil 134 | Return: Wether it has ASLR or not 135 | */ 136 | 137 | bool hasASLR() 138 | { 139 | 140 | const struct mach_header *mach; 141 | 142 | mach = _dyld_get_image_header(0); 143 | 144 | if (mach->flags & MH_PIE) 145 | { 146 | 147 | //has aslr enabled 148 | return true; 149 | } 150 | else 151 | { 152 | 153 | //has aslr disabled 154 | return false; 155 | } 156 | } 157 | 158 | /* 159 | This Function gets the vmaddr slide of the Image at Index 0. 160 | Parameters: nil 161 | Return: the vmaddr slide 162 | */ 163 | 164 | uintptr_t get_slide() 165 | { 166 | return _dyld_get_image_vmaddr_slide(0); 167 | } 168 | 169 | /* 170 | This Function calculates the Address if ASLR is enabled or returns the normal offset. 171 | Parameters: The Original Offset 172 | Return: Either the Offset or the New calculated Offset if ASLR is enabled 173 | */ 174 | 175 | uintptr_t calculateAddress(uintptr_t offset) 176 | { 177 | 178 | if (hasASLR()) 179 | { 180 | 181 | uintptr_t slide = get_slide(); 182 | 183 | return (slide + offset); 184 | } 185 | else 186 | { 187 | 188 | return offset; 189 | } 190 | } 191 | /* 192 | This function calculates the size of the data passed as an argument. 193 | It returns 1 if 4 bytes and 0 if 2 bytes 194 | Parameters: data to be written 195 | Return: True = 4 bytes/higher or False = 2 bytes 196 | */ 197 | 198 | bool getType(unsigned int data) 199 | { 200 | int a = data & 0xffff8000; 201 | int b = a + 0x00008000; 202 | 203 | int c = b & 0xffff7fff; 204 | return c; 205 | } 206 | 207 | /* 208 | writeData(offset, data) writes the bytes of data to offset 209 | this version is crafted to take use of MSHookMemory as 210 | mach_vm functions are causing problems with codesigning on iOS 12. 211 | Hopefully this workaround is just temporary. 212 | */ 213 | 214 | -------------------------------------------------------------------------------- /GuardApp/Classes/AntiNetWork.h: -------------------------------------------------------------------------------- 1 | // 2 | // AntiNetWork.h 3 | // GuardApp 4 | // 5 | // Created by 梁泽 on 2021/3/28. 6 | // 7 | 8 | #import 9 | #import 10 | #import "LZAntiHelp.h" 11 | #import 12 | #import 13 | #import 14 | #import 15 | 16 | #define IOS_CELLULAR @"pdp_ip0" 17 | #define IOS_WIFI @"en0" 18 | #define IP_ADDR_IPv4 @"ipv4" 19 | #define IP_ADDR_IPv6 @"ipv6" 20 | 21 | 22 | /// 获取ip 23 | static __attribute__((always_inline)) NSDictionary * lz_anti_net_getip() { 24 | NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8]; 25 | 26 | // retrieve the current interfaces - returns 0 on success 27 | struct ifaddrs *interfaces; 28 | if(!getifaddrs(&interfaces)) { 29 | // Loop through linked list of interfaces 30 | struct ifaddrs *interface; 31 | for(interface=interfaces; interface; interface=interface->ifa_next) { 32 | if(!(interface->ifa_flags & IFF_UP) /* || (interface->ifa_flags & IFF_LOOPBACK) */ ) { 33 | continue; // deeply nested code harder to read 34 | } 35 | const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr; 36 | char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ]; 37 | if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) { 38 | NSString *name = [NSString stringWithUTF8String:interface->ifa_name]; 39 | NSString *type; 40 | if(addr->sin_family == AF_INET) { 41 | if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) { 42 | type = IP_ADDR_IPv4; 43 | } 44 | } else { 45 | const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr; 46 | if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) { 47 | type = IP_ADDR_IPv6; 48 | } 49 | } 50 | if(type) { 51 | NSString *key = [NSString stringWithFormat:@"%@/%@", name, type]; 52 | addresses[key] = [NSString stringWithUTF8String:addrBuf]; 53 | } 54 | } 55 | } 56 | // Free memory 57 | freeifaddrs(interfaces); 58 | } 59 | NSMutableDictionary *dic = @{}.mutableCopy; 60 | if([addresses.allKeys containsObject:IOS_WIFI @"/" IP_ADDR_IPv4]){ 61 | dic[IOS_WIFI @"/" IP_ADDR_IPv4] = addresses[IOS_WIFI @"/" IP_ADDR_IPv4]; 62 | } 63 | if([addresses.allKeys containsObject:IOS_WIFI @"/" IP_ADDR_IPv6]){ 64 | dic[IOS_WIFI @"/" IP_ADDR_IPv6] = addresses[IOS_WIFI @"/" IP_ADDR_IPv6]; 65 | } 66 | return dic; 67 | } 68 | 69 | 70 | /// CFNetworkCopyProxiesForURL 检车 71 | /* 72 | wifi: kCFProxyTypeKey = kCFProxyTypeNone; 73 | 74 | 75 | */ 76 | static __attribute__((always_inline)) void lz_anti_net1() { 77 | 78 | NSDictionary *proxySettings = CFBridgingRelease((__bridge CFTypeRef _Nullable)((__bridge NSDictionary *)CFNetworkCopySystemProxySettings())); 79 | NSArray *proxies = CFBridgingRelease((__bridge CFTypeRef _Nullable)((__bridge NSArray *)CFNetworkCopyProxiesForURL((__bridge CFURLRef)[NSURL URLWithString:@"http://www.google.com"], (__bridge CFDictionaryRef)proxySettings))); 80 | NSDictionary *settings = [proxies objectAtIndex:0]; 81 | NSLog(@"host=%@", [settings objectForKey:(NSString *)kCFProxyHostNameKey]); 82 | NSLog(@"port=%@", [settings objectForKey:(NSString *)kCFProxyPortNumberKey]); 83 | NSLog(@"type=%@", [settings objectForKey:(NSString *)kCFProxyTypeKey]); 84 | if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"]) 85 | { 86 | //没有设置代理 87 | } else { 88 | //设置代理了 89 | abort(); 90 | lz_asm_exit(); 91 | } 92 | 93 | } 94 | 95 | 96 | /// 97 | /* 98 | wifi: (null) 99 | { 100 | ExceptionsList = ( 101 | "*.local", 102 | "169.254/16" 103 | ); 104 | FTPPassive = 1; 105 | HTTPEnable = 1; 106 | HTTPPort = 8888; 107 | HTTPProxy = "192.168.50.161"; 108 | HTTPSEnable = 1; 109 | HTTPSPort = 8888; 110 | HTTPSProxy = "192.168.50.161"; 111 | "__SCOPED__" = { 112 | en0 = { 113 | ExceptionsList = ( 114 | "*.local", 115 | "169.254/16" 116 | ); 117 | FTPPassive = 1; 118 | HTTPEnable = 1; 119 | HTTPPort = 8888; 120 | HTTPProxy = "192.168.50.161"; 121 | HTTPSEnable = 1; 122 | HTTPSPort = 8888; 123 | HTTPSProxy = "192.168.50.161"; 124 | }; 125 | }; 126 | } 127 | 128 | */ 129 | static __attribute__((always_inline)) void lz_anti_net2() { 130 | CFDictionaryRef dicRef = CFNetworkCopySystemProxySettings(); 131 | NSDictionary *proxySettings = CFBridgingRelease((__bridge CFTypeRef _Nullable)((__bridge NSDictionary *)CFNetworkCopySystemProxySettings())); 132 | 133 | const CFStringRef proxyCFstr = (const CFStringRef)CFDictionaryGetValue(dicRef, 134 | (const void*)kCFNetworkProxiesHTTPProxy); 135 | NSString* proxy = (__bridge NSString *)proxyCFstr; 136 | if (proxy.length > 0 ) { 137 | // 有代理 138 | abort(); 139 | lz_asm_exit(); 140 | } 141 | 142 | } 143 | 144 | /* 145 | wifi: (null) 146 | 147 | 148 | */ 149 | //static __attribute__((always_inline)) void lz_anti_net3(){ 150 | // NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); 151 | // NSLog(@"Supported interfaces: %@", ifs); 152 | // id info = nil; 153 | // for (NSString *ifnam in ifs) { 154 | // info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam); 155 | // NSLog(@"%@ => %@", ifnam, info); 156 | // if (info && [info count]) { break; } 157 | // } 158 | //// NSLog(@"lz_anti_net3 == %@", info); 159 | //} 160 | 161 | 162 | static __attribute__((always_inline)) void lz_anti_net_start() { 163 | @try { 164 | if (LZAntiHelp.share.antiNetworkTimer == nil) { 165 | LZAntiHelp.share.antiNetworkTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); 166 | } 167 | 168 | dispatch_source_t timer = LZAntiHelp.share.antiNetworkTimer; 169 | dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 20.0 * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC); 170 | dispatch_source_set_event_handler(timer, ^{ 171 | lz_anti_net1(); 172 | lz_anti_net2(); 173 | }); 174 | dispatch_resume(timer); 175 | 176 | } @catch (NSException *exception) { 177 | 178 | } @finally { 179 | 180 | } 181 | 182 | } 183 | 184 | 185 | static __attribute__((constructor)) void lz_anti_network_entry() { 186 | // [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { 187 | // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 188 | // lz_anti_net_start(); 189 | // }); 190 | // }]; 191 | } 192 | 193 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | BCSYMBOLMAP_DIR="BCSymbolMaps" 23 | 24 | 25 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 26 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 27 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 28 | 29 | # Copies and strips a vendored framework 30 | install_framework() 31 | { 32 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 33 | local source="${BUILT_PRODUCTS_DIR}/$1" 34 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 35 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 36 | elif [ -r "$1" ]; then 37 | local source="$1" 38 | fi 39 | 40 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 41 | 42 | if [ -L "${source}" ]; then 43 | echo "Symlinked..." 44 | source="$(readlink "${source}")" 45 | fi 46 | 47 | if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then 48 | # Locate and install any .bcsymbolmaps if present, and remove them from the .framework before the framework is copied 49 | find "${source}/${BCSYMBOLMAP_DIR}" -name "*.bcsymbolmap"|while read f; do 50 | echo "Installing $f" 51 | install_bcsymbolmap "$f" "$destination" 52 | rm "$f" 53 | done 54 | rmdir "${source}/${BCSYMBOLMAP_DIR}" 55 | fi 56 | 57 | # Use filter instead of exclude so missing patterns don't throw errors. 58 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 59 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 60 | 61 | local basename 62 | basename="$(basename -s .framework "$1")" 63 | binary="${destination}/${basename}.framework/${basename}" 64 | 65 | if ! [ -r "$binary" ]; then 66 | binary="${destination}/${basename}" 67 | elif [ -L "${binary}" ]; then 68 | echo "Destination binary is symlinked..." 69 | dirname="$(dirname "${binary}")" 70 | binary="${dirname}/$(readlink "${binary}")" 71 | fi 72 | 73 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 74 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 75 | strip_invalid_archs "$binary" 76 | fi 77 | 78 | # Resign the code if required by the build settings to avoid unstable apps 79 | code_sign_if_enabled "${destination}/$(basename "$1")" 80 | 81 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 82 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 83 | local swift_runtime_libs 84 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 85 | for lib in $swift_runtime_libs; do 86 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 87 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 88 | code_sign_if_enabled "${destination}/${lib}" 89 | done 90 | fi 91 | } 92 | # Copies and strips a vendored dSYM 93 | install_dsym() { 94 | local source="$1" 95 | warn_missing_arch=${2:-true} 96 | if [ -r "$source" ]; then 97 | # Copy the dSYM into the targets temp dir. 98 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 99 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 100 | 101 | local basename 102 | basename="$(basename -s .dSYM "$source")" 103 | binary_name="$(ls "$source/Contents/Resources/DWARF")" 104 | binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" 105 | 106 | # Strip invalid architectures from the dSYM. 107 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 108 | strip_invalid_archs "$binary" "$warn_missing_arch" 109 | fi 110 | if [[ $STRIP_BINARY_RETVAL == 0 ]]; then 111 | # Move the stripped file into its final destination. 112 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 113 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 114 | else 115 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 116 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" 117 | fi 118 | fi 119 | } 120 | 121 | # Used as a return value for each invocation of `strip_invalid_archs` function. 122 | STRIP_BINARY_RETVAL=0 123 | 124 | # Strip invalid architectures 125 | strip_invalid_archs() { 126 | binary="$1" 127 | warn_missing_arch=${2:-true} 128 | # Get architectures for current target binary 129 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 130 | # Intersect them with the architectures we are building for 131 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 132 | # If there are no archs supported by this binary then warn the user 133 | if [[ -z "$intersected_archs" ]]; then 134 | if [[ "$warn_missing_arch" == "true" ]]; then 135 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 136 | fi 137 | STRIP_BINARY_RETVAL=1 138 | return 139 | fi 140 | stripped="" 141 | for arch in $binary_archs; do 142 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 143 | # Strip non-valid architectures in-place 144 | lipo -remove "$arch" -output "$binary" "$binary" 145 | stripped="$stripped $arch" 146 | fi 147 | done 148 | if [[ "$stripped" ]]; then 149 | echo "Stripped $binary of architectures:$stripped" 150 | fi 151 | STRIP_BINARY_RETVAL=0 152 | } 153 | 154 | # Copies the bcsymbolmap files of a vendored framework 155 | install_bcsymbolmap() { 156 | local bcsymbolmap_path="$1" 157 | local destination="${BUILT_PRODUCTS_DIR}" 158 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 159 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 160 | } 161 | 162 | # Signs a framework with the provided identity 163 | code_sign_if_enabled() { 164 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 165 | # Use the current code_sign_identity 166 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 167 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 168 | 169 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 170 | code_sign_cmd="$code_sign_cmd &" 171 | fi 172 | echo "$code_sign_cmd" 173 | eval "$code_sign_cmd" 174 | fi 175 | } 176 | 177 | if [[ "$CONFIGURATION" == "Debug" ]]; then 178 | install_framework "${BUILT_PRODUCTS_DIR}/GuardApp/GuardApp.framework" 179 | fi 180 | if [[ "$CONFIGURATION" == "Release" ]]; then 181 | install_framework "${BUILT_PRODUCTS_DIR}/GuardApp/GuardApp.framework" 182 | fi 183 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 184 | wait 185 | fi 186 | -------------------------------------------------------------------------------- /Example/GuardApp/MemHooks.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "MemHooks.h" 4 | #import "AeonLucid.h" 5 | #include 6 | #include 7 | #include 8 | 9 | @implementation MemHooks 10 | - (NSDictionary *)getFJMemory { 11 | NSData *FJMemory = [NSData dataWithContentsOfFile:@"/var/mobile/Library/Preferences/FJMemory" options:0 error:nil]; 12 | NSDictionary *DecryptedFJMemory = [NSJSONSerialization JSONObjectWithData:FJMemory options:0 error:nil]; 13 | return DecryptedFJMemory; 14 | } 15 | @end 16 | 17 | struct ix_detected_pattern { 18 | char resultCode[12]; 19 | char object[128]; 20 | char description[128]; 21 | }; 22 | 23 | struct ix_detected_pattern_list_gamehack { 24 | struct ix_detected_pattern *pattern; 25 | int listCount; 26 | }; 27 | 28 | uint8_t NOP[] = { 29 | 0x1F, 0x20, 0x03, 0xD5 //NOP 30 | }; 31 | 32 | uint8_t RET[] = { 33 | 0xC0, 0x03, 0x5F, 0xD6 //RET 34 | }; 35 | 36 | uint8_t RET0[] = { 37 | 0x00, 0x00, 0x80, 0xD2, //MOV X0, #0 38 | 0xC0, 0x03, 0x5F, 0xD6 //RET 39 | }; 40 | 41 | uint8_t RET1[] = { 42 | 0x20, 0x00, 0x80, 0xD2, //MOV X0, #1 43 | 0xC0, 0x03, 0x5F, 0xD6 //RET 44 | }; 45 | 46 | uint8_t MOV_X0_1[] = { 47 | 0x20, 0x00, 0x80, 0xD2 //MOV X0, #1 48 | }; 49 | 50 | uint8_t KJP[] = { 51 | 0x1F, 0x20, 0x03, 0xD5, //NOP 52 | 0x09, 0x00, 0x00, 0x14 //B #0x24 53 | }; 54 | 55 | uint8_t SYSOpenBlock[] = { 56 | 0xB0, 0x00, 0x80, 0xD2, //MOV X16, #5 57 | 0x00, 0x00, 0x80, 0x52 //MOV X0, #0 58 | }; 59 | 60 | uint8_t SYSAccessBlock[] = { 61 | 0xB0, 0x00, 0x80, 0xD2, //MOV X16, #21 62 | 0x40, 0x00, 0x80, 0x52 //MOV X0, #2 63 | }; 64 | 65 | uint8_t SYSAccessNOPBlock[] = { 66 | 0xB0, 0x00, 0x80, 0xD2, //MOV X16, #21 67 | 0x1F, 0x20, 0x03, 0xD5, //NOP 68 | 0x1F, 0x20, 0x03, 0xD5, //NOP 69 | 0x1F, 0x20, 0x03, 0xD5, //NOP 70 | 0x40, 0x00, 0x80, 0x52 //MOV X0, #2 71 | }; 72 | 73 | int (*orig_ix_sysCheckStart)(struct ix_detected_pattern **p_info); 74 | int hook_ix_sysCheckStart(struct ix_detected_pattern **p_info) 75 | { 76 | struct ix_detected_pattern *patternInfo = (struct ix_detected_pattern*)malloc(sizeof(struct ix_detected_pattern)); 77 | strcpy(patternInfo->resultCode, "0000"); 78 | strcpy(patternInfo->object, "SYSTEM_OK"); 79 | strcpy(patternInfo->description, "SYSTEM_OK"); 80 | *p_info = patternInfo; 81 | return 1; 82 | } 83 | 84 | int (*orig_ix_sysCheck_gamehack)(struct ix_detected_pattern **p_info, struct ix_detected_pattern_list_gamehack **p_list_gamehack); 85 | int hook_ix_sysCheck_gamehack(struct ix_detected_pattern **p_info, struct ix_detected_pattern_list_gamehack **p_list_gamehack) { 86 | struct ix_detected_pattern *patternInfo = (struct ix_detected_pattern*)malloc(sizeof(struct ix_detected_pattern)); 87 | struct ix_detected_pattern_list_gamehack *patternList = (struct ix_detected_pattern_list_gamehack*)malloc(sizeof(struct ix_detected_pattern_list_gamehack)); 88 | 89 | strcpy(patternInfo->resultCode, "0000"); 90 | strcpy(patternInfo->object, "SYSTEM_OK"); 91 | strcpy(patternInfo->description, "SYSTEM_OK"); 92 | patternList->listCount = 0; 93 | 94 | *p_info = patternInfo; 95 | *p_list_gamehack = patternList; 96 | 97 | return 1; 98 | } 99 | 100 | void (*orig_subroutine)(void); 101 | void nothing(void) 102 | { 103 | ; 104 | } 105 | 106 | int (*orig_int)(void); 107 | 108 | int ret_0(void) 109 | { 110 | return 0; 111 | } 112 | 113 | int ret_1(void) 114 | { 115 | return 1; 116 | } 117 | 118 | void startHookTarget_lxShield(uint8_t* match) { 119 | uint8_t *func = find_start_of_function(match); 120 | hook_memory(func, RET, sizeof(RET)); 121 | } 122 | 123 | void startHookTarget_AhnLab(uint8_t* match) { 124 | hook_memory(match, RET, sizeof(RET)); 125 | } 126 | 127 | void startHookTarget_AhnLab2(uint8_t* match) { 128 | hook_memory(match - 0x10, RET, sizeof(RET)); 129 | } 130 | 131 | void startHookTarget_AhnLab3(uint8_t* match) { 132 | hook_memory(match - 0x8, RET, sizeof(RET)); 133 | } 134 | 135 | void startHookTarget_AhnLab4(uint8_t* match) { 136 | hook_memory(match - 0x10, RET, sizeof(RET)); 137 | } 138 | 139 | void startHookTarget_AhnLab5(uint8_t* match) { 140 | hook_memory(match - 0x1C, RET, sizeof(RET)); 141 | } 142 | 143 | void startHookTarget_AppSolid(uint8_t* match) { 144 | 145 | hook_memory(match, RET, sizeof(RET)); 146 | 147 | } 148 | 149 | void startPatchTarget_KJBank(uint8_t* match) { 150 | hook_memory(match - 0x4, KJP, sizeof(KJP)); 151 | } 152 | 153 | void startPatchTarget_KJBank2(uint8_t* match) { 154 | uint8_t B10[] = { 155 | 0x04, 0x00, 0x00, 0x14 //B #0x10 156 | }; 157 | 158 | hook_memory(match + 0x14, B10, sizeof(B10)); 159 | } 160 | 161 | void startPatchTarget_nProtect(uint8_t* match) { 162 | hook_memory(match, RET, sizeof(RET)); 163 | } 164 | 165 | void startPatchTarget_nProtect2(uint8_t* match) { 166 | hook_memory(match - 0x10, RET, sizeof(RET)); 167 | } 168 | 169 | void startPatchTarget_MiniStock(uint8_t* match) { 170 | hook_memory(match - 0x1C, RET1, sizeof(RET1)); 171 | } 172 | 173 | void startPatchTarget_MyGenesis(uint8_t* match) { 174 | hook_memory(match + 0xC, MOV_X0_1, sizeof(MOV_X0_1)); 175 | } 176 | 177 | static bool tossPatched = false; 178 | void setTossPatched(bool isPatched) { 179 | tossPatched = isPatched; 180 | } 181 | 182 | bool isTossPatched() { 183 | return tossPatched; 184 | } 185 | 186 | void startPatchTarget_ixGuard(uint8_t* match) { 187 | uint8_t *func = find_start_of_function(match); 188 | // NSLog(@"[FlyJB] Found ixGuard: %p", func - _dyld_get_image_vmaddr_slide(0)); 189 | setTossPatched(true); 190 | hook_memory(func, RET, sizeof(RET)); 191 | } 192 | 193 | void startPatchTarget_HanaBank(uint8_t* match) { 194 | uint8_t *func = find_start_of_function(match); 195 | // NSLog(@"[FlyJB] match: %p, Found HanaBank: %p", match - _dyld_get_image_vmaddr_slide(0),func - _dyld_get_image_vmaddr_slide(0)); 196 | hook_memory(func, RET, sizeof(RET)); 197 | } 198 | 199 | void startPatchTarget_Yoti(uint8_t* match) { 200 | hook_memory(match - 0x60, RET0, sizeof(RET0)); 201 | } 202 | 203 | void startPatchTarget_SaidaBank(uint8_t* match) { 204 | hook_memory(match + 0x4, NOP, sizeof(NOP)); 205 | } 206 | 207 | void startHookTarget_ixShield(uint8_t* match) { 208 | uint8_t *func = find_start_of_function(match); 209 | // NSLog(@"[FlyJB] Found ixShield_sysCheckStart: %p, match: %p", func - _dyld_get_image_vmaddr_slide(0), match - _dyld_get_image_vmaddr_slide(0)); 210 | // MSHookFunction((void *)(func), (void *)hook_ix_sysCheckStart, (void **)&orig_ix_sysCheckStart); 211 | } 212 | 213 | void startHookTarget_ixShield2(uint8_t* match) { 214 | uint8_t *func = find_start_of_function(match); 215 | // NSLog(@"[FlyJB] Found ixShield_sysCheck_gamehack: %p, match: %p", func - _dyld_get_image_vmaddr_slide(0), match - _dyld_get_image_vmaddr_slide(0)); 216 | // MSHookFunction((void *)(func), (void *)hook_ix_sysCheck_gamehack, (void **)&orig_ix_sysCheck_gamehack); 217 | } 218 | 219 | void startPatchTarget_SYSAccess(uint8_t* match) { 220 | 221 | hook_memory(match, SYSAccessBlock, sizeof(SYSAccessBlock)); 222 | 223 | } 224 | 225 | void startPatchTarget_SYSAccessNOP(uint8_t* match) { 226 | 227 | hook_memory(match, SYSAccessNOPBlock, sizeof(SYSAccessNOPBlock)); 228 | 229 | } 230 | 231 | void startPatchTarget_SYSOpen(uint8_t* match) { 232 | 233 | hook_memory(match, SYSOpenBlock, sizeof(SYSOpenBlock)); 234 | 235 | } 236 | 237 | // ====== PATCH CODE ====== // 238 | void SVC80_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 239 | 240 | int syscall_num = (int)(uint64_t)reg_ctx->general.regs.x16; 241 | if(syscall_num == SYS_open || syscall_num == SYS_access || syscall_num == SYS_lstat64 || syscall_num == SYS_setxattr || syscall_num == SYS_stat64 || syscall_num == SYS_rename || syscall_num == SYS_stat || syscall_num == SYS_utimes || syscall_num == SYS_unmount || syscall_num == SYS_pathconf) { 242 | const char* path = (const char*)(uint64_t)(reg_ctx->general.regs.x0); 243 | NSString* path2 = [NSString stringWithUTF8String:path]; 244 | if(![path2 hasSuffix:@"/sbin/mount"]) { 245 | *(unsigned long *)(®_ctx->general.regs.x0) = (unsigned long long)"/XsF1re"; 246 | NSLog(@"[FlyJB] Bypassed SVC #0x80 - num: %d, path: %s", syscall_num, path); 247 | } 248 | else { 249 | NSLog(@"[FlyJB] Detected SVC #0x80 - num: %d, path: %s", syscall_num, path); 250 | } 251 | } 252 | 253 | else if(syscall_num == SYS_syscall) { 254 | int x0 = (int)(uint64_t)reg_ctx->general.regs.x0; 255 | NSLog(@"[FlyJB] Detected syscall of SVC #0x80 number: %d", x0); 256 | } 257 | 258 | else if(syscall_num == SYS_exit) { 259 | NSLog(@"[FlyJB] Detected SVC #0x80 Exit call stack: \n%@", [NSThread callStackSymbols]); 260 | } 261 | 262 | else { 263 | NSLog(@"[FlyJB] Detected Unknown SVC #0x80 number: %d", syscall_num); 264 | } 265 | 266 | } 267 | 268 | void startHookTarget_SVC80(uint8_t* match) { 269 | 270 | dobby_enable_near_branch_trampoline(); 271 | DobbyInstrument((void *)(match), (DBICallTy)SVC80_handler); 272 | // NSLog(@"[FlyJB] svc80: %p", match-_dyld_get_image_vmaddr_slide(0)); 273 | dobby_disable_near_branch_trampoline(); 274 | 275 | } 276 | 277 | void loadSVC80MemHooks() { 278 | const uint8_t target[] = { 279 | 0x01, 0x10, 0x00, 0xD4 //SVC #0x80 280 | }; 281 | 282 | scan_executable_memory(target, sizeof(target), &startHookTarget_SVC80); 283 | } 284 | 285 | void SVC80Access_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 286 | 287 | const char* path = (const char*)(uint64_t)(reg_ctx->general.regs.x0); 288 | NSString* path2 = [NSString stringWithUTF8String:path]; 289 | 290 | //Arxan 솔루션에서는 /sbin/mount 파일이 존재해야 우회됨. 291 | if(![path2 hasSuffix:@"/sbin/mount"]) { 292 | //Start Bypass 293 | NSLog(@"[FlyJB] Bypassed SVC #0x80 - SYS_Access path = %s", path); 294 | *(unsigned long *)(®_ctx->general.regs.x0) = (unsigned long long)"/XsF1re"; 295 | } 296 | else { 297 | NSLog(@"[FlyJB] Detected SVC #0x80 - SYS_Access path = %s", path); 298 | } 299 | } 300 | 301 | void startHookTarget_SVC80Access(uint8_t* match) { 302 | 303 | dobby_enable_near_branch_trampoline(); 304 | DobbyInstrument((void *)(match), (DBICallTy)SVC80Access_handler); 305 | dobby_disable_near_branch_trampoline(); 306 | 307 | } 308 | 309 | void loadSVC80AccessMemHooks() { 310 | 311 | const uint8_t target[] = { 312 | 0x30, 0x04, 0x80, 0xD2, //MOV X16, #21 313 | 0x01, 0x10, 0x00, 0xD4 //SVC #0x80 314 | }; 315 | scan_executable_memory(target, sizeof(target), &startHookTarget_SVC80Access); 316 | 317 | const uint8_t target2[] = { 318 | 0x30, 0x04, 0x80, 0xD2, //MOV X16, #21 319 | 0x1F, 0x20, 0x03, 0xD5, //NOP 320 | 0x1F, 0x20, 0x03, 0xD5, //NOP 321 | 0x1F, 0x20, 0x03, 0xD5, //NOP 322 | 0x01, 0x10, 0x00, 0xD4 //SVC #0x80 323 | }; 324 | scan_executable_memory(target2, sizeof(target2), &startHookTarget_SVC80Access); 325 | 326 | } 327 | 328 | void SVC80Open_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 329 | 330 | const char* path = (const char*)(uint64_t)(reg_ctx->general.regs.x0); 331 | NSString* path2 = [NSString stringWithUTF8String:path]; 332 | 333 | if(![path2 hasSuffix:@"/sbin/mount"]) { 334 | //Start Bypass 335 | NSLog(@"[FlyJB] Bypassed SVC #0x80 - SYS_Open path = %s", path); 336 | *(unsigned long *)(®_ctx->general.regs.x0) = (unsigned long long)"/XsF1re"; 337 | } 338 | else { 339 | NSLog(@"[FlyJB] Detected SVC #0x80 - SYS_Open path = %s", path); 340 | } 341 | } 342 | 343 | void startHookTarget_SVC80Open(uint8_t* match) { 344 | dobby_enable_near_branch_trampoline(); 345 | DobbyInstrument((void *)(match), (DBICallTy)SVC80Open_handler); 346 | dobby_disable_near_branch_trampoline(); 347 | } 348 | 349 | void loadSVC80OpenMemHooks() { 350 | 351 | const uint8_t target[] = { 352 | 0xB0, 0x00, 0x80, 0xD2, //MOV X16, #5 353 | 0x01, 0x10, 0x00, 0xD4 //SVC #0x80 354 | }; 355 | scan_executable_memory(target, sizeof(target), &startHookTarget_SVC80Open); 356 | } 357 | 358 | void SVC80Exit_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 359 | NSLog(@"[FlyJB] Detected SVC #0x80 Exit call stack: \n%@", [NSThread callStackSymbols]); 360 | } 361 | 362 | void startHookTarget_SVC80Exit(uint8_t* match) { 363 | // dobby_enable_near_branch_trampoline(); 364 | DobbyInstrument((void *)(match + 0x4), (DBICallTy)SVC80Exit_handler); 365 | // dobby_disable_near_branch_trampoline(); 366 | } 367 | 368 | void loadSVC80ExitMemHooks() { 369 | 370 | const uint8_t target[] = { 371 | 0x30, 0x00, 0x80, 0xD2, //MOV X16, #1 372 | 0x01, 0x10, 0x00, 0xD4 //SVC #0x80 373 | }; 374 | scan_executable_memory(target, sizeof(target), &startHookTarget_SVC80Exit); 375 | } 376 | // 377 | // void blrx8_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 378 | // uint64_t x8 = (uint64_t)(reg_ctx->general.regs.x8); 379 | // NSLog(@"[FlyJB] BLR X8: %llX", x8 - _dyld_get_image_vmaddr_slide(3)); 380 | // NSLog(@"[FlyJB] BLR X8 callstack: %@", [NSThread callStackSymbols]); 381 | // } 382 | // 383 | // void blrx9_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 384 | // uint64_t x9 = (uint64_t)(reg_ctx->general.regs.x9); 385 | // NSLog(@"[FlyJB] BLR X9: %llX", x9 - _dyld_get_image_vmaddr_slide(3)); 386 | // } 387 | // 388 | // void blrx10_handler(RegisterContext *reg_ctx, const HookEntryInfo *info) { 389 | // uint64_t x10 = (uint64_t)(reg_ctx->general.regs.x10); 390 | // NSLog(@"[FlyJB] BLR X10: %llX", x10 - _dyld_get_image_vmaddr_slide(3)); 391 | // } 392 | 393 | 394 | 395 | 396 | 397 | -------------------------------------------------------------------------------- /Example/GuardApp.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0EEFC80043A73EA761882D06 /* Pods_GuardApp_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB17C2A409CDB33A44167CE4 /* Pods_GuardApp_Example.framework */; }; 11 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 12 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 13 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; }; 14 | 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; 15 | 6003F59E195388D20070C39A /* LZAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* LZAppDelegate.m */; }; 16 | 6003F5A7195388D20070C39A /* LZViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* LZViewController.m */; }; 17 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; }; 18 | 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; }; 19 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 20 | DF7C1AE62615899B0005EF1A /* Dobby.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DF7C1AD42615880E0005EF1A /* Dobby.framework */; }; 21 | DF7C1AE72615899B0005EF1A /* Dobby.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DF7C1AD42615880E0005EF1A /* Dobby.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 22 | DF7C1AF626159EBD0005EF1A /* AeonLucid.m in Sources */ = {isa = PBXBuildFile; fileRef = DF7C1AF526159EBD0005EF1A /* AeonLucid.m */; }; 23 | DF7C1AF726159F0E0005EF1A /* MemHooks.m in Sources */ = {isa = PBXBuildFile; fileRef = DF7C1AF226159E860005EF1A /* MemHooks.m */; }; 24 | DFB61CE92611DBDE00EF2211 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; 25 | DFCEA43A2610A83900557ED3 /* AntiForSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFCEA4392610A83900557ED3 /* AntiForSwift.swift */; }; 26 | /* End PBXBuildFile section */ 27 | 28 | /* Begin PBXCopyFilesBuildPhase section */ 29 | DF7C1ADF2615892F0005EF1A /* CopyFiles */ = { 30 | isa = PBXCopyFilesBuildPhase; 31 | buildActionMask = 2147483647; 32 | dstPath = ""; 33 | dstSubfolderSpec = 7; 34 | files = ( 35 | ); 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | DF7C1AE82615899B0005EF1A /* Embed Frameworks */ = { 39 | isa = PBXCopyFilesBuildPhase; 40 | buildActionMask = 2147483647; 41 | dstPath = ""; 42 | dstSubfolderSpec = 10; 43 | files = ( 44 | DF7C1AE72615899B0005EF1A /* Dobby.framework in Embed Frameworks */, 45 | ); 46 | name = "Embed Frameworks"; 47 | runOnlyForDeploymentPostprocessing = 0; 48 | }; 49 | /* End PBXCopyFilesBuildPhase section */ 50 | 51 | /* Begin PBXFileReference section */ 52 | 0DB1C040BA634A650C506F3F /* Pods-GuardApp_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GuardApp_Example.debug.xcconfig"; path = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.debug.xcconfig"; sourceTree = ""; }; 53 | 23F266B77BBE515A41665375 /* Pods-GuardApp_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GuardApp_Tests.debug.xcconfig"; path = "Target Support Files/Pods-GuardApp_Tests/Pods-GuardApp_Tests.debug.xcconfig"; sourceTree = ""; }; 54 | 6003F58A195388D20070C39A /* GuardApp_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GuardApp_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 56 | 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 57 | 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 58 | 6003F595195388D20070C39A /* GuardApp-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GuardApp-Info.plist"; sourceTree = ""; }; 59 | 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 60 | 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 61 | 6003F59B195388D20070C39A /* GuardApp-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GuardApp-Prefix.pch"; sourceTree = ""; }; 62 | 6003F59C195388D20070C39A /* LZAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LZAppDelegate.h; sourceTree = ""; }; 63 | 6003F59D195388D20070C39A /* LZAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LZAppDelegate.m; sourceTree = ""; }; 64 | 6003F5A5195388D20070C39A /* LZViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LZViewController.h; sourceTree = ""; }; 65 | 6003F5A6195388D20070C39A /* LZViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LZViewController.m; sourceTree = ""; }; 66 | 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 67 | 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 68 | 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; 69 | 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 70 | 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = ""; }; 71 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; 72 | 61111EC243B5A1693E0962C2 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 73 | 649B5285DCA8144CF685A91D /* Pods-GuardApp_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GuardApp_Tests.release.xcconfig"; path = "Target Support Files/Pods-GuardApp_Tests/Pods-GuardApp_Tests.release.xcconfig"; sourceTree = ""; }; 74 | 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 75 | 832FB1270B45100B1B30C6E7 /* GuardApp.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GuardApp.podspec; path = ../GuardApp.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 76 | 841A6972E6CB19033F7C0D62 /* Pods-GuardApp_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GuardApp_Example.release.xcconfig"; path = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.release.xcconfig"; sourceTree = ""; }; 77 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 78 | AFBF096B4111C0580BD53BAB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 79 | B0DDB00790791B16AC36A688 /* Pods_GuardApp_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GuardApp_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 80 | DB17C2A409CDB33A44167CE4 /* Pods_GuardApp_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GuardApp_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81 | DF7C1AD42615880E0005EF1A /* Dobby.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Dobby.framework; sourceTree = ""; }; 82 | DF7C1AF126159E860005EF1A /* MemHooks.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemHooks.h; sourceTree = ""; }; 83 | DF7C1AF226159E860005EF1A /* MemHooks.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MemHooks.m; sourceTree = ""; }; 84 | DF7C1AF426159EBD0005EF1A /* AeonLucid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AeonLucid.h; sourceTree = ""; }; 85 | DF7C1AF526159EBD0005EF1A /* AeonLucid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AeonLucid.m; sourceTree = ""; }; 86 | DFCEA4382610A83900557ED3 /* GuardApp_Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GuardApp_Example-Bridging-Header.h"; sourceTree = ""; }; 87 | DFCEA4392610A83900557ED3 /* AntiForSwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AntiForSwift.swift; sourceTree = ""; }; 88 | DFF2BB5F2611607200DDC4F6 /* libcycript.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libcycript.dylib; sourceTree = ""; }; 89 | /* End PBXFileReference section */ 90 | 91 | /* Begin PBXFrameworksBuildPhase section */ 92 | 6003F587195388D20070C39A /* Frameworks */ = { 93 | isa = PBXFrameworksBuildPhase; 94 | buildActionMask = 2147483647; 95 | files = ( 96 | 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 97 | DFB61CE92611DBDE00EF2211 /* UIKit.framework in Frameworks */, 98 | 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, 99 | 0EEFC80043A73EA761882D06 /* Pods_GuardApp_Example.framework in Frameworks */, 100 | DF7C1AE62615899B0005EF1A /* Dobby.framework in Frameworks */, 101 | ); 102 | runOnlyForDeploymentPostprocessing = 0; 103 | }; 104 | /* End PBXFrameworksBuildPhase section */ 105 | 106 | /* Begin PBXGroup section */ 107 | 0A5BC92DA132BBFFD50C7C89 /* Pods */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 0DB1C040BA634A650C506F3F /* Pods-GuardApp_Example.debug.xcconfig */, 111 | 841A6972E6CB19033F7C0D62 /* Pods-GuardApp_Example.release.xcconfig */, 112 | 23F266B77BBE515A41665375 /* Pods-GuardApp_Tests.debug.xcconfig */, 113 | 649B5285DCA8144CF685A91D /* Pods-GuardApp_Tests.release.xcconfig */, 114 | ); 115 | path = Pods; 116 | sourceTree = ""; 117 | }; 118 | 6003F581195388D10070C39A = { 119 | isa = PBXGroup; 120 | children = ( 121 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, 122 | 6003F593195388D20070C39A /* Example for GuardApp */, 123 | 6003F5B5195388D20070C39A /* Tests */, 124 | 6003F58C195388D20070C39A /* Frameworks */, 125 | 6003F58B195388D20070C39A /* Products */, 126 | 0A5BC92DA132BBFFD50C7C89 /* Pods */, 127 | ); 128 | sourceTree = ""; 129 | }; 130 | 6003F58B195388D20070C39A /* Products */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 6003F58A195388D20070C39A /* GuardApp_Example.app */, 134 | ); 135 | name = Products; 136 | sourceTree = ""; 137 | }; 138 | 6003F58C195388D20070C39A /* Frameworks */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | DF7C1AD42615880E0005EF1A /* Dobby.framework */, 142 | DFF2BB5F2611607200DDC4F6 /* libcycript.dylib */, 143 | 6003F58D195388D20070C39A /* Foundation.framework */, 144 | 6003F58F195388D20070C39A /* CoreGraphics.framework */, 145 | 6003F591195388D20070C39A /* UIKit.framework */, 146 | 6003F5AF195388D20070C39A /* XCTest.framework */, 147 | DB17C2A409CDB33A44167CE4 /* Pods_GuardApp_Example.framework */, 148 | B0DDB00790791B16AC36A688 /* Pods_GuardApp_Tests.framework */, 149 | ); 150 | name = Frameworks; 151 | sourceTree = ""; 152 | }; 153 | 6003F593195388D20070C39A /* Example for GuardApp */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | DF7C1AF026159E740005EF1A /* fjhooker */, 157 | 6003F59C195388D20070C39A /* LZAppDelegate.h */, 158 | 6003F59D195388D20070C39A /* LZAppDelegate.m */, 159 | DFCEA4392610A83900557ED3 /* AntiForSwift.swift */, 160 | 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */, 161 | 6003F5A5195388D20070C39A /* LZViewController.h */, 162 | 6003F5A6195388D20070C39A /* LZViewController.m */, 163 | 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */, 164 | 6003F5A8195388D20070C39A /* Images.xcassets */, 165 | 6003F594195388D20070C39A /* Supporting Files */, 166 | DFCEA4382610A83900557ED3 /* GuardApp_Example-Bridging-Header.h */, 167 | ); 168 | name = "Example for GuardApp"; 169 | path = GuardApp; 170 | sourceTree = ""; 171 | }; 172 | 6003F594195388D20070C39A /* Supporting Files */ = { 173 | isa = PBXGroup; 174 | children = ( 175 | 6003F595195388D20070C39A /* GuardApp-Info.plist */, 176 | 6003F596195388D20070C39A /* InfoPlist.strings */, 177 | 6003F599195388D20070C39A /* main.m */, 178 | 6003F59B195388D20070C39A /* GuardApp-Prefix.pch */, 179 | ); 180 | name = "Supporting Files"; 181 | sourceTree = ""; 182 | }; 183 | 6003F5B5195388D20070C39A /* Tests */ = { 184 | isa = PBXGroup; 185 | children = ( 186 | 6003F5BB195388D20070C39A /* Tests.m */, 187 | 6003F5B6195388D20070C39A /* Supporting Files */, 188 | ); 189 | path = Tests; 190 | sourceTree = ""; 191 | }; 192 | 6003F5B6195388D20070C39A /* Supporting Files */ = { 193 | isa = PBXGroup; 194 | children = ( 195 | 6003F5B7195388D20070C39A /* Tests-Info.plist */, 196 | 6003F5B8195388D20070C39A /* InfoPlist.strings */, 197 | 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, 198 | ); 199 | name = "Supporting Files"; 200 | sourceTree = ""; 201 | }; 202 | 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { 203 | isa = PBXGroup; 204 | children = ( 205 | 832FB1270B45100B1B30C6E7 /* GuardApp.podspec */, 206 | AFBF096B4111C0580BD53BAB /* README.md */, 207 | 61111EC243B5A1693E0962C2 /* LICENSE */, 208 | ); 209 | name = "Podspec Metadata"; 210 | sourceTree = ""; 211 | }; 212 | DF7C1AF026159E740005EF1A /* fjhooker */ = { 213 | isa = PBXGroup; 214 | children = ( 215 | DF7C1AF126159E860005EF1A /* MemHooks.h */, 216 | DF7C1AF226159E860005EF1A /* MemHooks.m */, 217 | DF7C1AF426159EBD0005EF1A /* AeonLucid.h */, 218 | DF7C1AF526159EBD0005EF1A /* AeonLucid.m */, 219 | ); 220 | name = fjhooker; 221 | sourceTree = ""; 222 | }; 223 | /* End PBXGroup section */ 224 | 225 | /* Begin PBXNativeTarget section */ 226 | 6003F589195388D20070C39A /* GuardApp_Example */ = { 227 | isa = PBXNativeTarget; 228 | buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "GuardApp_Example" */; 229 | buildPhases = ( 230 | 326463264B1D5B14921DE9C1 /* [CP] Check Pods Manifest.lock */, 231 | 6003F586195388D20070C39A /* Sources */, 232 | 6003F587195388D20070C39A /* Frameworks */, 233 | 6003F588195388D20070C39A /* Resources */, 234 | B1554AC6868E8519B029B7F5 /* [CP] Embed Pods Frameworks */, 235 | DF7C1ADF2615892F0005EF1A /* CopyFiles */, 236 | DF7C1AE82615899B0005EF1A /* Embed Frameworks */, 237 | ); 238 | buildRules = ( 239 | ); 240 | dependencies = ( 241 | ); 242 | name = GuardApp_Example; 243 | productName = GuardApp; 244 | productReference = 6003F58A195388D20070C39A /* GuardApp_Example.app */; 245 | productType = "com.apple.product-type.application"; 246 | }; 247 | /* End PBXNativeTarget section */ 248 | 249 | /* Begin PBXProject section */ 250 | 6003F582195388D10070C39A /* Project object */ = { 251 | isa = PBXProject; 252 | attributes = { 253 | CLASSPREFIX = LZ; 254 | LastUpgradeCheck = 1240; 255 | ORGANIZATIONNAME = "350442340@qq.com"; 256 | TargetAttributes = { 257 | 6003F589195388D20070C39A = { 258 | DevelopmentTeam = SM6579H77G; 259 | LastSwiftMigration = 1240; 260 | }; 261 | }; 262 | }; 263 | buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "GuardApp" */; 264 | compatibilityVersion = "Xcode 3.2"; 265 | developmentRegion = en; 266 | hasScannedForEncodings = 0; 267 | knownRegions = ( 268 | en, 269 | Base, 270 | ); 271 | mainGroup = 6003F581195388D10070C39A; 272 | productRefGroup = 6003F58B195388D20070C39A /* Products */; 273 | projectDirPath = ""; 274 | projectRoot = ""; 275 | targets = ( 276 | 6003F589195388D20070C39A /* GuardApp_Example */, 277 | ); 278 | }; 279 | /* End PBXProject section */ 280 | 281 | /* Begin PBXResourcesBuildPhase section */ 282 | 6003F588195388D20070C39A /* Resources */ = { 283 | isa = PBXResourcesBuildPhase; 284 | buildActionMask = 2147483647; 285 | files = ( 286 | 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, 287 | 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */, 288 | 6003F5A9195388D20070C39A /* Images.xcassets in Resources */, 289 | 6003F598195388D20070C39A /* InfoPlist.strings in Resources */, 290 | ); 291 | runOnlyForDeploymentPostprocessing = 0; 292 | }; 293 | /* End PBXResourcesBuildPhase section */ 294 | 295 | /* Begin PBXShellScriptBuildPhase section */ 296 | 326463264B1D5B14921DE9C1 /* [CP] Check Pods Manifest.lock */ = { 297 | isa = PBXShellScriptBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | ); 301 | inputFileListPaths = ( 302 | ); 303 | inputPaths = ( 304 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 305 | "${PODS_ROOT}/Manifest.lock", 306 | ); 307 | name = "[CP] Check Pods Manifest.lock"; 308 | outputFileListPaths = ( 309 | ); 310 | outputPaths = ( 311 | "$(DERIVED_FILE_DIR)/Pods-GuardApp_Example-checkManifestLockResult.txt", 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | shellPath = /bin/sh; 315 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 316 | showEnvVarsInLog = 0; 317 | }; 318 | B1554AC6868E8519B029B7F5 /* [CP] Embed Pods Frameworks */ = { 319 | isa = PBXShellScriptBuildPhase; 320 | buildActionMask = 2147483647; 321 | files = ( 322 | ); 323 | inputPaths = ( 324 | "${PODS_ROOT}/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-frameworks.sh", 325 | "${BUILT_PRODUCTS_DIR}/GuardApp/GuardApp.framework", 326 | ); 327 | name = "[CP] Embed Pods Frameworks"; 328 | outputPaths = ( 329 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GuardApp.framework", 330 | ); 331 | runOnlyForDeploymentPostprocessing = 0; 332 | shellPath = /bin/sh; 333 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-frameworks.sh\"\n"; 334 | showEnvVarsInLog = 0; 335 | }; 336 | /* End PBXShellScriptBuildPhase section */ 337 | 338 | /* Begin PBXSourcesBuildPhase section */ 339 | 6003F586195388D20070C39A /* Sources */ = { 340 | isa = PBXSourcesBuildPhase; 341 | buildActionMask = 2147483647; 342 | files = ( 343 | 6003F59E195388D20070C39A /* LZAppDelegate.m in Sources */, 344 | DFCEA43A2610A83900557ED3 /* AntiForSwift.swift in Sources */, 345 | DF7C1AF626159EBD0005EF1A /* AeonLucid.m in Sources */, 346 | 6003F5A7195388D20070C39A /* LZViewController.m in Sources */, 347 | DF7C1AF726159F0E0005EF1A /* MemHooks.m in Sources */, 348 | 6003F59A195388D20070C39A /* main.m in Sources */, 349 | ); 350 | runOnlyForDeploymentPostprocessing = 0; 351 | }; 352 | /* End PBXSourcesBuildPhase section */ 353 | 354 | /* Begin PBXVariantGroup section */ 355 | 6003F596195388D20070C39A /* InfoPlist.strings */ = { 356 | isa = PBXVariantGroup; 357 | children = ( 358 | 6003F597195388D20070C39A /* en */, 359 | ); 360 | name = InfoPlist.strings; 361 | sourceTree = ""; 362 | }; 363 | 6003F5B8195388D20070C39A /* InfoPlist.strings */ = { 364 | isa = PBXVariantGroup; 365 | children = ( 366 | 6003F5B9195388D20070C39A /* en */, 367 | ); 368 | name = InfoPlist.strings; 369 | sourceTree = ""; 370 | }; 371 | 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = { 372 | isa = PBXVariantGroup; 373 | children = ( 374 | 71719F9E1E33DC2100824A3D /* Base */, 375 | ); 376 | name = LaunchScreen.storyboard; 377 | sourceTree = ""; 378 | }; 379 | /* End PBXVariantGroup section */ 380 | 381 | /* Begin XCBuildConfiguration section */ 382 | 6003F5BD195388D20070C39A /* Debug */ = { 383 | isa = XCBuildConfiguration; 384 | buildSettings = { 385 | ALWAYS_SEARCH_USER_PATHS = NO; 386 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 387 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 388 | CLANG_CXX_LIBRARY = "libc++"; 389 | CLANG_ENABLE_MODULES = YES; 390 | CLANG_ENABLE_OBJC_ARC = YES; 391 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 392 | CLANG_WARN_BOOL_CONVERSION = YES; 393 | CLANG_WARN_COMMA = YES; 394 | CLANG_WARN_CONSTANT_CONVERSION = YES; 395 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 396 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 397 | CLANG_WARN_EMPTY_BODY = YES; 398 | CLANG_WARN_ENUM_CONVERSION = YES; 399 | CLANG_WARN_INFINITE_RECURSION = YES; 400 | CLANG_WARN_INT_CONVERSION = YES; 401 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 402 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 403 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 404 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 405 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 406 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 407 | CLANG_WARN_STRICT_PROTOTYPES = YES; 408 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 409 | CLANG_WARN_UNREACHABLE_CODE = YES; 410 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 411 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 412 | COPY_PHASE_STRIP = NO; 413 | ENABLE_STRICT_OBJC_MSGSEND = YES; 414 | ENABLE_TESTABILITY = YES; 415 | GCC_C_LANGUAGE_STANDARD = gnu99; 416 | GCC_DYNAMIC_NO_PIC = NO; 417 | GCC_NO_COMMON_BLOCKS = YES; 418 | GCC_OPTIMIZATION_LEVEL = 0; 419 | GCC_PREPROCESSOR_DEFINITIONS = ( 420 | "DEBUG=1", 421 | "$(inherited)", 422 | ); 423 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 424 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 425 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 426 | GCC_WARN_UNDECLARED_SELECTOR = YES; 427 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 428 | GCC_WARN_UNUSED_FUNCTION = YES; 429 | GCC_WARN_UNUSED_VARIABLE = YES; 430 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 431 | ONLY_ACTIVE_ARCH = YES; 432 | SDKROOT = iphoneos; 433 | TARGETED_DEVICE_FAMILY = "1,2"; 434 | }; 435 | name = Debug; 436 | }; 437 | 6003F5BE195388D20070C39A /* Release */ = { 438 | isa = XCBuildConfiguration; 439 | buildSettings = { 440 | ALWAYS_SEARCH_USER_PATHS = NO; 441 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 442 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 443 | CLANG_CXX_LIBRARY = "libc++"; 444 | CLANG_ENABLE_MODULES = YES; 445 | CLANG_ENABLE_OBJC_ARC = YES; 446 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 447 | CLANG_WARN_BOOL_CONVERSION = YES; 448 | CLANG_WARN_COMMA = YES; 449 | CLANG_WARN_CONSTANT_CONVERSION = YES; 450 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 451 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 452 | CLANG_WARN_EMPTY_BODY = YES; 453 | CLANG_WARN_ENUM_CONVERSION = YES; 454 | CLANG_WARN_INFINITE_RECURSION = YES; 455 | CLANG_WARN_INT_CONVERSION = YES; 456 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 457 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 458 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 459 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 460 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 461 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 462 | CLANG_WARN_STRICT_PROTOTYPES = YES; 463 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 464 | CLANG_WARN_UNREACHABLE_CODE = YES; 465 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 466 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 467 | COPY_PHASE_STRIP = YES; 468 | ENABLE_NS_ASSERTIONS = NO; 469 | ENABLE_STRICT_OBJC_MSGSEND = YES; 470 | GCC_C_LANGUAGE_STANDARD = gnu99; 471 | GCC_NO_COMMON_BLOCKS = YES; 472 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 473 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 474 | GCC_WARN_UNDECLARED_SELECTOR = YES; 475 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 476 | GCC_WARN_UNUSED_FUNCTION = YES; 477 | GCC_WARN_UNUSED_VARIABLE = YES; 478 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 479 | SDKROOT = iphoneos; 480 | SWIFT_COMPILATION_MODE = wholemodule; 481 | TARGETED_DEVICE_FAMILY = "1,2"; 482 | VALIDATE_PRODUCT = YES; 483 | }; 484 | name = Release; 485 | }; 486 | 6003F5C0195388D20070C39A /* Debug */ = { 487 | isa = XCBuildConfiguration; 488 | baseConfigurationReference = 0DB1C040BA634A650C506F3F /* Pods-GuardApp_Example.debug.xcconfig */; 489 | buildSettings = { 490 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 491 | CLANG_ENABLE_MODULES = YES; 492 | DEVELOPMENT_TEAM = SM6579H77G; 493 | ENABLE_BITCODE = NO; 494 | FRAMEWORK_SEARCH_PATHS = ( 495 | "$(inherited)", 496 | "$(PROJECT_DIR)", 497 | ); 498 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 499 | GCC_PREFIX_HEADER = ""; 500 | INFOPLIST_FILE = "GuardApp/GuardApp-Info.plist"; 501 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 502 | LIBRARY_SEARCH_PATHS = ( 503 | "$(inherited)", 504 | "$(PROJECT_DIR)", 505 | ); 506 | MODULE_NAME = ExampleApp; 507 | OTHER_CFLAGS = ""; 508 | OTHER_CPLUSPLUSFLAGS = ( 509 | "$(OTHER_CFLAGS)", 510 | "-mllvm", 511 | "-enable-subob", 512 | ); 513 | OTHER_LDFLAGS = ( 514 | "$(inherited)", 515 | "-framework", 516 | "\"GuardApp\"", 517 | ); 518 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 519 | PRODUCT_NAME = "$(TARGET_NAME)"; 520 | SWIFT_OBJC_BRIDGING_HEADER = "GuardApp/GuardApp_Example-Bridging-Header.h"; 521 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 522 | SWIFT_VERSION = 4.0; 523 | WRAPPER_EXTENSION = app; 524 | }; 525 | name = Debug; 526 | }; 527 | 6003F5C1195388D20070C39A /* Release */ = { 528 | isa = XCBuildConfiguration; 529 | baseConfigurationReference = 841A6972E6CB19033F7C0D62 /* Pods-GuardApp_Example.release.xcconfig */; 530 | buildSettings = { 531 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 532 | CLANG_ENABLE_MODULES = YES; 533 | DEVELOPMENT_TEAM = SM6579H77G; 534 | ENABLE_BITCODE = NO; 535 | FRAMEWORK_SEARCH_PATHS = ( 536 | "$(inherited)", 537 | "$(PROJECT_DIR)", 538 | ); 539 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 540 | GCC_PREFIX_HEADER = ""; 541 | INFOPLIST_FILE = "GuardApp/GuardApp-Info.plist"; 542 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 543 | LIBRARY_SEARCH_PATHS = ( 544 | "$(inherited)", 545 | "$(PROJECT_DIR)", 546 | ); 547 | MODULE_NAME = ExampleApp; 548 | OTHER_CFLAGS = ""; 549 | OTHER_CPLUSPLUSFLAGS = ( 550 | "$(OTHER_CFLAGS)", 551 | "-mllvm", 552 | "-enable-subob", 553 | ); 554 | OTHER_LDFLAGS = ( 555 | "$(inherited)", 556 | "-framework", 557 | "\"GuardApp\"", 558 | ); 559 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}"; 560 | PRODUCT_NAME = "$(TARGET_NAME)"; 561 | SWIFT_OBJC_BRIDGING_HEADER = "GuardApp/GuardApp_Example-Bridging-Header.h"; 562 | SWIFT_VERSION = 4.0; 563 | WRAPPER_EXTENSION = app; 564 | }; 565 | name = Release; 566 | }; 567 | /* End XCBuildConfiguration section */ 568 | 569 | /* Begin XCConfigurationList section */ 570 | 6003F585195388D10070C39A /* Build configuration list for PBXProject "GuardApp" */ = { 571 | isa = XCConfigurationList; 572 | buildConfigurations = ( 573 | 6003F5BD195388D20070C39A /* Debug */, 574 | 6003F5BE195388D20070C39A /* Release */, 575 | ); 576 | defaultConfigurationIsVisible = 0; 577 | defaultConfigurationName = Release; 578 | }; 579 | 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "GuardApp_Example" */ = { 580 | isa = XCConfigurationList; 581 | buildConfigurations = ( 582 | 6003F5C0195388D20070C39A /* Debug */, 583 | 6003F5C1195388D20070C39A /* Release */, 584 | ); 585 | defaultConfigurationIsVisible = 0; 586 | defaultConfigurationName = Release; 587 | }; 588 | /* End XCConfigurationList section */ 589 | }; 590 | rootObject = 6003F582195388D10070C39A /* Project object */; 591 | } 592 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0208E153C78CC70E18F90A69AFCA1993 /* AntiDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = FB0B40DAF43A4CE5A8A0F33CB6BEC007 /* AntiDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 1D085E615076A603F10EBB17FF63A319 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; 12 | 3D6751E64DD2954B3DF3A6EC2200232F /* Pods-GuardApp_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EF0AEA98A418434CB8841F2F6E446095 /* Pods-GuardApp_Example-dummy.m */; }; 13 | 42CD231B346189F75FCC1E3504C86686 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; }; 14 | 60C4CB253BEFA0329DCBE5C0882879C9 /* GuardApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 121A72E6000A7DE12C73C0A5775E7B06 /* GuardApp.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | 636931A2BCA4228810786C85E740D184 /* GuardApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B47269D2764490D366BC1E575122B3 /* GuardApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16 | 6685A7C4E3FF4F1D7634F04F14591AE5 /* LZAntiHelp.h in Headers */ = {isa = PBXBuildFile; fileRef = D35AB7EE2CEE3A14B6DB9E319F8C2C19 /* LZAntiHelp.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17 | 7980AC3CF0D0DDA4D7F3D39580D32EDC /* LZAntiHelp.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E67BFA1DE4C831967ECAF723ED45EEF /* LZAntiHelp.m */; }; 18 | A77D8CBBA7808E37BFB31D561F82504F /* GuardApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 747B7753A5BBFA20132FF09E18DCA250 /* GuardApp-dummy.m */; }; 19 | AA67869D9C7A6046A0A8F90734CEBD52 /* Pods-GuardApp_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 77914FE41F723F42CE3123D20ECAE8FF /* Pods-GuardApp_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 20 | AF6FFFFABCB639F8025828F283B4A635 /* AntiInjection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F11BFB48DD6656D9680E4E935EB7617 /* AntiInjection.h */; settings = {ATTRIBUTES = (Public, ); }; }; 21 | B68DF31377779FB25E777EEBC48CCD9D /* AntiNetWork.h in Headers */ = {isa = PBXBuildFile; fileRef = FBF37B0FFC50C9A6A8506D2B2041F514 /* AntiNetWork.h */; settings = {ATTRIBUTES = (Public, ); }; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXContainerItemProxy section */ 25 | EC97E2B547D93ED216B2F74A921DD5B4 /* PBXContainerItemProxy */ = { 26 | isa = PBXContainerItemProxy; 27 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 28 | proxyType = 1; 29 | remoteGlobalIDString = E8103E1B96D1CC12737D61138D3A57BF; 30 | remoteInfo = GuardApp; 31 | }; 32 | /* End PBXContainerItemProxy section */ 33 | 34 | /* Begin PBXFileReference section */ 35 | 121A72E6000A7DE12C73C0A5775E7B06 /* GuardApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GuardApp.h; path = GuardApp/Classes/GuardApp.h; sourceTree = ""; }; 36 | 148BAFDD0279D5667A542C6F9410D2F6 /* Pods-GuardApp_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GuardApp_Example.modulemap"; sourceTree = ""; }; 37 | 189F2747CB03737617FD6207719808DB /* Pods-GuardApp_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GuardApp_Example-Info.plist"; sourceTree = ""; }; 38 | 1C4BB9EF4D8759EA6B7BC5228E989FC2 /* Pods-GuardApp_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GuardApp_Example.debug.xcconfig"; sourceTree = ""; }; 39 | 1CE557D681E85D040BF3DB671E13D0A5 /* Pods-GuardApp_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GuardApp_Example-frameworks.sh"; sourceTree = ""; }; 40 | 23BF013F9B7D33692DC66619E8E875FC /* GuardApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GuardApp.framework; path = GuardApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 2EC66F3A536D18879261DE6B95D0E68B /* GuardApp.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GuardApp.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 42 | 3E67BFA1DE4C831967ECAF723ED45EEF /* LZAntiHelp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LZAntiHelp.m; path = GuardApp/Classes/LZAntiHelp.m; sourceTree = ""; }; 43 | 480DD8C76EFFC0345A47B27D590C7560 /* Pods_GuardApp_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GuardApp_Example.framework; path = "Pods-GuardApp_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 44 | 6EB13430BD8ADB462349064F5191EFC8 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 45 | 72C650AEEC5223AEF1DEAA46FE35F1EB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 46 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 47 | 747B7753A5BBFA20132FF09E18DCA250 /* GuardApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GuardApp-dummy.m"; sourceTree = ""; }; 48 | 77914FE41F723F42CE3123D20ECAE8FF /* Pods-GuardApp_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GuardApp_Example-umbrella.h"; sourceTree = ""; }; 49 | 957AC0AA1B794B93E762538D62ED2532 /* GuardApp-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GuardApp-Info.plist"; sourceTree = ""; }; 50 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 51 | 9F11BFB48DD6656D9680E4E935EB7617 /* AntiInjection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AntiInjection.h; path = GuardApp/Classes/AntiInjection.h; sourceTree = ""; }; 52 | B692535418C8A941897279E75634D750 /* GuardApp-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GuardApp-prefix.pch"; sourceTree = ""; }; 53 | B6A1338FF206CBE797820A8F6E29752D /* Pods-GuardApp_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GuardApp_Example.release.xcconfig"; sourceTree = ""; }; 54 | C59C4A1217FCC4499BB8125E7DBB1034 /* GuardApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GuardApp.modulemap; sourceTree = ""; }; 55 | C6101EA98001F105EEDC4F7C4E8D7759 /* GuardApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GuardApp.debug.xcconfig; sourceTree = ""; }; 56 | C922B1F98011DCE618CB5346E2E93582 /* GuardApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GuardApp.release.xcconfig; sourceTree = ""; }; 57 | D35AB7EE2CEE3A14B6DB9E319F8C2C19 /* LZAntiHelp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LZAntiHelp.h; path = GuardApp/Classes/LZAntiHelp.h; sourceTree = ""; }; 58 | DDAA0D415C6E544A87A41EE36FA16862 /* Pods-GuardApp_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GuardApp_Example-acknowledgements.plist"; sourceTree = ""; }; 59 | E3B47269D2764490D366BC1E575122B3 /* GuardApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GuardApp-umbrella.h"; sourceTree = ""; }; 60 | E5B26F5BE770079AC57AF67DE4C70AF3 /* Pods-GuardApp_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GuardApp_Example-acknowledgements.markdown"; sourceTree = ""; }; 61 | EF0AEA98A418434CB8841F2F6E446095 /* Pods-GuardApp_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GuardApp_Example-dummy.m"; sourceTree = ""; }; 62 | FB0B40DAF43A4CE5A8A0F33CB6BEC007 /* AntiDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AntiDebug.h; path = GuardApp/Classes/AntiDebug.h; sourceTree = ""; }; 63 | FBF37B0FFC50C9A6A8506D2B2041F514 /* AntiNetWork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AntiNetWork.h; path = GuardApp/Classes/AntiNetWork.h; sourceTree = ""; }; 64 | /* End PBXFileReference section */ 65 | 66 | /* Begin PBXFrameworksBuildPhase section */ 67 | 0A52D9ACA61F52B8E39F3BF74083F857 /* Frameworks */ = { 68 | isa = PBXFrameworksBuildPhase; 69 | buildActionMask = 2147483647; 70 | files = ( 71 | 42CD231B346189F75FCC1E3504C86686 /* Foundation.framework in Frameworks */, 72 | ); 73 | runOnlyForDeploymentPostprocessing = 0; 74 | }; 75 | 6E5EEB9732767707DB5A3010FE52F858 /* Frameworks */ = { 76 | isa = PBXFrameworksBuildPhase; 77 | buildActionMask = 2147483647; 78 | files = ( 79 | 1D085E615076A603F10EBB17FF63A319 /* Foundation.framework in Frameworks */, 80 | ); 81 | runOnlyForDeploymentPostprocessing = 0; 82 | }; 83 | /* End PBXFrameworksBuildPhase section */ 84 | 85 | /* Begin PBXGroup section */ 86 | 578452D2E740E91742655AC8F1636D1F /* iOS */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */, 90 | ); 91 | name = iOS; 92 | sourceTree = ""; 93 | }; 94 | 79CB0D74FBA5647FC4F6E4FA77049248 /* Products */ = { 95 | isa = PBXGroup; 96 | children = ( 97 | 23BF013F9B7D33692DC66619E8E875FC /* GuardApp.framework */, 98 | 480DD8C76EFFC0345A47B27D590C7560 /* Pods_GuardApp_Example.framework */, 99 | ); 100 | name = Products; 101 | sourceTree = ""; 102 | }; 103 | ACF853621976AC211E9DF1B152205D46 /* GuardApp */ = { 104 | isa = PBXGroup; 105 | children = ( 106 | FB0B40DAF43A4CE5A8A0F33CB6BEC007 /* AntiDebug.h */, 107 | 9F11BFB48DD6656D9680E4E935EB7617 /* AntiInjection.h */, 108 | FBF37B0FFC50C9A6A8506D2B2041F514 /* AntiNetWork.h */, 109 | 121A72E6000A7DE12C73C0A5775E7B06 /* GuardApp.h */, 110 | D35AB7EE2CEE3A14B6DB9E319F8C2C19 /* LZAntiHelp.h */, 111 | 3E67BFA1DE4C831967ECAF723ED45EEF /* LZAntiHelp.m */, 112 | E12231D879F9902C0EEE6FDED24011BD /* Pod */, 113 | B6B7728E25361836247A3D1543DE488C /* Support Files */, 114 | ); 115 | name = GuardApp; 116 | path = ../..; 117 | sourceTree = ""; 118 | }; 119 | B6B7728E25361836247A3D1543DE488C /* Support Files */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | C59C4A1217FCC4499BB8125E7DBB1034 /* GuardApp.modulemap */, 123 | 747B7753A5BBFA20132FF09E18DCA250 /* GuardApp-dummy.m */, 124 | 957AC0AA1B794B93E762538D62ED2532 /* GuardApp-Info.plist */, 125 | B692535418C8A941897279E75634D750 /* GuardApp-prefix.pch */, 126 | E3B47269D2764490D366BC1E575122B3 /* GuardApp-umbrella.h */, 127 | C6101EA98001F105EEDC4F7C4E8D7759 /* GuardApp.debug.xcconfig */, 128 | C922B1F98011DCE618CB5346E2E93582 /* GuardApp.release.xcconfig */, 129 | ); 130 | name = "Support Files"; 131 | path = "Example/Pods/Target Support Files/GuardApp"; 132 | sourceTree = ""; 133 | }; 134 | CB3145932CEF913B90BE2AFA4F492414 /* Pods-GuardApp_Example */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 148BAFDD0279D5667A542C6F9410D2F6 /* Pods-GuardApp_Example.modulemap */, 138 | E5B26F5BE770079AC57AF67DE4C70AF3 /* Pods-GuardApp_Example-acknowledgements.markdown */, 139 | DDAA0D415C6E544A87A41EE36FA16862 /* Pods-GuardApp_Example-acknowledgements.plist */, 140 | EF0AEA98A418434CB8841F2F6E446095 /* Pods-GuardApp_Example-dummy.m */, 141 | 1CE557D681E85D040BF3DB671E13D0A5 /* Pods-GuardApp_Example-frameworks.sh */, 142 | 189F2747CB03737617FD6207719808DB /* Pods-GuardApp_Example-Info.plist */, 143 | 77914FE41F723F42CE3123D20ECAE8FF /* Pods-GuardApp_Example-umbrella.h */, 144 | 1C4BB9EF4D8759EA6B7BC5228E989FC2 /* Pods-GuardApp_Example.debug.xcconfig */, 145 | B6A1338FF206CBE797820A8F6E29752D /* Pods-GuardApp_Example.release.xcconfig */, 146 | ); 147 | name = "Pods-GuardApp_Example"; 148 | path = "Target Support Files/Pods-GuardApp_Example"; 149 | sourceTree = ""; 150 | }; 151 | CBE5C6F1EDFD3640F8D882C2060A9409 /* Development Pods */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | ACF853621976AC211E9DF1B152205D46 /* GuardApp */, 155 | ); 156 | name = "Development Pods"; 157 | sourceTree = ""; 158 | }; 159 | CF1408CF629C7361332E53B88F7BD30C = { 160 | isa = PBXGroup; 161 | children = ( 162 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 163 | CBE5C6F1EDFD3640F8D882C2060A9409 /* Development Pods */, 164 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 165 | 79CB0D74FBA5647FC4F6E4FA77049248 /* Products */, 166 | D1F2CFAE7341C1E392561B38FAE7866F /* Targets Support Files */, 167 | ); 168 | sourceTree = ""; 169 | }; 170 | D1F2CFAE7341C1E392561B38FAE7866F /* Targets Support Files */ = { 171 | isa = PBXGroup; 172 | children = ( 173 | CB3145932CEF913B90BE2AFA4F492414 /* Pods-GuardApp_Example */, 174 | ); 175 | name = "Targets Support Files"; 176 | sourceTree = ""; 177 | }; 178 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | 578452D2E740E91742655AC8F1636D1F /* iOS */, 182 | ); 183 | name = Frameworks; 184 | sourceTree = ""; 185 | }; 186 | E12231D879F9902C0EEE6FDED24011BD /* Pod */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 2EC66F3A536D18879261DE6B95D0E68B /* GuardApp.podspec */, 190 | 6EB13430BD8ADB462349064F5191EFC8 /* LICENSE */, 191 | 72C650AEEC5223AEF1DEAA46FE35F1EB /* README.md */, 192 | ); 193 | name = Pod; 194 | sourceTree = ""; 195 | }; 196 | /* End PBXGroup section */ 197 | 198 | /* Begin PBXHeadersBuildPhase section */ 199 | 88BE86326ADDF4440F07367AA706E07F /* Headers */ = { 200 | isa = PBXHeadersBuildPhase; 201 | buildActionMask = 2147483647; 202 | files = ( 203 | 0208E153C78CC70E18F90A69AFCA1993 /* AntiDebug.h in Headers */, 204 | AF6FFFFABCB639F8025828F283B4A635 /* AntiInjection.h in Headers */, 205 | B68DF31377779FB25E777EEBC48CCD9D /* AntiNetWork.h in Headers */, 206 | 636931A2BCA4228810786C85E740D184 /* GuardApp-umbrella.h in Headers */, 207 | 60C4CB253BEFA0329DCBE5C0882879C9 /* GuardApp.h in Headers */, 208 | 6685A7C4E3FF4F1D7634F04F14591AE5 /* LZAntiHelp.h in Headers */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | 9A5044F1E063D3B8C2FB0CEC8BCCB91A /* Headers */ = { 213 | isa = PBXHeadersBuildPhase; 214 | buildActionMask = 2147483647; 215 | files = ( 216 | AA67869D9C7A6046A0A8F90734CEBD52 /* Pods-GuardApp_Example-umbrella.h in Headers */, 217 | ); 218 | runOnlyForDeploymentPostprocessing = 0; 219 | }; 220 | /* End PBXHeadersBuildPhase section */ 221 | 222 | /* Begin PBXNativeTarget section */ 223 | 1789571490BA84B79350DF88DA4590A4 /* Pods-GuardApp_Example */ = { 224 | isa = PBXNativeTarget; 225 | buildConfigurationList = AB5E9165056283434BE61CAC3A893093 /* Build configuration list for PBXNativeTarget "Pods-GuardApp_Example" */; 226 | buildPhases = ( 227 | 9A5044F1E063D3B8C2FB0CEC8BCCB91A /* Headers */, 228 | 042CCEE0F134CFFD48E316EBCA8ED853 /* Sources */, 229 | 6E5EEB9732767707DB5A3010FE52F858 /* Frameworks */, 230 | C1A5AD32240F2191DF4080D96E88FBBC /* Resources */, 231 | ); 232 | buildRules = ( 233 | ); 234 | dependencies = ( 235 | DD669E2A28C4C14ED255738A940EF624 /* PBXTargetDependency */, 236 | ); 237 | name = "Pods-GuardApp_Example"; 238 | productName = "Pods-GuardApp_Example"; 239 | productReference = 480DD8C76EFFC0345A47B27D590C7560 /* Pods_GuardApp_Example.framework */; 240 | productType = "com.apple.product-type.framework"; 241 | }; 242 | E8103E1B96D1CC12737D61138D3A57BF /* GuardApp */ = { 243 | isa = PBXNativeTarget; 244 | buildConfigurationList = 231DDC1EBAB111B4C21156324D140E55 /* Build configuration list for PBXNativeTarget "GuardApp" */; 245 | buildPhases = ( 246 | 88BE86326ADDF4440F07367AA706E07F /* Headers */, 247 | D462F7C50BDCBEE052B93E39D071D117 /* Sources */, 248 | 0A52D9ACA61F52B8E39F3BF74083F857 /* Frameworks */, 249 | D8406EAA5F1FC7F0D4D60E3B93488FDD /* Resources */, 250 | ); 251 | buildRules = ( 252 | ); 253 | dependencies = ( 254 | ); 255 | name = GuardApp; 256 | productName = GuardApp; 257 | productReference = 23BF013F9B7D33692DC66619E8E875FC /* GuardApp.framework */; 258 | productType = "com.apple.product-type.framework"; 259 | }; 260 | /* End PBXNativeTarget section */ 261 | 262 | /* Begin PBXProject section */ 263 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 264 | isa = PBXProject; 265 | attributes = { 266 | LastSwiftUpdateCheck = 1100; 267 | LastUpgradeCheck = 1100; 268 | }; 269 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 270 | compatibilityVersion = "Xcode 3.2"; 271 | developmentRegion = en; 272 | hasScannedForEncodings = 0; 273 | knownRegions = ( 274 | en, 275 | Base, 276 | ); 277 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 278 | productRefGroup = 79CB0D74FBA5647FC4F6E4FA77049248 /* Products */; 279 | projectDirPath = ""; 280 | projectRoot = ""; 281 | targets = ( 282 | E8103E1B96D1CC12737D61138D3A57BF /* GuardApp */, 283 | 1789571490BA84B79350DF88DA4590A4 /* Pods-GuardApp_Example */, 284 | ); 285 | }; 286 | /* End PBXProject section */ 287 | 288 | /* Begin PBXResourcesBuildPhase section */ 289 | C1A5AD32240F2191DF4080D96E88FBBC /* Resources */ = { 290 | isa = PBXResourcesBuildPhase; 291 | buildActionMask = 2147483647; 292 | files = ( 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | }; 296 | D8406EAA5F1FC7F0D4D60E3B93488FDD /* Resources */ = { 297 | isa = PBXResourcesBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | ); 301 | runOnlyForDeploymentPostprocessing = 0; 302 | }; 303 | /* End PBXResourcesBuildPhase section */ 304 | 305 | /* Begin PBXSourcesBuildPhase section */ 306 | 042CCEE0F134CFFD48E316EBCA8ED853 /* Sources */ = { 307 | isa = PBXSourcesBuildPhase; 308 | buildActionMask = 2147483647; 309 | files = ( 310 | 3D6751E64DD2954B3DF3A6EC2200232F /* Pods-GuardApp_Example-dummy.m in Sources */, 311 | ); 312 | runOnlyForDeploymentPostprocessing = 0; 313 | }; 314 | D462F7C50BDCBEE052B93E39D071D117 /* Sources */ = { 315 | isa = PBXSourcesBuildPhase; 316 | buildActionMask = 2147483647; 317 | files = ( 318 | A77D8CBBA7808E37BFB31D561F82504F /* GuardApp-dummy.m in Sources */, 319 | 7980AC3CF0D0DDA4D7F3D39580D32EDC /* LZAntiHelp.m in Sources */, 320 | ); 321 | runOnlyForDeploymentPostprocessing = 0; 322 | }; 323 | /* End PBXSourcesBuildPhase section */ 324 | 325 | /* Begin PBXTargetDependency section */ 326 | DD669E2A28C4C14ED255738A940EF624 /* PBXTargetDependency */ = { 327 | isa = PBXTargetDependency; 328 | name = GuardApp; 329 | target = E8103E1B96D1CC12737D61138D3A57BF /* GuardApp */; 330 | targetProxy = EC97E2B547D93ED216B2F74A921DD5B4 /* PBXContainerItemProxy */; 331 | }; 332 | /* End PBXTargetDependency section */ 333 | 334 | /* Begin XCBuildConfiguration section */ 335 | 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */ = { 336 | isa = XCBuildConfiguration; 337 | buildSettings = { 338 | ALWAYS_SEARCH_USER_PATHS = NO; 339 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 340 | CLANG_ANALYZER_NONNULL = YES; 341 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 342 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 343 | CLANG_CXX_LIBRARY = "libc++"; 344 | CLANG_ENABLE_MODULES = YES; 345 | CLANG_ENABLE_OBJC_ARC = YES; 346 | CLANG_ENABLE_OBJC_WEAK = YES; 347 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 348 | CLANG_WARN_BOOL_CONVERSION = YES; 349 | CLANG_WARN_COMMA = YES; 350 | CLANG_WARN_CONSTANT_CONVERSION = YES; 351 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 352 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 353 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 354 | CLANG_WARN_EMPTY_BODY = YES; 355 | CLANG_WARN_ENUM_CONVERSION = YES; 356 | CLANG_WARN_INFINITE_RECURSION = YES; 357 | CLANG_WARN_INT_CONVERSION = YES; 358 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 359 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 360 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 361 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 362 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 363 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 364 | CLANG_WARN_STRICT_PROTOTYPES = YES; 365 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 366 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 367 | CLANG_WARN_UNREACHABLE_CODE = YES; 368 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 369 | COPY_PHASE_STRIP = NO; 370 | DEBUG_INFORMATION_FORMAT = dwarf; 371 | ENABLE_STRICT_OBJC_MSGSEND = YES; 372 | ENABLE_TESTABILITY = YES; 373 | GCC_C_LANGUAGE_STANDARD = gnu11; 374 | GCC_DYNAMIC_NO_PIC = NO; 375 | GCC_NO_COMMON_BLOCKS = YES; 376 | GCC_OPTIMIZATION_LEVEL = 0; 377 | GCC_PREPROCESSOR_DEFINITIONS = ( 378 | "POD_CONFIGURATION_DEBUG=1", 379 | "DEBUG=1", 380 | "$(inherited)", 381 | ); 382 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 383 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 384 | GCC_WARN_UNDECLARED_SELECTOR = YES; 385 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 386 | GCC_WARN_UNUSED_FUNCTION = YES; 387 | GCC_WARN_UNUSED_VARIABLE = YES; 388 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 389 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 390 | MTL_FAST_MATH = YES; 391 | ONLY_ACTIVE_ARCH = YES; 392 | PRODUCT_NAME = "$(TARGET_NAME)"; 393 | STRIP_INSTALLED_PRODUCT = NO; 394 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 395 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 396 | SWIFT_VERSION = 5.0; 397 | SYMROOT = "${SRCROOT}/../build"; 398 | }; 399 | name = Debug; 400 | }; 401 | 3E85330002E5A6F930D561ED114F8858 /* Debug */ = { 402 | isa = XCBuildConfiguration; 403 | baseConfigurationReference = 1C4BB9EF4D8759EA6B7BC5228E989FC2 /* Pods-GuardApp_Example.debug.xcconfig */; 404 | buildSettings = { 405 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 406 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 407 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 408 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 409 | CURRENT_PROJECT_VERSION = 1; 410 | DEFINES_MODULE = YES; 411 | DYLIB_COMPATIBILITY_VERSION = 1; 412 | DYLIB_CURRENT_VERSION = 1; 413 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 414 | INFOPLIST_FILE = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-Info.plist"; 415 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 416 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 417 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 418 | MACH_O_TYPE = staticlib; 419 | MODULEMAP_FILE = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.modulemap"; 420 | OTHER_LDFLAGS = ""; 421 | OTHER_LIBTOOLFLAGS = ""; 422 | PODS_ROOT = "$(SRCROOT)"; 423 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 424 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 425 | SDKROOT = iphoneos; 426 | SKIP_INSTALL = YES; 427 | TARGETED_DEVICE_FAMILY = "1,2"; 428 | VERSIONING_SYSTEM = "apple-generic"; 429 | VERSION_INFO_PREFIX = ""; 430 | }; 431 | name = Debug; 432 | }; 433 | 725BB4000280B8829F7B6BA19E141F92 /* Debug */ = { 434 | isa = XCBuildConfiguration; 435 | baseConfigurationReference = C6101EA98001F105EEDC4F7C4E8D7759 /* GuardApp.debug.xcconfig */; 436 | buildSettings = { 437 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 438 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 439 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 440 | CURRENT_PROJECT_VERSION = 1; 441 | DEFINES_MODULE = YES; 442 | DYLIB_COMPATIBILITY_VERSION = 1; 443 | DYLIB_CURRENT_VERSION = 1; 444 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 445 | GCC_PREFIX_HEADER = "Target Support Files/GuardApp/GuardApp-prefix.pch"; 446 | INFOPLIST_FILE = "Target Support Files/GuardApp/GuardApp-Info.plist"; 447 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 448 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 449 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 450 | MODULEMAP_FILE = "Target Support Files/GuardApp/GuardApp.modulemap"; 451 | PRODUCT_MODULE_NAME = GuardApp; 452 | PRODUCT_NAME = GuardApp; 453 | SDKROOT = iphoneos; 454 | SKIP_INSTALL = YES; 455 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 456 | SWIFT_VERSION = 4.0; 457 | TARGETED_DEVICE_FAMILY = "1,2"; 458 | VERSIONING_SYSTEM = "apple-generic"; 459 | VERSION_INFO_PREFIX = ""; 460 | }; 461 | name = Debug; 462 | }; 463 | 94602DFE617AE3EE31C175424F6D1AD7 /* Release */ = { 464 | isa = XCBuildConfiguration; 465 | baseConfigurationReference = C922B1F98011DCE618CB5346E2E93582 /* GuardApp.release.xcconfig */; 466 | buildSettings = { 467 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 468 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 469 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 470 | CURRENT_PROJECT_VERSION = 1; 471 | DEFINES_MODULE = YES; 472 | DYLIB_COMPATIBILITY_VERSION = 1; 473 | DYLIB_CURRENT_VERSION = 1; 474 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 475 | GCC_PREFIX_HEADER = "Target Support Files/GuardApp/GuardApp-prefix.pch"; 476 | INFOPLIST_FILE = "Target Support Files/GuardApp/GuardApp-Info.plist"; 477 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 478 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 479 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 480 | MODULEMAP_FILE = "Target Support Files/GuardApp/GuardApp.modulemap"; 481 | PRODUCT_MODULE_NAME = GuardApp; 482 | PRODUCT_NAME = GuardApp; 483 | SDKROOT = iphoneos; 484 | SKIP_INSTALL = YES; 485 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 486 | SWIFT_VERSION = 4.0; 487 | TARGETED_DEVICE_FAMILY = "1,2"; 488 | VALIDATE_PRODUCT = YES; 489 | VERSIONING_SYSTEM = "apple-generic"; 490 | VERSION_INFO_PREFIX = ""; 491 | }; 492 | name = Release; 493 | }; 494 | CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */ = { 495 | isa = XCBuildConfiguration; 496 | buildSettings = { 497 | ALWAYS_SEARCH_USER_PATHS = NO; 498 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 499 | CLANG_ANALYZER_NONNULL = YES; 500 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 501 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 502 | CLANG_CXX_LIBRARY = "libc++"; 503 | CLANG_ENABLE_MODULES = YES; 504 | CLANG_ENABLE_OBJC_ARC = YES; 505 | CLANG_ENABLE_OBJC_WEAK = YES; 506 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 507 | CLANG_WARN_BOOL_CONVERSION = YES; 508 | CLANG_WARN_COMMA = YES; 509 | CLANG_WARN_CONSTANT_CONVERSION = YES; 510 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 511 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 512 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 513 | CLANG_WARN_EMPTY_BODY = YES; 514 | CLANG_WARN_ENUM_CONVERSION = YES; 515 | CLANG_WARN_INFINITE_RECURSION = YES; 516 | CLANG_WARN_INT_CONVERSION = YES; 517 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 518 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 519 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 520 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 521 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 522 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 523 | CLANG_WARN_STRICT_PROTOTYPES = YES; 524 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 525 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 526 | CLANG_WARN_UNREACHABLE_CODE = YES; 527 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 528 | COPY_PHASE_STRIP = NO; 529 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 530 | ENABLE_NS_ASSERTIONS = NO; 531 | ENABLE_STRICT_OBJC_MSGSEND = YES; 532 | GCC_C_LANGUAGE_STANDARD = gnu11; 533 | GCC_NO_COMMON_BLOCKS = YES; 534 | GCC_PREPROCESSOR_DEFINITIONS = ( 535 | "POD_CONFIGURATION_RELEASE=1", 536 | "$(inherited)", 537 | ); 538 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 539 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 540 | GCC_WARN_UNDECLARED_SELECTOR = YES; 541 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 542 | GCC_WARN_UNUSED_FUNCTION = YES; 543 | GCC_WARN_UNUSED_VARIABLE = YES; 544 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 545 | MTL_ENABLE_DEBUG_INFO = NO; 546 | MTL_FAST_MATH = YES; 547 | PRODUCT_NAME = "$(TARGET_NAME)"; 548 | STRIP_INSTALLED_PRODUCT = NO; 549 | SWIFT_COMPILATION_MODE = wholemodule; 550 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 551 | SWIFT_VERSION = 5.0; 552 | SYMROOT = "${SRCROOT}/../build"; 553 | }; 554 | name = Release; 555 | }; 556 | D2381F2C9FD1D1EADA278C81A210FD10 /* Release */ = { 557 | isa = XCBuildConfiguration; 558 | baseConfigurationReference = B6A1338FF206CBE797820A8F6E29752D /* Pods-GuardApp_Example.release.xcconfig */; 559 | buildSettings = { 560 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 561 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 562 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 563 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 564 | CURRENT_PROJECT_VERSION = 1; 565 | DEFINES_MODULE = YES; 566 | DYLIB_COMPATIBILITY_VERSION = 1; 567 | DYLIB_CURRENT_VERSION = 1; 568 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 569 | INFOPLIST_FILE = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example-Info.plist"; 570 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 571 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 572 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 573 | MACH_O_TYPE = staticlib; 574 | MODULEMAP_FILE = "Target Support Files/Pods-GuardApp_Example/Pods-GuardApp_Example.modulemap"; 575 | OTHER_LDFLAGS = ""; 576 | OTHER_LIBTOOLFLAGS = ""; 577 | PODS_ROOT = "$(SRCROOT)"; 578 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 579 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 580 | SDKROOT = iphoneos; 581 | SKIP_INSTALL = YES; 582 | TARGETED_DEVICE_FAMILY = "1,2"; 583 | VALIDATE_PRODUCT = YES; 584 | VERSIONING_SYSTEM = "apple-generic"; 585 | VERSION_INFO_PREFIX = ""; 586 | }; 587 | name = Release; 588 | }; 589 | /* End XCBuildConfiguration section */ 590 | 591 | /* Begin XCConfigurationList section */ 592 | 231DDC1EBAB111B4C21156324D140E55 /* Build configuration list for PBXNativeTarget "GuardApp" */ = { 593 | isa = XCConfigurationList; 594 | buildConfigurations = ( 595 | 725BB4000280B8829F7B6BA19E141F92 /* Debug */, 596 | 94602DFE617AE3EE31C175424F6D1AD7 /* Release */, 597 | ); 598 | defaultConfigurationIsVisible = 0; 599 | defaultConfigurationName = Release; 600 | }; 601 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 602 | isa = XCConfigurationList; 603 | buildConfigurations = ( 604 | 25AD9454612BF454A1E3DC4CD4FA8C6D /* Debug */, 605 | CA547D2C7E9A8A153DC2B27FBE00B112 /* Release */, 606 | ); 607 | defaultConfigurationIsVisible = 0; 608 | defaultConfigurationName = Release; 609 | }; 610 | AB5E9165056283434BE61CAC3A893093 /* Build configuration list for PBXNativeTarget "Pods-GuardApp_Example" */ = { 611 | isa = XCConfigurationList; 612 | buildConfigurations = ( 613 | 3E85330002E5A6F930D561ED114F8858 /* Debug */, 614 | D2381F2C9FD1D1EADA278C81A210FD10 /* Release */, 615 | ); 616 | defaultConfigurationIsVisible = 0; 617 | defaultConfigurationName = Release; 618 | }; 619 | /* End XCConfigurationList section */ 620 | }; 621 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 622 | } 623 | --------------------------------------------------------------------------------