Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS 11 issue with LMAppController #4

Open
ElielCohen opened this issue Jul 12, 2017 · 20 comments
Open

iOS 11 issue with LMAppController #4

ElielCohen opened this issue Jul 12, 2017 · 20 comments

Comments

@ElielCohen
Copy link

The allInstalledApplications method does not work anymore on the latest beta of iOS 11, is it a removal of private API by Apple ? Any idea on how to fix this ?

@profburke
Copy link
Owner

Thanks for pointing this out to me. At the moment, no idea and, not surprisingly, https://github.com/nst/iOS-Runtime-Headers doesn't have the iOS 11 headers yet.

I'll look into it as soon as I can; probably won't get to it until this weekend.

@ElielCohen
Copy link
Author

Any news :) ??

@profburke
Copy link
Owner

Not much I'm afraid.

Based on poking around with the Runtime Browser (https://github.com/nst/RuntimeBrowser.git) it looks like the call is still part of iOS 11. And the app runs fine using iOS 11 in the simulator. But as you've noticed, on an actual device, the call returns 0 apps.

I also tried replacing allInstalledApplications with allApplications. But that doesn't make any difference.

I'm going to have to do some more digging around.

@profburke
Copy link
Owner

I'm going to leave this open---since it's not solved.

But after spending some time looking into this, I am stumped. So it's likely that this project is dead. I'll put a note to that effect in the README.

If anybody has any thoughts about a fix, I'd very much appreciate them.

@njvcdan
Copy link

njvcdan commented Sep 12, 2017

Does anyone have an update on getting LSApplicationProxy to work in iOS 11?

@profburke
Copy link
Owner

Now that the GM for iOS 11 is out, I'll try and make some time to go through the headers and see if there are any methods that look promising as a work-around. But my guess is that there won't be.

@LeoNatan
Copy link

This API was left for so long because Apple used it to determine which plugins (extensions) should be displayed when presenting a share sheet. Try investigating how that works in iOS 11.

@leonfu
Copy link

leonfu commented Sep 26, 2017

Anyone tried the MCM API such as MCManagedAppManager?

@twitteriosdevelopment
Copy link

Hey, launching apps by bundle ID still work. However you must remember the bundle id which is not helpful.

@njvcdan
Copy link

njvcdan commented Oct 10, 2017

Do you mean using an openUrl call on the URL scheme? Or what method of opening an app by bundle ID do you mean?

@twitteriosdevelopment
Copy link

[LMAppController sharedInstance] openAppWithBundleIdentifier: com.apple.AppStore
Nope, this method is the same private api. I reported a bug to apple to do with this because an attacker could use this method to open app apps endlessly causing your phone to heat up etc...

The code above does work because its basically how an app is launched normally from the home screen. If you want the icon etc or list of ALL apps, you need the com.apple.springboard entitlement.
Otherwise you need each bundle id to launch it with.

@julien290
Copy link

What is the best way to add this entitlement ? Creating a . entitlements file in the project ?
Thanks in advance.

@twitteriosdevelopment
Copy link

No. It is not as simple as that. You can add that entitlement and it will work on Jailbroken devices only. For stock iOS the entitlement needs to be signed by Apple. Apple won't give you the entitlement
because with the entitlement you gain full root access to the springboard. For this to work on iOS 11, you would need to find a new private api which Apple hasn't closed off.

@iradization
Copy link

Hi, I'm trying to figure out how did _LSApplicationWorkspace changed in iOS 11 by looking at it's containing binary. after downloading the image for iOS11, I looked for the binary in it's containing framework
/Volumes/Tigris15A432.D10D101OS/System/Library/Frameworks/MobileCoreServices.framework but couldn't find any mach-o file in this folder ... any idea where can I get it from ?

@yangfangkuo
Copy link

we had foud new method called " MobileContainerManager" can get a result is installed(or installing) with no install with bundle id ,
'''
void* lib = dlopen("/System/Library/PrivateFrameworks/MobileContainerManager.framework/MobileContainerManager",RTLD_NOW);

if (iOS11) {
    Class MBAppManager = NSClassFromString(@"MCMAppDataContainer");
    NSError  * error ;
    id contentApp = [MBAppManager performSelector:@selector(containerWithIdentifier:error:) withObject:bunldID withObject:error];
    if (contentApp) {
        contentApp = nil;
        //installed or installing
    }else{
       // no installed
   }

}
'''
but can not get the version current installed on device
my English is poor ,sorry

@adevios
Copy link

adevios commented Jun 7, 2018

Guys, any ideas about iOS 12 ?

@iradization
Copy link

It seems like the MBAppManager solution sealed with entitlements in iOS 12... perhaps someone found a different solution ?

@adevios
Copy link

adevios commented Jun 15, 2018

@iradization any thoughts about it?

@Superdaren
Copy link

@alychkouski Guys, Did you find the relevant method?

@CoderFeiSu
Copy link

Is there a solution for iOS12?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests