逆向某小视频发布接口遇到一些问题

都喜欢用搞WX,而我就不一样喜欢用某度,逆向的目的就是想练练手,学习学习逆向技术,逆向的目标是逆向出百度发布小视频的接口,由于我是在非越狱环境进行的,可能限制还是比较多,但是我觉得这应该不会成为大难题,通过一些技术我很快找到了相关的文件和方法,很明显是先上传视频,上传完成会获得数据,在利用这个数据调用发布接口,这中间分析发现有一些加密在里面,每次分析都会发现牵涉的文件和方法很多,不是自己想想的那么简单。下面说下我的步骤。
由于想要很快知道接口是什么,最先直接才去抓包就找到了请求的路径,但是返回数据是加密数据,于是对NSURLSession hook,想通过这样来看看接口到底返回的什么,结果毫无疑问还是加密数据,而且这个APP里面 请求都有好多种,还有使用NSURLConnection的,感觉到迷茫,感觉无从下手,一步一步的看日志,看看进到某个界面点击按钮之后分别调用了什么接口,但是返回的数据不是加密就是不是自己要的,而且感觉自己hook NSURLSession的block方法,并没有hook到所有的网络请求,明显日志里面就没有显示有些接口的返回数据。就比如BCECredentials里面的key 和screct就是没看到网络返回数据的日志,应该是没有hook到网络请求。感觉自己通过hook这些是看不出来什么了,于是用ida和hopper进行反编译看看到底怎么搞得,结果发现就一个方法里引用了好多其他类,根本就脑袋乱了,数据又是从其他类获取的,这样一分析就涉及到很多的类,甚至感觉自己根本就完不成这样的练手任务。
本人是逆向新手,只能搞一些非常简单的东西,可能提问也比较肤浅,但是希望得到大佬们的指点,学习更牛的技术。就比如我这练手的任务,想要逆向一个APP的接口,要怎么出发才能更快的达到目的呢,我总觉得自己出发方向错了一样。

lldb,打断点,看调用栈

由于ida分析二进制老是卡死,只能将就用hopper,但是hopper还是有些东西看不懂,请教下下面这种情况我怎么去找到r21是个什么方法呢,只知道地址是tagID 这个selector地址偏移 了oxca0,怎么才能知道r21是什么方法?F72AFB0C-02A9-4498-9D10-FEF8FB8B8E83

看伪函数?

是的, 这个就是伪函数,但是hopper的伪函数看起来还是感觉恼火些,就比如这个,r21是函数地址,不像ida那样会显示成函数,这种情况怎么知道r21到底是什么函数呢?

切换到汇编按x可以看到有哪些地方引用到,按g可以跳到函数地址

也可以尝试一下对这个函数下断点,函数地址+基地址偏移,设置个断点

等 mach-0文件 在hopper上面加载完了就不会卡死了,注意看右下角有个正在加载,也可以停止的。

嗯 hopper不会卡死,ida在我这里可以说是用不了,分析完了不卡,但是F5就直接卡死,如果有兴趣你可以试试,这是二进制文件 https://mega.nz/#!npNDHaKa!8DV4Vdu1mEHHCdJmJlPyk4B05JGL9GrVfB5PQDA9uRc

为什么这两个函数相对我选择的函数偏移都是一样的,但是最终的地址两个不是一样的?

image
地址不是不一样吗

他是两个函数耶,IMP都一样不就是同一个方法了吗