《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
查看: 774|回复: 7

如何通过iOS代码实现命令调用iPhone关机重启???

[复制链接]

8

主题

30

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
发表于 2019-11-14 19:12:09 | 显示全部楼层 |阅读模式
现在要在一个root应用中通过iOS代码实现关机重启iPhone,使用system("reboot")没起作用,请问该如何实现???cf

回复

使用道具 举报

118

主题

496

帖子

2031

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2031
发表于 2019-11-15 01:18:58 | 显示全部楼层
先测试一下在本机调用 reboot 命令能否重启,如果可以重启,那么用代码调用 system("reboot") 的效果肯定是一样的,你那调用不行,可能是权限问题,处理一下权限即可。
我刚才试了 reboot 命令可以重启,halt 命令可以关机,手机是 iOS 13.1.3,iPhone SE。
/usr/sbin/reboot,/sbin/halt,用 IDA 分析一下这两个文件就能知道原理了。
回复

使用道具 举报

8

主题

30

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2019-11-19 15:34:39 | 显示全部楼层
#import <dlfcn.h>
typedef int (*my_system) (const char *str);
int call_system(const char *str){
   
    //动态库路径
    char *dylib_path = "/usr/lib/libSystem.dylib";
    //打开动态库
    void *handle = dlopen(dylib_path, RTLD_GLOBAL | RTLD_NOW);
    if (handle == NULL) {
        //打开动态库出错
        fprintf(stderr, "%s\n", dlerror());
    } else {
        //获取 system 地址
        my_system system = dlsym(handle, "system");
        
        //地址获取成功则调用
        if (system) {
            
            int ret = system(str);
            return ret;
        }
        dlclose(handle); //关闭句柄
    }
   
    return -1;
}

call_system("/usr/sbin/reboot");

我这样写的,但是没有成功重启,请问是为什么?
回复

使用道具 举报

118

主题

496

帖子

2031

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2031
发表于 2019-11-19 20:23:10 | 显示全部楼层
向着标杆直跑 发表于 2019-11-19 15:34
#import
typedef int (*my_system) (const char *str);
int call_system(const char *str){

和你说过是权限问题了。我刚用你发的代码测了,可以重启。用 MonkeyDev 写一个命令行程序测试,你别用普通的 app 去试啊,root 权限了解下吧。
回复

使用道具 举报

8

主题

30

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2019-11-19 20:31:56 | 显示全部楼层
德哥,我的APP绝对是root权限
回复

使用道具 举报

8

主题

49

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2019-11-19 22:10:44 | 显示全部楼层
楼主发的代码,我测了,可以重启。iOS 12.4, iPhone 6s
回复

使用道具 举报

8

主题

30

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
 楼主| 发表于 2019-11-20 16:16:52 | 显示全部楼层
lion 发表于 2019-11-19 22:10
楼主发的代码,我测了,可以重启。iOS 12.4, iPhone 6s

我的iPhone 6s,系统9.1,APP是root权限,你确定你的可行
回复

使用道具 举报

8

主题

49

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2019-11-22 00:11:10 | 显示全部楼层
当然可以,亲自测试了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2020-8-9 10:25 , Processed in 0.021438 second(s), 20 queries .

iOS安全论坛

© 2017-2020 iOS Hacker Inc. 京ICP备17074153号-2

快速回复 返回顶部 返回列表