iOS逆向开发基础工具
2018-01-18 18:35
288 查看
小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗?
小程:理解为逆向行驶也没错。一般的项目是从无到有,从大唐而来到西方取经,而逆向是从已有的状态入手,分析出已有的流程与结构的手段。
iOS上的逆向开发,是一件有趣的事情(虽然有时也会很痛苦),而且还可能给你带来收益。
在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位、目标代码的调试,再到注入微信的实战示例。读者如果感兴趣,可以关注小程的微信公众号“广州小程”,获得后续的更新。
本文介绍iOS逆向的基础工具的使用。
硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下都称为手机或iphone),以及一台电脑。电脑方面,小程建议你使用mac电脑,因为它的环境可以解决很多无谓的问题,当然如果你有很强的解决问题的能力并且坚持用windows来安装mac虚拟机的话,也是可以的。
系统环境方面,你需要给手机越狱。说到越狱,小程就想起scofield:
但这里的越狱,是指对手机有更多的操作权限,比如在手机运行命令行终端、往root等目录写入数据、安装非来自AppStore的应用(之前就介绍过重签名后安装ipa),等等。但注意一点,越狱后,沙盒的机制还是存在的,比如你的App还是不能往其它App的Document目录写入数据。
小程在写这篇文章时,10.2以上的系统还不支持越狱,所以准备用于越狱的系统应该是10.2或低于10.2。使用pp助手、爱思之类的工具进行越狱。
解决了硬件和系统越狱的需求后,接着就是逆向的基本工具了,这些工具可以让你逼近攻击目标。
如果最终是用yalu102来越狱的话,越狱后自带ssh(但scp要自行安装)。
可以在cydia中搜索Terminal并安装,然后在这个终端上敲上ssh来执行,验证是不是安装了ssh。如果发现没有,那可以在cydia中搜索“openssh”或“ssh connect”来进行安装。
试用ssh:
在手机的wifi页面,找出当前使用的ip。
在电脑上(mac机自带ssh客户端),使用ssh登陆设备:ssh root@ip
ssh登陆到手机,之后操作的就是这台手机,电脑上的键盘就是手机的键盘。
小白:喂,登陆时需要写密码,是多少呢?
上面已经提到了iOSOpenDev,这是一个编写注入代码的实用工具,后续再具体介绍。
这里再介绍使用ssh可能遇到的一个问题。对于ios10.1.1(其它10.x也一样),在越狱后,用ssh是登陆不上的,原因参考http://blog.csdn.net/dianshanglian/article/details/62422627。
以下是这个网页的内容摘录:
注意,如果是用“越狱助手”来越狱的,那上面的目录改为../Application/越狱助手/yalu102.app/..
一般安装完ssh客户端后就可以使用scp指令(否则,可以参考上面办法下载scp来使用)。
比如,把hellowrold文件,拷贝到手机的root用户的根目录,命名为hello:
比如,拷贝手机里面的内容到电脑:
在ssh与scp安装完毕后,就可以做一些“攻击”的事情了。
比如,让手机重启:
比如,在手机上执行hello wrold程序:
安装:
使用:
总结一下,本文简介了iOS逆向的准备工作,以及基础工具ssh/scp/socat的使用。这三个工具在以后的实战中会经常用到,虽然你也可以用其它工具来达到同样的目的,但小程还是建议你掌握它们的使用。本文的内容只需按步操作,难度系数为低。
小程:理解为逆向行驶也没错。一般的项目是从无到有,从大唐而来到西方取经,而逆向是从已有的状态入手,分析出已有的流程与结构的手段。
iOS上的逆向开发,是一件有趣的事情(虽然有时也会很痛苦),而且还可能给你带来收益。
在接下来的几篇文章,小程会尝试介绍iOS逆向的一系列的知识与技能:从基础工具的使用,到目标类的定位、目标代码的调试,再到注入微信的实战示例。读者如果感兴趣,可以关注小程的微信公众号“广州小程”,获得后续的更新。
本文介绍iOS逆向的基础工具的使用。
硬件方面,你需要一台iOS设备(iphone/itouch/ipad,以下都称为手机或iphone),以及一台电脑。电脑方面,小程建议你使用mac电脑,因为它的环境可以解决很多无谓的问题,当然如果你有很强的解决问题的能力并且坚持用windows来安装mac虚拟机的话,也是可以的。
系统环境方面,你需要给手机越狱。说到越狱,小程就想起scofield:
但这里的越狱,是指对手机有更多的操作权限,比如在手机运行命令行终端、往root等目录写入数据、安装非来自AppStore的应用(之前就介绍过重签名后安装ipa),等等。但注意一点,越狱后,沙盒的机制还是存在的,比如你的App还是不能往其它App的Document目录写入数据。
小程在写这篇文章时,10.2以上的系统还不支持越狱,所以准备用于越狱的系统应该是10.2或低于10.2。使用pp助手、爱思之类的工具进行越狱。
解决了硬件和系统越狱的需求后,接着就是逆向的基本工具了,这些工具可以让你逼近攻击目标。
(1)ssh
ssh,就是Secure Shell,即安全外壳协议(ssh协议可以防范ip或dns欺骗,加密而且压缩数据,被广泛使用),常用于远程登陆。这里指的是ssh客户端。如果最终是用yalu102来越狱的话,越狱后自带ssh(但scp要自行安装)。
可以在cydia中搜索Terminal并安装,然后在这个终端上敲上ssh来执行,验证是不是安装了ssh。如果发现没有,那可以在cydia中搜索“openssh”或“ssh connect”来进行安装。
试用ssh:
在手机的wifi页面,找出当前使用的ip。
在电脑上(mac机自带ssh客户端),使用ssh登陆设备:ssh root@ip
ssh登陆到手机,之后操作的就是这台手机,电脑上的键盘就是手机的键盘。
小白:喂,登陆时需要写密码,是多少呢?
ios设备的两个默认ssh账号: root,默认密码:alpine mobile,默认密码:alpine ssh登陆示例: $ ssh root@192.168.1.101 或者: $ ssh -l root 192.168.1.100 ----- root@192.168.1.101's password:(输入密码,回车) 810:~ root# 登陆后,修改root密码: # passwd 登陆后,修改mobile密码: # passwd mobile 每次ssh到手机,都要经过密码验证。如果想简化这一步,那么可以使用iosod来建立这个信任: cd /opt/iosopendev/bin --前提是,已经安装了iosopendev ./iosod sshkey -h 192.168.1.101 这样就对这个ip建立信任,之后ssh登陆时不再输入密码。
上面已经提到了iOSOpenDev,这是一个编写注入代码的实用工具,后续再具体介绍。
这里再介绍使用ssh可能遇到的一个问题。对于ios10.1.1(其它10.x也一样),在越狱后,用ssh是登陆不上的,原因参考http://blog.csdn.net/dianshanglian/article/details/62422627。
以下是这个网页的内容摘录:
1、SSH连接不上 在手机上安装Mterminal,运行su,输入root密码,进入root权限,执行ps aux|grep dropbear (1)如果你看到的进程没有dropbear 执行/usr/local/bin/dropbear -F -R -p 22 然后就可以连接了,重启依然有效 (2)如果你看到进程是这样:/usr/local/bin/dropbear -F -R -p 127.0.0.1:22 意思是只能数据线重定向连接SSH,如果你想改成WIFI可以访问 那么用Filza修改/private/var/containers/Bundle/Application/{UUID}/yalu102.app/dropbear.plist 把里面有个参数127.0.0.1:22改成22保存,重启手机即可 UUID在每个人手机上不一样 2、修复SCP 你会发现yalu102自带的SSH无法用WINSCP传输文件,因为缺少了scp 很简单 (1)cydia里面安装wget (2)在mterminal里面登陆root权限 (3)执行以下命令 wget mila432.com/scp ldid -S scp chmod 777 scp mv scp /usr/bin/scp
注意,如果是用“越狱助手”来越狱的,那上面的目录改为../Application/越狱助手/yalu102.app/..
(2)scp
scp,就是secure copy,是基于ssh的远程拷贝。一般安装完ssh客户端后就可以使用scp指令(否则,可以参考上面办法下载scp来使用)。
比如,把hellowrold文件,拷贝到手机的root用户的根目录,命名为hello:
scp helloworld root@192.168.1.100:hello
比如,拷贝手机里面的内容到电脑:
scp root@192.168.2.21:/User/Documents/Cracked/* .
在ssh与scp安装完毕后,就可以做一些“攻击”的事情了。
比如,让手机重启:
ssh root@192.168.1.101 (810:~ root#) killall SpringBoard
比如,在手机上执行hello wrold程序:
首先编译出执行文件,使用clang:
clang -o helloworld -arch armv7 helloworld.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk
拷贝执行文件到手机:
scp helloworld root@192.168.1.100:hello
登陆手机并执行:
ssh root@192.168.1.101
cd /
chmod +x hello
./hello
(3)socat
socat,是用来查看系统日志的工具。系统各个进程的动态信息、所有app的NSLog信息,都可以通过socat观察到。安装:
在cydia搜索SOcket CAT来安装,或者: apt-get install socat --前提是安装了apt-get
使用:
socat – UNIX-CONNECT:/var/run/lockdown/syslog.sock >watch
总结一下,本文简介了iOS逆向的准备工作,以及基础工具ssh/scp/socat的使用。这三个工具在以后的实战中会经常用到,虽然你也可以用其它工具来达到同样的目的,但小程还是建议你掌握它们的使用。本文的内容只需按步操作,难度系数为低。
相关文章推荐
- Android逆向基础笔记—Android NDK开发3之使用ndk-build工具手动编译
- iOS逆向 开发工具
- 逆向开发基础工具
- iOS Hacker 越狱后开发和逆向工具准备
- iOS开发之appCode工具
- IOS 开发 AFNetworking 网络工具-网络请求的三次封装 Swift版
- ios基础之关闭输入框的几种常见方法集锦 分类: ios开发 2015-04-01 19:33 134人阅读 评论(0) 收藏
- IOS开发基础知识--碎片25
- iOS开发Objective-C基础之──多态
- 开发iOS应用程序需要的工具和编程技术
- 你知道吗?使用任何HTML5开发工具都可开发iOS、Android原生App
- XPower++的(Windows,Linux,Android,ios,Blackberry) 支持Intel和ARM架构的平台方案开发工具
- iOS开发基础面试题
- iOS蓝牙开发(一)蓝牙相关基础知识
- iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
- IOS开发工具——网络封包分析工具Charles
- ios开发基础知识 - 1
- ios开发之c语言基础-结构体
- iOS开发基础知识--碎片35