iOS越狱开机运行程序

常用的命令和工具


ps          ——显示进程状态,CPU使用率,内存使用情况等

sysctl       ——检查设定Kernel配置

netstat     ——显示网络连接,路由表,接口状态等

route        ——路由修改

renice       ——调整程序运行的优先级

ifconfig    ——查看网络配置

tcpdump   ——截获分析网络数据包

lsof           ——列出当前系统打开的文件列表,别忘记一切皆文件,包括网络连接、硬件等

otool      ——查看程序依赖哪些动态库信息,反编代码段……等等等等

nm         ——显示符号表

ldid       ——签名工具

gdb          ——调试工具

patch       ——补丁工具

SSH         ——远程控制


备注:

 otool,可查看可执行程序都链接了那些库:

 otool  -L WQAlbum 

可以得到:


WQAlbum:
/System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AdSupport.framework/AdSupport (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/System/Library/Frameworks//MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 40.0.0)
/System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 1.0.0)
……


可以反编译WQAlbum的__TEXT__段内容, 截前10行:

otool -tV WQAlbum |head -n 10 

可以得到:


WQAlbum:
(__TEXT,__text) section
start:
00002de0 pushl$0x00
00002de2 movl %esp,%ebp
00002de4 andl $0xf0,%esp
00002de7 subl $0x10,%esp
00002dea movl 0x04(%ebp),%ebx
……


 nm,显示程序符号表,用我自己的应用程序私人相册现身说法一下:

nm -g WQAlbum  ( -g 代表 global) 

可以得到:


001e5eec S _OBJC_IVAR_$_WQPhotoViewController.albumObject
001e5efc S _OBJC_IVAR_$_WQPhotoViewController.int_current
001e5f00 S _OBJC_IVAR_$_WQPhotoViewController.int_total


其中,WQPhotoViewController为类名,albumObject为该类的成员



 ldid,是iPhoneOS.platform提供的签名工具,我们自己编译的程序需要签上名才能跑在iPhone/iPad上,使用方法
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
ldid -S helloworld 

编译Hello world


1.首先找到编译器:




arm-apple-darwin10-llvm-gcc-4.2 就是了。

为了方便起见,可以在.bashrc或者profile 配置下环境变量,方便编译。


2.找到SDK




编译我们自己的程序的时候需要指定该目录下的SDK。


3.来个经典Hello world :

  1. #include <stdio.h>                                                                                             
  2. int main(){  
  3.        printf("Hello world !!!\n");  
  4.        return 0;  
  5. }  

4.编译





其中 -isysroot用来指定build时的SDK


5.校验




file查看一下类型,没问题。


6.SCP给iPhone、iPad


前提是,设备已经越狱并且安装了SSH,且必须在同一网段。

$scp helloworld root@x.x.x.x:hello world


7.登录设备签名


$ssh -l root x.x.x.x

#ldid -S helloworld


8.执行程序


#./helloworld

Hello world !!!


运行成功,这就完成了最简单的手动执行自己的应用程序。


开机自启动


1.首先打开Xcode创建一个plist属性文件,如下图所示:





其中要注意一下通信服务名,我定为55。用编辑器打开,即为:

[plain]  view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
  3. <plist version="1.0">  
  4. <dict>  
  5.     <key>Program</key>  
  6.     <string>/usr/bin/ncdemo</string>  
  7.     <key>StandardErrorPath</key>  
  8.     <string>/dev/null</string>  
  9.     <key>SessionCreate</key>  
  10.     <true/>  
  11.     <key>ProgramArguments</key>  
  12.     <array>  
  13.         <string>/usr/bin/ncdemo</string>  
  14.     </array>  
  15.     <key>inetdCompatibility</key>  
  16.     <dict>  
  17.         <key>Wait</key>  
  18.         <false/>  
  19.     </dict>  
  20.     <key>Sockets</key>  
  21.     <dict>  
  22.         <key>Listeners</key>  
  23.         <dict>  
  24.             <key>SockServiceName</key>  
  25.             <string>55</string>  
  26.         </dict>  
  27.     </dict>  
  28. </dict>  
  29. </plist>  


最后,将plist文件 scp 至 root@192.168.1.114:/System/Library/LaunchDaemons/ 下 .


编写读取iTunesstore数据库程序


读取itunesstored2.sqlitedb信息,并输出到stdout中,便于我们读取。

  1. #include <stdio.h>  
  2. #include <fcntl.h>  
  3. #include <stdlib.h>  
  4.   
  5. #define FILE "/var/mobile/Library/com.apple.itunesstored/itunesstored2.sqlitedb"  
  6.   
  7. int main(){  
  8.     int fd = open(FILE, O_RDONLY);  
  9.     char buf[128];  
  10.     int ret = 0;  
  11.       
  12.     if(fd < 0)  
  13.         return -1;  
  14.     while (( ret = read(fd, buf, sizeof(buf))) > 0){  
  15.         write( fileno(stdout), buf, ret);  
  16.     }  
  17.     close(fd);  
  18.     return 0;  
  19. }  

编译、拷贝、签名



1.编译方法上篇文章已经介绍清楚,这里不再重复,直接¥%¥#%¥……%# 生成运行在ARM的 ncdemo 


2.将ncdemo scp 到设备中,并登录

$ scp ncdemo root@192.168.1.114:ncdemo

$ ssh root@192.168.1.114


3.签名

#ldid -S ncdemo

#mv ncdemo /usr/bin


抓取 iTunesstore 数据信息


这时,我们只需要利用netcat,指定之前定义的服务名称,轻松在本地抓取设备 iTunesstore 信息.

$ nc 192.168.1.114 55 > itunesstored2.sqlitedb


分析 iTunesstore 数据信息


好吧,这里就介绍个最简单的应用,利用string命令查看:

$ strings itunesstored2.sqlitedb 


于是乎,我们就清晰的得到了iPhone /iPad 设备上都安装了哪些app :





  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值