int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
因?yàn)槊钚泄ぞ卟恍枰猆I界面批旺,所以main函數(shù)改成
int main(int argc, char * argv[]) {
@autoreleasepool {
return 0;
}
}
App架構(gòu)類型
int main(int argc, char * argv[]) {
@autoreleasepool {
NSString *appPath = @"app路徑";
NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:appPath];
int length = sizeof(uint32_t);
//讀取最前面的4個(gè)字節(jié)(Magic number涎拉, 魔數(shù)涎才, 用來標(biāo)識文件類型)
NSData *magicData = [handle readDataOfLength:length];
//魔數(shù),用來標(biāo)識文件類型
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架構(gòu)文件\n");
} else {
printf("讀取失敗");
}
printf("magic number = 0x%x\n", magicNumber);
[handle closeFile];
return 0;
}
}
生成的可執(zhí)行文件拖入iPad以下文件夾
使用
權(quán)限出問題
簽名-給可執(zhí)行文件簽上一定的權(quán)限,讓它可以訪問其他App的可執(zhí)行文件
通過ldid給可執(zhí)行文件簽名(僅權(quán)限)
代表追加到文件尾部泪勒,>代表覆蓋昼蛀。
cd到存放可執(zhí)行文件的文件夾中導(dǎo)出權(quán)限文件
得到
雙擊打開可以看到權(quán)限很少
找一個(gè)包含所有權(quán)限的可執(zhí)行文件(比如SpringBoard),導(dǎo)出權(quán)限文件
然后將這個(gè)包含所有權(quán)限的權(quán)限文件導(dǎo)入到我們需要增加權(quán)限的權(quán)限文件(將兩個(gè)權(quán)限文件放在同一個(gè)文件夾中)
執(zhí)行操作
刪除原來的testCommand.entitlements文件圆存,重新導(dǎo)出權(quán)限文件可以看到權(quán)限
重新簽好的權(quán)限可執(zhí)行文件重新拖入iPad
chmod +x /usr/bin/testCommand
添加腳本叼旋,使得生成的執(zhí)行文件夾在工程目錄下