通过隐藏iOS系统自带APP-Mail底部的编辑按钮对逆向过程的思考
对于APP来说,我们感兴趣的往往体现在UI上,UI展示了函数的执行过程和结果.函数和UI之间的关联非常紧密,如果能够拿到感兴趣的UI对象,就可以找到它对应的函数,我们称该函数为UI函数.在这个过程中,一般是利用Cycript,结合UIView中的神奇私有函数recursiveDescription和UIResponder中的nextResponder来实现的,我们通过隐藏iOS系统自带Mail的底部编辑按钮来试着去找到最终想要的UI函数(操作机型为iPhone4S,越狱iOS8.1系统).
从现象切入APP,找出UI函数
需求:我们想将下图右下角的”邮件编辑”按钮隐藏掉,试着最终找到想要的UI函数
1.用cycript定位Mail的进程并注入(如下图)
2.查看当前界面的UI层次结构,定位到”邮件编辑”按钮
UIView的私有函数recursiveDescription可以返回这个view的UI层次结构.一般来说,当前界面是由至少一个UIWindow构成的,而UIWindow继承自UIView,因此可以利用这个私有函数来查看当前界面的UI层次结构.cy# [[UIApp keyWindow] recursiveDescription]
UIApp是[UIApplication sharedApplication]的简写,两者等价,调用上面的方法就可以打印出keyWindow的图层结构,输出下面的信息