iOS逆向工程之获取屏幕是否锁屏,解锁屏幕

// 头文件相关函数
@interface SBLockScreenManager : XXUnknownSuperclass <SBLockScreenViewControllerDelegate, SBUIBiometricEventObserver, SBUIBiometricEventMonitorDelegate> {
    BOOL _isUILocked; // 读取这个变量可以判断当前是否锁屏状态
}
+ (id)sharedInstance;
- (void)unlockUIFromSource:(int)source withOptions:(id)options;
- (void)lockUIFromSource:(int)source withOptions:(id)options;
- (_Bool)attemptUnlockWithPasscode:(id)arg1; // 密码解锁
@end

实验:
PiaoYuns-iPad:~ root# cycript -p SpringBoard
cy# var lockScreenManager = [SBLockScreenManager sharedInstance]
#"<SBLockScreenManager: 0x1780ab5e0>"
cy# [lockScreenManager unlockUIFromSource: 0 withOptions: nil]
cy# [lockScreenManager lockUIFromSource: 1 withOptions: nil]
cy# [lockScreenManager isUILocked]
true
cy# [lockScreenManager  attemptUnlockWithPasscode: @"1111"]
false
cy# [lockScreenManager  attemptUnlockWithPasscode: @"8888"]
true

// Tweaks判断是否锁屏状态
static bool isLocked() {    
    if (%c(SBLockScreenManager)){
        SBLockScreenManager * lockScreenManager = (SBLockScreenManager*) [%c(SBLockScreenManager) sharedInstance];
        return [lockScreenManager isUILocked];
    }
    return NO;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容