com.apple.Preferences

前言


Flipswitch/Switches/Autolock.x

Flipswitch/Switches/Wifi.x
Flipswitch/Switches/WifiProxy.x
Flipswitch/Switches/VPN.x

正文

可以考虑加上签名

[Release] Disable autolock on AC - Disables Auto-lock when plugged-in (BigBoss, free)

  • iPhone:/Library/MobileSubstrate/DynamicLibraries root# ls -lrt
-rw-r--r-- 1 root   wheel      57 Oct 17  2015 DisableautolockonACpower.plist
-rwxr-xr-x 1 root   wheel  132096 Oct 17  2015 DisableautolockonACpower.dylib*



  • com.pawelgil.disableautolockonacpower
  • iPhone:/Library/MobileSubstrate/DynamicLibraries root# find / -amin -1

<!-- http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=disableautolockonacpowerDp -->

/private/etc/apt/sources.list.d/cydia.list


/private/var/mobile/Library/Caches/com.saurik.Cydia/sources.list

/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/UserSettings.plist

/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.lsd.iconscache/Library/Caches/com.apple.IconsCache/F6DF118A-51FB-36BB-9951-E4A53E4A47F2-8C96354F-D66E-379A-A4D9-B3C2A1FBE01D

/private/var/db/stash/_.UmC91h/DynamicLibraries/DisableautolockonACpower.dylib
/private/var/db/stash/_.UmC91h/DynamicLibraries/DisableautolockonACpower.plist


/private/var/installd/Library/MobileInstallation/DiskImagesInfo.plist
/private/var/keybags/systembag.kb
/private/var/lib/apt/extended_states
/private/var/lib/dpkg/info/com.pawelgil.disableautolockonacpower.list
/private/var/lib/dpkg/info/com.pawelgil.disableautolockonacpower.md5sums
/private/var/lib/dpkg/status
/private/var/lib/dpkg/status-old


/private/var/mobile/Library/Preferences/com.apple.WebUI.plist
/private/var/mobile/Library/Preferences/com.apple.aggregated.plist
/private/var/mobile/Library/SpringBoard/DesiredIconState.plist
/private/var/mobile/Library/SpringBoard/IconState.plist
/private/var/mobile/Library/SpringBoard/LockBackgroundThumbnail.jpg
/private/var/mobile/Library/UserConfigurationProfiles/EffectiveUserSettings.plist
/private/var/mobile/Library/UserConfigurationProfiles/PublicInfo/PublicEffectiveUserSettings.plist
/private/var/mobile/Library/UserConfigurationProfiles/UserSettings.plist
/private/var/root/Library/Caches/locationd/clients.plist
/private/var/tmp/SBLastRestoreIdentifier.KwfK2S


  • /private/var/lib/dpkg/info/com.pawelgil.disableautolockonacpower.list

iPhone:~ root# cat  /private/var/lib/dpkg/info/com.pawelgil.disableautolockonacpower.list
/.
/Library
/Library/MobileSubstrate
/Library/MobileSubstrate/DynamicLibraries
/Library/MobileSubstrate/DynamicLibraries/DisableautolockonACpower.dylib
/Library/MobileSubstrate/DynamicLibraries/DisableautolockonACpower.plist


<!-- iPhone:/private/var/lib/dpkg/info root# ls -lrt com.pawelgil*
-rw-r--r-- 1 root wheel 212 Mar 31 19:03 com.pawelgil.disableautolockonacpower.md5sums
-rw-r--r-- 1 root wheel 225 Mar 31 19:03 com.pawelgil.disableautolockonacpower.list
 -->
  • /Library/MobileSubstrate/DynamicLibraries/DisableautolockonACpower.plist
{ Filter = { Bundles = ( "com.apple.springboard" ); }; }


  • EntryPoint

int EntryPoint() {
    objc_getClass("SBUIController");
    r0 = MSHookMessageEx();
    return r0;
}

  • iPhone:~ root# ls -lrt /var/mobile/Library/Preferences
autoLockValue
[[r0 sharedConnection] setValue:r6 forSetting:@"maxInactivity"];


  • sub_7c60
