上一节小程介绍了微信在进入“附近的人”时修改位置信息的办法,这一次,小程来修改“自己”的信息,伪装成别人。

但是,这里的伪装只是“本地的伪装”,也就是看到“自己”变成了他人,而实际上,在服务端(别人看到的)还是没有变化的,那就更不会迫使被伪装的人下线了,也不能以对方的身份发送信息或发朋友圈。

伪装成别人的表现是,小程手机上的微信信息完全变成目标对象的信息,连相册也变成对方的相册。所以,如果对方是好友则相册全是对方发朋友圈的内容,如果对方不是好友则只能看到部分内容。

这个效果看起来,就像小程盗用了别人的账号一样(实际并没有!)。所以,如果读者看到有人截图来证明“已经盗用了很多人的微信账号”,请一定不要轻易相信,因为你也可以做到这个效果。

要在本地伪装成别人,关键在于修改微信的用户名,即把自己的用户名修改成目标对象的用户名。

本文演示如何动态修改微信的用户名。

(1)在哪里改用户名

用户名很可能在不同的类都有使用到,那需要确定在哪一个类的哪个函数去修改用户名。

还是使用之前介绍的办法来跟踪,比如用户名有可能出现在“设置”模块,那可以查找一下“setting”的关键字。

思路与知识点是一样的,但跟踪的过程却千差万别,所以这个过程的参考意义可能不大。小程直接给出跟踪的结果,在微信的某个版本,用户名在CSetting类中:

所以,只需要把m_nsUsrName的“get”函数重写就好,比如通过iosOpenDev来修改用户名:

NSString* m_nsUsrName() {
    if (g_canmodify) {
        return "wxid_tagetxxxid";
    }
    return %orig();
}

这里使用了一个全局变量g_canmodify,在它为YES时,才进行修改。比如可以在点击某个按钮后、或切到某个页面后,才把这个值置为YES,这时username才被更改。而在微信刚启动时,不要修改用户名,因为,如果一运行就更改这个值,会看到这样的提示:

所以,让微信启动完,在某个时机再去修改它,才能达到目的。

(2)修改的效果

这里演示一下,把username改成微信公众号“编程牛人”的管理员之一的“锋哥”的用户名,看一下会有什么效果出现。

动态修改后,先看“我”这个页面:

注意,头像秒变锋哥,而昵称跟微信号并没有变(“奇哥”曾经是小程的小号),因为这里只改了用户名。当然,也可以把昵称跟微信号都改掉的,但不在这里演示。

再看一下相册:

可以看到,小程的相册已经变成“锋哥”的相册了,里面全是他发布的内容。

注意,相册“今天”那一行,是小程(“奇哥”)发的test信息,实际上并没有变成锋哥发的内容,因为这只是一个假的伪装者。另外,因为小程已经加了锋哥为好友,所以能看到相册里面的所有内容。

而至于朋友圈的内容,则只有头像变成了锋哥的,其它还是小程自己朋友圈的内容。

(3)微信的一个设计漏洞

虽然小程并没有真正变成“另一个人”,但在伪装之后,却可以知道这个目标对象在什么时候重新登陆了微信。

大概是这样的,微信运行起来后,把m_nsUsrName改写成一个陌生人(非好友)的用户名,在看到界面头像之类发生变化后,退出微信。注意,因为只是在本地更改了用户名,所以并不会导致这个陌生人收到任何通知。

这时,只要这个陌生人再次登陆微信后,小程也再次启动自己的微信时,会看到这样的提示:

也就是说,微信把真用户的登陆信息,通知给假用户了,让假用户“小心密码泄露了”,而且可以知道,目标对象在什么时候,在什么设备上,登陆了微信。

可以想像,微信在登陆时,会以之前用的用户名去服务器查一下,看有没有同名的人登陆过,如果有,就警告一下。

而这个友善的警告,却刚好让伪装者,有机会拿到目标对象的一些信息。

小白:可是,这有什么呢?

小程:你可以知道TA在什么时候登陆了微信,甚至连Ta的姓名都知道,用什么手机都知道。如果换成你女朋友的信息,你会不会觉得不能接受?

小白:咦?! 我没有女朋友!

总结一下,这次演示,依然是工具的使用,依然是跟踪与修改的实现。


