Xcode脚本实现App以Root权限启动

实现过程

1.main函数中加入setuid(0);

Xcode脚本实现App以Root权限启动

2.新建脚本,修改脚本中的Root_Password为电脑登录密码。

Xcode脚本实现App以Root权限启动

3.需要build或profile两次,打包成deb,拷贝到手机安装(即可以root方式启动)【PS:因为xxx.app文件还没完全生成就会被拷贝过来了,所以需要build或profile两次,顺便问一下有什么好的解决方案没】

4.脚本实现了从xxx.app文件打包为deb;安装到手机后修改.app和可执行文件所有权为root.wheel,可执行文件设置提权标志位,设置6755权限。

Xcode脚本

  1. #main函数中加入setuid(0);  
  2. #打包成deb,安装到/Applications/目录下  
  3. #修改.app和可执行文件所有权为root.wheel,可执行文件设置提权标志位,设置6755权限。即可以root方式启动  
  4. #需要build两次才能打出正确的包(因为.app文件还没完全生成就被拷贝过来了)  
  5.   
  6. #设置sudo密码  
  7. Root_Password="xxx"  
  8.   
  9. Package_Path=${BUILT_PRODUCTS_DIR}/RunAsRootPackage  
  10. #清理  
  11. rm -f -r "${Package_Path}"  
  12. rm -f -r "${Package_Path}.deb"  
  13.   
  14. #新建  
  15. mkdir "${Package_Path}"  
  16. mkdir "${Package_Path}/Applications"  
  17. mkdir "${Package_Path}/DEBIAN"  
  18.   
  19. cp -R "${BUILT_PRODUCTS_DIR}/${PROJECT_NAME}.app" "${Package_Path}/Applications/"  
  20. touch "${Package_Path}/DEBIAN/control"  
  21. touch "${Package_Path}/DEBIAN/postinst"  
  22.   
  23. #获取BundleID  
  24. PRODUCT_BUNDLE_IDENTIFIER=sed -n '/PRODUCT_BUNDLE_IDENTIFIER/{s/PRODUCT_BUNDLE_IDENTIFIER = //;s/;//;s/^[[:space:]]*//;p;q;}' ./${PROJECT_NAME}.xcodeproj/project.pbxproj  
  25.   
  26. # 覆盖内容  
  27. echo "Package: ${PRODUCT_BUNDLE_IDENTIFIER} 
  28. Name: ${PROJECT_NAME} 
  29. Version: 0.0.1 
  30. Architecture: iphoneos-arm 
  31. Description: An awesome application! 
  32. Maintainer:  
  33. Author:  
  34. Section: Utilities 
  35. " > "${Package_Path}/DEBIAN/control"  
  36.   
  37. echo "chown root.wheel /Applications/${PROJECT_NAME}.app 
  38. #chmod +s /Applications/${PROJECT_NAME}.app 
  39. #chmod 6755 /Applications/${PROJECT_NAME}.app 
  40. chown root.wheel /Applications/${PROJECT_NAME}.app/${PRODUCT_NAME} 
  41. chmod +s /Applications/${PROJECT_NAME}.app/${PRODUCT_NAME} 
  42. chmod 6755 /Applications/${PROJECT_NAME}.app/${PRODUCT_NAME} 
  43. su mobile -c uicache 
  44. killall "${PROJECT_NAME}" || true 
  45. " > "${Package_Path}/DEBIAN/postinst"  
  46.   
  47. #echo "$Root_Password" | sudo -S chmod +s "${Package_Path}"  
  48. echo "$Root_Password" | sudo -S chmod -R 0755 "${Package_Path}"  
  49.   
  50. echo "$Root_Password" | sudo -S chmod -R 0755 "${Package_Path}/DEBIAN"  
  51.   
  52. echo "$Root_Password" | sudo -S chmod -R 0755 "${Package_Path}/Applications"  
  53. echo "$Root_Password" | sudo -S chmod -R 0755 "${Package_Path}/Applications/${PROJECT_NAME}.app"  
  54.   
  55. #echo "$Root_Password" | sudo -S chmod +s "${Package_Path}/Applications/${PROJECT_NAME}.app/${PROJECT_NAME}"  
  56. #echo "$Root_Password" | sudo -S chmod 6755 "${Package_Path}/Applications/${PROJECT_NAME}.app/${PROJECT_NAME}"  
  57.   
  58. echo "$Root_Password" | sudo -S dpkg-deb -b "${Package_Path}"  
  59. open ${BUILT_PRODUCTS_DIR}  
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
搜索