Quantcast
Channel: 睿论坛 - 最新话题
Viewing all articles
Browse latest Browse all 5702

root app 飞行模式

$
0
0

@dangzhuohan wrote:

需求:基于Root权限app,不使用插件实现飞行模式开关。

操作步骤:
1.https://blog.csdn.net/zrhloveswallow/article/details/47972875 这种以通知方式实现的已经试过,可用,但是觉得麻烦,希望通过app单独实现。
2.https://blog.csdn.net/donwei8/article/details/51788866?locationNum=4&fps=1 使用以dlopen加载私有库的方法过程中,私有库可以成功打开,但是获取函数地址后,调用直接crash。代码:

#define SBSERVPATH “/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices”
#define UIKITPATH “/System/Library/Frameworks/UIKit.framework/UIKit”

@implementation MSToolAirplaneMgr

  • (void)setIsInAirplaneMode:(BOOL)mode {
    mach_port_t *thePort;
    void *uikit = dlopen(UIKITPATH, RTLD_LAZY);
    if (!uikit) {
    NSLog(@“uikit----->error:%s”, dlerror());
    return;
    }
    int (*SBSSpringBoardServerPort)(void) = dlsym(uikit, “SBSSpringBoardServerPort”);
    if (dlerror() != NULL) {
    NSLog(@“SBSSpringBoardServerPort----->error:%s”, dlerror());
    }
    thePort = SBSSpringBoardServerPort();
    dlclose(uikit);
    NSLog(@“uikit success”);

    // Link to SBSetAirplaneModeEnabled
    void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
    if (!sbserv) {
    NSLog(@“sbserv----->error:%s”, dlerror());
    return;
    }
    int (setAPMode)(mach_port_t port, BOOL status) = dlsym(sbserv, “SBSetAirplaneModeEnabled”);
    if (dlerror() != NULL) {
    NSLog(@“SBSSpringBoardServerPort----->error:%s”, dlerror());
    }
    setAPMode(thePort, mode);
    dlclose(sbserv);
    }

crash日志:
Nov 8 17:32:09 iPhone SpringBoard[96] <Warning>: Failed to setpriority() on <FBApplicationProcess: 0x139c0b740; bash; pid: 1057>: Unknown error: -1 (-1)

Nov 8 17:32:14 iPhone SpringBoard[96] <Warning>: HW kbd: Failed to set (null) as keyboard focus

Nov 8 17:32:14 iPhone SpringBoard[96] <Warning>: Application ‘UIKitApplication:com.morgen.MSTransform[0xbca1]’ crashed.

各位大神有经验的话可以帮我提供下思路、有代码的话更好~

Posts: 4

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 5702

Trending Articles