int sub_7c60(int arg0) {
    stack[2043] = r4;
    *((sp - 0x14) + 0xfffffffffffffffc) = r8;
    (*0x8078)(arg0);
    r6 = [arg0 isOnAC];
    r0 = *0x807c;
    if (r0 == 0x0) {
            r0 = objc_getClass("MCProfileConnection");
            *0x807c = r0;
    }
    r5 = [[r0 sharedConnection] effectiveValueForSetting:@"maxInactivity"];
    if ((r6 & 0xff) != 0x0) {
            [[NSUserDefaults standardUserDefaults] setObject:r5 forKey:@"com.pawelgil.disableautolockonacpower"];
            [r5 release];
            r0 = *0x807c;
            if (r0 == 0x0) {
                    r0 = objc_getClass("MCProfileConnection");
                    *0x807c = r0;
            }
            r4 = [r0 sharedConnection];
            [NSNumber numberWithInt:0x80000000 ^ 0xffffffff];
            r1 = @selector(setValue:forSetting:);
            r0 = r4;
    }
    else {
            if ([r5 integerValue] != (0x80000000 ^ 0xffffffff)) {
                    [[NSUserDefaults standardUserDefaults] setValue:r5 forKey:@"com.pawelgil.disableautolockonacpower"];
            }
            r6 = [[NSUserDefaults standardUserDefaults] objectForKey:@"com.pawelgil.disableautolockonacpower"];
            r0 = *0x807c;
            if (r0 == 0x0) {
                    r0 = objc_getClass("MCProfileConnection");
                    *0x807c = r0;
            }
            [[r0 sharedConnection] setValue:r6 forSetting:@"maxInactivity"];
            [r6 release];
            r0 = r5;
            r1 = @selector(release);
    }
    r0 = objc_msgSend(r0, r1);
    return r0;
}

MCProfileConnection

  • cydia 分析MCProfileConnection


iPhone:/Library/MobileSubstrate/DynamicLibraries root# cycript -p SpringBoard

cy#  objc_getClass("MCProfileConnection")
MCProfileConnection
cy# ÆMCProfileConnection sharedConnectionÅ 
#"<MCProfileConnection: 0x1700d7c30>"



cy# [0x1700d7c30 _ivarDescription].toString()
`<__NSCFNumber: 0xb000001700d7c305>:
in __NSCFNumber:
in NSNumber:
in NSValue:
in NSObject:
\tisa (Class): __NSCFNumber (isa, 0x0)`
cy# 

  • iOS10-Runtime-Headers/PrivateFrameworks/ManagedConfiguration.framework/MCProfileConnection.h
#import <ManagedConfiguration/ManagedConfiguration.h>


   Image: /System/Library/PrivateFrameworks/ManagedConfiguration.framework/ManagedConfiguration



        int currentAutoLockValue = [[[[MCProfileConnection sharedConnection] effectiveParametersForValueSetting:@"maxInactivity"] objectForKey:@"value"] intValue];

        toggledValue = [NSNumber numberWithInt:INT_MAX];

    [[MCProfileConnection sharedConnection] setValue:toggledValue forSetting:@"maxInactivity"];



  • iOS10-Runtime-Headers/PrivateFrameworks/ManagedConfiguration.framework/MCProfileConnection.h
+ (id)sharedConnection;

- (void)_passcodeDidChange;

- (id)managedAppIDs;

- (id)managedWiFiNetworkNames;

- (void)lockDevice;


- (void)lockDeviceImmediately:(bool)arg1;





  • screen is locked
UserEventAgent :  screen is locked

identityservicesd :System did lock

sharingd : Screen state changed to on


MSHookMessageEx

replace Objective-C message implementations

  • void MSHookMessageEx(Class _class, SEL message, IMP hook, IMP *old);

NSString *(*oldDescription)(id self, SEL _cmd);

// implicit self and _cmd are explicit with IMP ABI
NSString *newDescription(id self, SEL _cmd) {
    NSString *description = (*oldDescription)(self, _cmd);
    description = [description stringByAppendingString:@"!"];
    return description;
}

MSHookMessageEx(
    [NSObject class], @selector(description),
    &newDescription, &oldDescription
);

DisplayController

  • DisplayController.h
#import <Preferences/Preferences.h>


%hook DisplayController

- (NSMutableArray *)specifiers
{


	NSMutableArray *specifiers = %orig();

		for (PSSpecifier *spec in specifiers) {

		identifier = [spec propertyForKey:@"id"];

		if ([identifier isEqualToString:@"AUTO_BRIGHTNESS"]) {
			shouldMove = NO;
		}
		if ([identifier isEqualToString:@"DISPLAY_ZOOM_GROUP"]) {

			index1 = [specifiers indexOfObject:spec];
		}
		else if ([identifier isEqualToString:@"MAGNIFY"]) {

			index2 = [specifiers indexOfObject:spec];
		}
	}



}

%end


%ctor
{
	const char *pref = "/System/Library/PrivateFrameworks/Preferences.framework/Preferences";

	MSHookFunction(MGCopyAnswer, MSHake(MGCopyAnswer));

	MSImageRef ref = MSGetImageByName(pref);

	const char *func1 = "___PSGetMagnifyModes_block_invoke";

	PSGetMagnifyModes = (NSArray *(*)())MSFindSymbol(ref, func1);

	MSHookFunction((void *)PSGetMagnifyModes, (void *)hax_PSGetMagnifyModes, (void **)&original_PSGetMagnifyModes);
	%init;
}


cycript 分析Preferences

  • UIApp
iPhone:/System/Library/PreferenceBundles root# cycript -p Preferences
cy# [UIApp description]
@"<PreferencesAppController: 0x151d34c20>"

<!-- https://github.com/coolstar/iOS-8.3-Preferences-Headers/blob/master/PreferencesAppController.h -->

<!-- https://github.com/coolstar/iOS-8.3-Preferences-Headers/blob/master/Preferences.h -->

#import "DisplayController.h"

  • cy# UIApp.keyWindow.recursiveDescription().toString()
  • [[[UIWindow keyWindow] rootViewController] _printHierarchy].toString()

cy#  [[[UIWindow keyWindow] rootViewController] _printHierarchy].toString()
`<PSSplitViewController 0x10023e680>, state: appeared, view: <UILayoutContainerView 0x10023eef0>
   | <UINavigationController 0x101019c00>, state: appeared, view: <UILayoutContainerView 0x1003446f0>
   |    | <PSUIPrefsListController 0x101023000>, state: disappeared, view: <PSListContainerView 0x100358540> not in the window
   |    | <PSUIPrefsRootController 0x101016800>, state: appeared, view: <UILayoutContainerView 0x10026b9b0>
   |    |    | <PSUIDisplayController 0x10090c200>, state: disappeared, view: <PSListContainerView 0x10027d7e0> not in the window
   |    |    | <PSListItemsController 0x100820200>, state: appeared, view: <PSListContainerView 0x100247220>`

  • cy# [#0x100820200 _ivarDescription].toString()
\t_sceneSettingsGeometryMutationDiffInspector (UIApplicationSceneSettingsDiffInspector*): <UIApplicationSceneSettingsDiffInspector: 0x170032f20>


see also

转载请注明: > com.apple.Preferences

在操作过程或者文章有问题的话欢迎在 原文 里提问或指正。

赞赏支持

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少
最近的文章

AVCaptureMetadataOutput

前言 本文主要研究GoogleMobileVision Creating the Face Detector Pipeline GoogleMVDataOutput contains multiple instances of AVCaptureDataOutput that extend AVCaptureVideoDataOutput to allow you to integrate face tracking with your AVFoundation ...…

iOSre继续阅读
更早的文章

com.rpetrich.rocketbootstrapd

前言让你学会去掉对rocketbootstrap 的Depends依赖 本文的目的,是想在自己的deb 自带rocketbootstrapd,避免每次部署都从bigBoss 源更新。 1) 研究https://github.com/rpetrich/RocketBootstrap/blob/54cdad74cc532ceeb4e7239d201c218bb7dfe346/layout/DEBIAN/postinst2) RocketBootstrap/layout/DEBIAN...…

iOSre继续阅读
更多