逆向某拉货APP登录过程
注意
- 此文仅限于技术交流,请不要做违法的事情。对于那些居心叵测的人根据此文造成违法的事情与本人无关。此文章不得转载!!!
- 关键图片信息已打码,关键代码信息已用XXOO替代。如果APP方需要删除,请发邮件
xxoo@hotmail.com
,谢谢。 - 这并不是基础教程,需要一定iOS逆向经验的人才能看懂。
准备
- ida反汇编mach-o文件
- class-dump头文件
- Reveal查看APP层级视图
- Theos编写tweak插件
Charles
+SSL Kill Switch 2
https抓包- 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
4frida-trace -U -m "*[PasswordLoginVC *]" 货拉拉
....
30522 ms -[PasswordLoginVC login]
30522 ms | -[PasswordLoginVC isAgree]
应App方要求,对文章进行删除,如下。