【iOS逆向】命令行工具封装、使用和权限签名

image.png

int main(int argc, char * argv[]) {

@autoreleasepool {

    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

因为命令行工具不需要UI界面,所以main函数改成

int main(int argc, char * argv[]) {

@autoreleasepool {

    return 0;

}

}

App架构类型

int main(int argc, char * argv[]) {

@autoreleasepool {

    NSString *appPath = @"app路径";

    NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:appPath];

    int length = sizeof(uint32_t);

    //读取最前面的4个字节(Magic number, 魔数, 用来标识文件类型)

    NSData *magicData = [handle readDataOfLength:length];

    //魔数,用来标识文件类型

    uint32_t magicNumber;

    [magicData getBytes:&magicNumber length:length];

    if (magicNumber == FAT_CIGAM || magicNumber == FAT_MAGIC) {

        //大小端(高、低地址读取)

        printf("FAT文件\n");

    } else if (magicNumber == MH_CIGAM || magicNumber == MH_MAGIC) {

        printf("非64bit文件\n");

    } else if (magicNumber == FAT_CIGAM_64 || magicNumber == FAT_MAGIC_64) {

        printf("64bit架构文件\n");

    } else {

        printf("读取失败");

    }

    printf("magic number = 0x%x\n", magicNumber);

    [handle closeFile];

    return 0;

}

}

生成的可执行文件拖入iPad以下文件夹

image.png

使用

image.png
image.png

权限出问题

签名-给可执行文件签上一定的权限,让它可以访问其他App的可执行文件

通过ldid给可执行文件签名(仅权限)

image.png

代表追加到文件尾部,>代表覆盖。

cd到存放可执行文件的文件夹中导出权限文件

image.png

得到

image.png

双击打开可以看到权限很少

image.png

找一个包含所有权限的可执行文件(比如SpringBoard),导出权限文件

image.png
image.png

然后将这个包含所有权限的权限文件导入到我们需要增加权限的权限文件(将两个权限文件放在同一个文件夹中)

执行操作

image.png

删除原来的testCommand.entitlements文件,重新导出权限文件可以看到权限

image.png

重新签好的权限可执行文件重新拖入iPad

image.png

chmod +x /usr/bin/testCommand

添加脚本,使得生成的执行文件夹在工程目录下

image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,390评论 0 27
  • 主要讲述 cp、mkdir、rm、tac、df 五个命令主要功能的模拟实现代码。让读者学会使用 strace 来跟...
    batbattle阅读 4,522评论 0 1
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,820评论 3 44
  • 亲爱的自己: 你是不是真的该心无旁念的静下心,晚自习并不单单是为了顺应父母的意思,也不是让你来聊人生,你现在期盼的...
    氢氰清阅读 1,648评论 0 1
  • 什么时候已然是秋天了,当晨起急匆匆赶去上班的路上,不经意一瞥路边草地上湿漉漉氤氲一片,我才似觉得,时间,它以冰...
    杂蔓阅读 2,905评论 0 0

友情链接更多精彩内容