iOS安全攻防

 
iOS安全攻防(一):Hack必备的命令与工具
你的应用正在被其他对手反向工程、跟踪和操作!你的应用是否依旧裸奔豪不防御?
 
郑重声明一下,懂得如何攻击才会懂得如何防御,一切都是为了之后的防御作准备。废话少说,进入正题。
 
今天总结一下为hack而做的准备工作。
 
常用的命令和工具
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 !!!
 
运行成功,这就完成了最简单的手动执行自己的应用程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值