逆向某拉货APP登录过程

注意

  • 此文仅限于技术交流,请不要做违法的事情。对于那些居心叵测的人根据此文造成违法的事情与本人无关。此文章不得转载!!!
  • 关键图片信息已打码,关键代码信息已用XXOO替代。如果APP方需要删除,请发邮件zhulongfei28@gmail.com,谢谢。
  • 这并不是基础教程,需要一定iOS逆向经验的人才能看懂。

准备

  • ida反汇编mach-o文件
  • class-dump头文件
  • Reveal查看APP层级视图
  • Theos编写tweak插件
  • Charles+SSL Kill Switch 2https抓包
  • Frida Hook框架

寻找切入点

  • App切换到使用账号密码登录界面,输入账号和密码,点击两次登录按钮,使用Charles查看抓包内容。
  • 可以发现_sign_su_t三个参数在变,所以接下来就是要探索这三个参数的生成过程。怎样切入呢?本文从点击登录按钮动作开始一层一层往下寻找。
  • 使用Reveal查看发现登录按钮属于PasswordLoginVC这个控制器,那么登录执行的方法也在这个头文件中。遗憾的是从主mach-o导出的头文件中并没有找到PasswordLoginVC.h,那么肯定是在其它模块中包含的。怎样寻找哪个模块包含PasswordLoginVC这个类呢,可以使用LLDB。
  • LLDB连接上后执行image lookup -r -n PasswordLoginVC,发现在HLLCommonModule这个模块中。根据经验可知,从.app/Frameworks中可以找到这个模块的mach-o文件,然后使用class-dump导出头文件。
  • 打开PasswordLoginVC.h经过排除,以下几个方法可能是点击登录按钮要执行的操作,所以接下来要确定是哪个方法是我们需要的。
    1
    2
    3
    4
    - (void)changePasswordLogin;	// IMP=0x000000000007e534
    - (void)fieldChangeAction:(id)arg1; // IMP=0x000000000007e27c
    - (void)securityAction:(id)arg1; // IMP=0x000000000007e1c0
    - (void)login; // IMP=0x000000000007d400
  • mach-o没有恢复符号,可以通过地址断点给上面四个方法下断点,看会命中哪个;可以通过frida-trace跟踪函数调用。本文采用简单的方法,如下,发现调用了login方法。
    1
    2
    3
    4
    $ frida-trace -U -m "*[PasswordLoginVC *]" 货拉拉
    ....
    30522 ms -[PasswordLoginVC login]
    30522 ms | -[PasswordLoginVC isAgree]

应App方要求,对文章进行删除,如下。