iOS逆向开发(7):微信伪装他人
上一节小程介绍了微信在进入“附近的人”时修改位置信息的办法,这一次,小程来修改“自己”的信息,伪装成别人。
但是,这里的伪装只是“本地的伪装”,也就是看到“自己”变成了他人,而实际上,在服务端(别人看到的)还是没有变化的,那就更不会迫使被伪装的人下线了,也不能以对方的身份发送信息或发朋友圈。
伪装成别人的表现是,小程手机上的微信信息完全变成目标对象的信息,连相册也变成对方的相册。所以,如果对方是好友则相册全是对方发朋友圈的内容,如果对方不是好友则只能看到部分内容。
这个效果看起来,就像小程盗用了别人的账号一样(实际并没有!)。所以,如果读者看到有人截图来证明“已经盗用了很多人的微信账号”,请一定不要轻易相信,因为你也可以做到这个效果。
要在本地伪装成别人,关键在于修改微信的用户名,即把自己的用户名修改成目标对象的用户名。
本文演示如何动态修改微信的用户名。
(1)在哪里改用户名=
用户名很可能在不同的类都有使用到,那需要确定在哪一个类的哪个函数去修改用户名。
还是使用之前介绍的办法来跟踪,比如用户名有可能出现在“设置”模块,那可以查找一下“setting”的关键字。
思路与知识点是一样的,但跟踪的过程却千差万别,所以这个过程的参考意义可能不大。小程直接给出跟踪的结果,在微信的某个版本,用户名在CSetting类中:
setting类
所以,只需要把m_nsUsrName的“get”函数重写就好,比如通过iosOpenDev来修改用户名:
NSString* m_nsUsrName() {
if (g_canmodify) {
return "wxid_tagetxxxid";
}
return %orig();
}
这里使用了一个全局变量g_canmodify,在它为YES时,才进行修改。比如可以在点击某个按钮后、或切到某个页面后,才把这个值置为YES,这时username才被更改。而在微信刚启动时,不要修改用户名,因为,如果一运行就更改这个值,会看到这样的提示:
不能在运行时修改
所以,让微信启动完,在某个时机再去修改它,才能达到目的。
(2)修改的效果
这里演示一下,把username改成“锋哥”的用户名,看一下会有什么效果出现。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 性能优化漫谈(一):无代码调优
- C++职责链模式
- Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单
- 使用 NextCloud + COS 搭建个人网盘
- Shader基础技巧整理
- 隐秘的物理粒子系统与渲染 !Cocos Creator LiquidFun !
- 一起用Gradle Transform API + ASM完成代码织入呀~
- 掩盖浏览痕迹不会被发现的方法【逗】
- webpack实战——样式预处理
- 前端防止浏览器访问旧版 js 和 css 的优化思路
- 少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」
- Qt音视频开发19-海康sdk录像存储
- 单元测试在深度学习中的应用 | 附代码「AI产品/工程落地」
- 实现 AOP 的三种方式
- Spring Boot 配置