iOS逆向开发(7):微信伪装他人的更多相关文章

  1. iOS逆向开发(8):微信自动添加好友

    这一次,小程演示怎么让一个APP自动地运行,从而代替手工的操作.同样以"微信"以例,实现在一个微信群里面,对所有的成员,自动地一个一个地发出添加好友的请求. 知识点还是之前介绍的东 ...

  2. iOS逆向开发(1):基础工具 | ssh | scp | socat

    小白:小程,我一直想问,什么是逆向来着?是逆向行驶吗? 小程:理解为逆向行驶也没错.一般的项目是从无到有,而逆向是从已有的状态入手,分析出已有的流程与结构的手段. iOS上的逆向开发,是一件有趣的事情 ...

  3. iOS逆向开发(6):微信伪造位置

    仍然以微信为例,实战地练习一下使用Reveal.iOSOpenDev等工具注入APP的流程,积累经验.这一系列的文章都是学习过程的总结,不带任何商业目的. 本文解决一个问题:如何伪造一个经纬度,在微信 ...

  4. iOS逆向开发(5):微信强制升级的突破 | 多开 | 微信5.0

    接下来的几篇文章,小程以微信为例,实战地演示一下:如何注入iOS的APP.其中使用到的知识,基本在前面的文章中都有介绍到. 小白:小程,我想用回旧版本的微信! 小程:为什么要用旧版本微信呢? 小白:你 ...

  5. iOS逆向开发(4):注入目标函数 | fishhook | MobileSubstrate | MSHookFunction | iOSOpenDev

    从获得APP的所有类声明,到锁定目标类与函数,现在是时候注入函数了. 所谓"注入函数",小程的意思是让APP执行到小程写的代码中,跟"钩子"的概念一致.小程把个 ...

  6. iOS逆向开发(2):获取APP的类声明 | class-dump | dumpdecrypted

    之前介绍了怎么操作越狱的iOS设备(以下简称为手机),但简单操作手机并不是目标,小程的目标是手机上特定的APP,比如微信.淘宝.QQ音乐等等,因为小程可以从这些APP上拿到一些有用的信息或资源--比如 ...

  7. iOS逆向开发(0):修改二进制代码与重签名 | hopper | codesigh

    小白:小程,你知道有些iOS程序是没人性的吗?老是不按我的意愿来运行! 小程:我怎么知道你的意愿就是有人性的? 本文解决一个问题:修改别人的二进制程序并运行起来. 让别人的程序按你的意愿来运行,文明一 ...

  8. iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb | debugserver | 远程调试

    之前介绍了怎么获取APP的所有类的结构信息,这个有什么用呢?用处大了,比如以这一步为基础,下一步通过注入来做更多研究工作. 注入的最小单位是函数,实际上,编译执行的程序在编译后,类就不复存在了,留下来 ...

  9. iOS开发之微信聊天页面实现

    在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写.在聊天页面中主要用到了TableView的知识,还有如何在俩 ...

随机推荐

  1. iview安装使用

    iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. 安装 cd 项目 cnpm install iview -S 在项目中引入iview 在入口文件mai ...

  2. docker exec 系统找不到指定的路径。

    相关问题和答案 >docker exec -it a1 echo "hello..." > /var/www/html/index.html 系统找不到指定的路径. & ...

  3. Maven工程无异常 启动没有出现Starting ProtocolHandler的原因

    这个情况可能的原因 一般来说有3种1.数据库没连接上2.注册中心没连接上3.逆向工程生成的mapper 有问题解决:哪个Maven工程出问题,就那个工程的src/main/resource目录下面添加 ...

  4. 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)

    一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈  node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...

  5. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  6. mysql根据查询结果批量更新多条数据(插入或更新)

    mysql根据查询结果批量更新多条数据(插入或更新) 1.1 前言 mysql根据查询结果执行批量更新或插入时经常会遇到1093的错误问题.基本上批量插入或新增都会涉及到子查询,mysql是建议不要对 ...

  7. partial 的随笔

    partial class Dmeos { public int Ager { get; set; } public void Run() { Console.WriteLine(Ager); } } ...

  8. 剑指offer【书】之简历抒写

    项目介绍1.剪短的项目背景简短的项目背景,比如项目的规模,开发的软件的功能.目标用户等2.完成的任务这个要写详细,要让面试官对自己的工作一目了然.在用词上要注意区分“参与”和“负责”:如果只就用“负责 ...

  9. libguestfs手册(2):guestfish command

    添加一个drive:guestfs_add_drive_opts add-drive filename [readonly:true|false] [format:..] [iface:..] [na ...

  10. 算法与数据结构(十一) 平衡二叉树(AVL树)(Swift版)

    今天的博客是在上一篇博客的基础上进行的延伸.上一篇博客我们主要聊了二叉排序树,详情请戳<二叉排序树的查找.插入与删除>.本篇博客我们就在二叉排序树的基础上来聊聊平衡二叉树,也叫AVL树,A ...