iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新

其实学习ios 逆向知识还是很有必要的,不是抱着为了破解那个程序,而是为了抱着学习的态度,去学习一些好的程序的结构,用的好的框架,等等,今天先来讲解一些比较基础的部分,iOS工具集,openssh 和cycript,(这两个插件都可以在cydia 通过搜索下载得到)使用这些工具帮助我们去了解一些想要的程序。(此文章仅用于学习)

工具:工具这里只需用用到一部越狱机和mac 电脑即可,越狱机目前盘古越狱已经越到9.1了,想做逆向开发,还是不能将手机或测试机过早的升级,这里是比较坑爹的

iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新_第1张图片
22CB2013-B33C-43BE-8346-64AECC0A6274.png
]( http://upload-images.jianshu.io/upload_images/1306084-8ee1f41c2c36b23a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在cydia 安装插件的时候我遇到了一个坑


iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新_第2张图片
6CA65A7D-3FA8-4410-9322-4135ED0EE448.png

软件源还在刷新(loading)的时候,我就去搜索,安装插件了,结果他一直报错,因此要等软件源刷新完毕才可以安装。好吧接下来回到正题吧

1 openssh
openssh ,其实是提供了一个ssh 的服务,安装了之后,就可以通过无线方式由电脑远程登录到手机,去访问手机的资源,这个东西还是棒棒哒,使用openssh ,还是需要你掌握一些终端命令的,iphone 是基于unix 系统,所以,命令行命令在iphone 上面也是行的通。先来大致演示一下

(1)远程登录
openssh 他是通过无线方式,是电脑和手机建立连接,因此手机和电脑必须要在同一个网络下面,电脑通过ip来访问手机,我现在看到我的手机的ip 是192.168.0.35,这里还要说下默认密码是alpine ,登录之后必须要立即改密码,因为安装这个插件,还是用默认密码,手机也就变得不安全了,任意电脑都有机会访问到你的手机了。(还有就是有时候比较卡,估计是可能手机锁屏了,和电脑建立连接就卡主了,这是可以解锁下手机,让手机保持亮屏)
这里用到的命令是 ssh root@ip 地址 ,如下图


A2E81C23-B289-4B42-987E-6E5BEF0CB889.png

登录成功就要马上修改密码了 使用到的命令 passwd 如图


iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新_第3张图片
92904797-6F86-466F-A0EB-D3DD3D1208E4.png

(2)查看程序目录结构
改完密码就可以愉快的,安全的访问自己的手机啦,那么来看看有什么好玩的命令,这里我们必要常用到 的ps 命令,查看进程的一些命令,例如ps -e 通过这个命令可以查看自己想了解的程序,的运行情况

DAE54938-6D53-445F-A7E2-6C5BDCCB5598.png
iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新_第4张图片
A7A70E1E-54BB-4107-9025-6A990F94A621.png

这里我们看到了一个熟悉的进程微信,还看到了微信了沙盒路径,顿时觉得这个命令棒棒哒

ps -e 会扫出一大堆的进程呢,能不能精确点找呢,通过命令来ps -ef |grep WeChat 模糊匹配来查询微信的进程,啊哈哈微信也出来了


F2B57B24-FF8E-4666-B07B-29DAEDC59FBC.png

既然知道了沙盒路径就可以各种 cd ls 看看微信的目录结构了

2CCE9F0C-2835-4007-A8DF-544DADD2574A.png

openssh 大致就讲到这里,来看一下cycript 吧。

2 cycript
cycript 也是一款很强大的cydia 插件,使用它我们可以测试一些函数的功能,去窥探一些程序的结构,动态调试程序,

(1)锁定调试目标
通过前面的ps 命令我们已经知道可以进程名 和 进程id 那么我们可以通过这些标志来调试想要了解的程序,还是拿微信来当例子吧,


60E04A61-C924-436A-9E5F-9095C945163E.png

上图可以看到 微信的pid 是832 那么我们通过命令 cycript -p 832 来调试微信


23FBC87F-9439-4A2F-AEAD-D7AD2A7A1B21.png

(2)调试弹框
出现cy#说明访问想要调试的程序成功了,cycript的语法也很简单,类似oc,但是变量他要用var 来表示,且不用写* 那么尝试些一段简单的代码来看看效果

1D03C711-1258-4D9D-8415-EF6518189107.png

我在这里 实例了一个UIAlertView ,并让实例弹了个框,那么手机发生了什么情况

iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新_第5张图片
22CB2013-B33C-43BE-8346-64AECC0A6274.png

可以看到一个微信看到我调试时产生的弹框

(3)打印app层级结构
也可以通过代码获取 app的实例对象,查看他的层级结构

6113826F-A5A4-4791-9D5C-767ED79B3E28.png

今天大致就讲到这里,接下来还会继续拓展,如果有什么不对,希望各位大神可以指出批评

你可能感兴趣的:(iOS 逆向学习1(iOS工具集:openssh 和 cycript)持续更新)