iOS逆向学习笔记(一) 界面分析

界面分析

准备工作(手机工具在越狱商店安装)

Mac,手机安装openSSH。用来远程连接到越狱手机来进行动态的界面分析以及lldb的动态调试(Mac可通过安装iproxy进行端口转发,通过USB连接手机)

  • Mac,手机安装reveal。用来查看APP界面结构
  • 手机安装Cycript。用来打印APP界面信息
工具使用
  • reveal分析: 手机安装reveal后,在设置中将要查看的APP开关打开后,将Mac端和手机端至于同一局域网内后,启动该APP~
  • Cycript分析:

    通过sshMac远程连接到手机
    执行”ps -e”或者”ps aux”命令打印出所有进程信息,找到你要分析APP的进程ID
    执行cycript -p id(进程ID),或者cycript -p name(APP二进制名), 即可注入该APP
    常用的cycript命令(类似Objective-C语法,且有自动补全):
    NSHomeDirectory() ===> 打印沙盒目录
    [[NSBundle mainBundle] bundleIdentifier] ===> 打印BundleID
    UIApp.keyWindow.recursiveDescription().toString() ===> 打印当前window的界面结构
    [[[UIWindow keyWindow] rootViewController] _printHierarchy].toString() ===> 打印当前window的控制器界面结构
    [[UIApp keyWindow] _autolayoutTrace].toString()
    UI的内存地址实例(#0x152345).hidden=YES ===> 设置对应UI隐藏
    UI的内存地址实例(#0x728278).nextResponder ===> UI的事件响应链

(Cycript还能加载脚本,可将方法写到脚本中,具体看书~)