V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
suduo1987
V2EX  ›  程序员

[学习向]最近很忙,换个思路,送上最新版 TIM 和微信防撤回补丁

  •  1
     
  •   suduo1987 ·
    sduo · Jan 10, 2019 · 17198 views
    This topic created in 2668 days ago, the information mentioned may be changed or developed.

    背景

    如题

    作用

    群聊、私聊撤回均无效

    食用方式

    考虑到安全问题,就放补丁文件,请自己使用x64dbg修改。

    修改内容

    TIM(2.3.1.20994):修改 2 字节

    im.dll

    0004DDE6:85->84

    0004E038:85->84

    微信(2.6.6.28):修改 1 字节

    wechatwin.dll

    0024B18E:75->74

    GitHub

    注意:仅针对 Win PC 版本

    Supplement 1  ·  Jan 10, 2019

    比较忙,简单交代下思路:

    1. 附加到进程
    2. 选择对应模块
    3. 搜索关键字"revoke"
    4. 下断点
    5. 调试
    6. 记录特征值(方便下次修改)
    Supplement 2  ·  Jan 10, 2019

    打补丁方法

    1. 下载软件
    2. 文件=>附加=>选择TIM或者WeChat
    3. 符号选项卡=>TIM找IM.dll;WeChat找WeChatWin.dll,双击打开模块
    4. CPU选项卡=>右键=>补丁=>导入=>修补文件=>不要直接覆盖原文件(被占用),先存其他地方
    5. 关闭软件=>关闭TIM或WeChat=>备份原有文件后覆盖补丁文件
    6. 直接打开TIM或者WeChat

    enjoy it

    37 replies    2019-02-14 12:43:55 +08:00
    mario85
        1
    mario85  
       Jan 10, 2019 via iPhone   ❤️ 1
    你这叫学习向?
    起码说下,修改的地方都什么指令,函数什么逻辑,才能叫学习
    suduo1987
        2
    suduo1987  
    OP
       Jan 10, 2019
    @mario85 成果向?
    cattrace
        3
    cattrace  
       Jan 10, 2019
    怎么找到的点能说下么?学习下
    ThirdFlame
        4
    ThirdFlame  
       Jan 10, 2019
    求个思路
    ThirdFlame
        5
    ThirdFlame  
       Jan 10, 2019
    另外 wechatwin.dll 2.6.6.28 MD5:92F13F3D1E82A973F8FE8CFD4D08FF4D
    0024B18E 并不是 75 啊 ,winhex 打开的不行?
    suduo1987
        6
    suduo1987  
    OP
       Jan 10, 2019
    @ThirdFlame 用我说的软件,WinHex 我没有试过
    U7Q5tLAex2FI0o0g
        7
    U7Q5tLAex2FI0o0g  
       Jan 10, 2019
    占楼插播一个 Mac QQ 版: https://github.com/doveccl/QQU
    用了好几年了 ,美滋滋
    wjm2038
        8
    wjm2038  
       Jan 10, 2019 via Android
    歪个楼,这头像是。。?
    yiFire
        9
    yiFire  
       Jan 10, 2019
    不好意思,== 给个操作方法把···这方面不懂
    suduo1987
        10
    suduo1987  
    OP
       Jan 10, 2019
    @wjm2038 额,头像咋啦?
    suduo1987
        11
    suduo1987  
    OP
       Jan 10, 2019
    @yiFire 更新了方法
    wjm2038
        12
    wjm2038  
       Jan 10, 2019 via Android
    @suduo1987 有点感兴趣出处。。
    ob
        13
    ob  
       Jan 10, 2019 via Android
    会影响自己的撤回吗?
    cheese
        14
    cheese  
       Jan 10, 2019
    emmm,我这里不行,在导入补丁的时候,显示“当前进程中没有需要应用的补丁”
    smallgoogle
        15
    smallgoogle  
       Jan 10, 2019
    V2 什么时候变成了那么低端的地方了。。。瞬间以后都不想上了。
    suduo1987
        16
    suduo1987  
    OP
       Jan 10, 2019
    @ob 不会
    suduo1987
        17
    suduo1987  
    OP
       Jan 10, 2019
    @cheese 模块不对
    suduo1987
        18
    suduo1987  
    OP
       Jan 10, 2019   ❤️ 2
    @smallgoogle 不好意思,底端到您了
    cheese
        19
    cheese  
       Jan 10, 2019
    @suduo1987 #17 模块是没问题的,但是我找不到那个值
    Shynoob
        20
    Shynoob  
       Jan 10, 2019
    已 star,另外楼上说低端不清楚啥意思
    yiFire
        21
    yiFire  
       Jan 10, 2019
    感谢~
    luosuosile
        22
    luosuosile  
       Jan 10, 2019
    楼上说低端的,我猜是觉得广告贴变多了把。。
    我觉得实现这个蛮有意思
    sbh3c4k
        23
    sbh3c4k  
       Jan 10, 2019   ❤️ 1
    @smallgoogle 别把自己想的多牛逼 隔行如隔山 技术一般的就喜欢装逼
    wallriding
        24
    wallriding  
       Jan 10, 2019
    @smallgoogle 快别上了您呐,真是个人物。
    ThirdFlame
        25
    ThirdFlame  
       Jan 10, 2019   ❤️ 1
    经测试成功。 使用 winhex 直接 16 进制修改 0024A58E 75->74 ( 2.6.6.28 wechatwin.dll 2.6.6.28 MD5:92F13F3D1E82A973F8FE8CFD4D08FF4D )即可
    suduo1987
        26
    suduo1987  
    OP
       Jan 10, 2019
    @cheese 版本号不对吧,这东西严格控制版本,特征值我还没找到,还有商店版要用商店版的补丁
    suduo1987
        27
    suduo1987  
    OP
       Jan 10, 2019
    @wjm2038 我也忘了= =,总之来源互联网~
    suduo1987
        28
    suduo1987  
    OP
       Jan 10, 2019
    @ThirdFlame 之前是不是弄错文件了?我只是想知道原因
    wafm
        29
    wafm  
       Jan 10, 2019   ❤️ 1
    以前做过游戏,懂一些汇编。。

    虽然没实践过,我就按照我的理解去给试着解释一下

    如果有不对请指出哦。。

    其实根据撤回原理可以分析出是撤回是本地判断,意思是其实消息会先到本地,如果接受到服务器的撤回指令,那么就撤回

    但是注意 消息其实先到了本地的,如果我们在本地把撤回判断给逆了,让服务器的撤回指令无效那就没法撤回了,消息依然在本地。

    搜索关键字“ revoke ”是为了快速定位代码块,有些开发者在开发的时候喜欢使用一些近似意思的英语翻译,所以这就使得定位代码块简单了很多,如果没有此类关键字 断点是不好的断的 (何为断点:当程序执行到某一关键动作调试器会暂停,暂停的位置可以理解成断点,例如早期游戏界鼎鼎大名的 bp send )

    没记错的话 85 -> 84 应该是 不等于 -> 等于

    75 -> 74 也是同理

    总之就是分析流程,让程序正常跑一次,分析清楚程序的内部运行情况再做条件修改。

    由于是本地判断,程序又没有加密混淆加壳,还给出了关键字 所以修改起来就是简单的条件判断就修改了。
    ThirdFlame
        30
    ThirdFlame  
       Jan 10, 2019
    @suduo1987 不是的 ,用 x32dbg 0024B18E:75->74 最终体现在文件上的结果就是 0024A58E 75->74,应该是 dll 文件调用时 加载地址的偏移问题。 我二进制小白,猜测的。
    wafm
        31
    wafm  
       Jan 10, 2019
    @ThirdFlame 对,就是文件偏移量转换 百度或者 GOOGLE 可以很简单的搜索到转换原理
    yongshou
        32
    yongshou  
       Jan 10, 2019 via Android
    下载个看看有没有用
    suduo1987
        33
    suduo1987  
    OP
       Jan 10, 2019
    @wafm 对的 就是这个意思
    bosshida
        34
    bosshida  
       Jan 10, 2019
    下载了 2.6.6.28 版本的微信,用 x32dbg 查这个 wechatwin.dll ,然后在 [转到] -- [文件偏移] 到“ 0024B18E ”这个偏移,显示正确的表达式:67B9BD8E,确定后,偏移右侧显示的数值是:68 2BCEF7E9,并没有 75. 请问是怎样修改的?
    bosshida
        35
    bosshida  
       Jan 10, 2019
    试了 30 楼的那个偏移就可以了。 [转到] -- [文件偏移] 到“ 0024A58E ”这个偏移,就有 75 了
    flowfire
        36
    flowfire  
       Feb 11, 2019 via Android
    …………直接修改二进制文件…………?
    seanzzz
        37
    seanzzz  
       Feb 14, 2019
    谢,亲测可以
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   885 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    ♥ Do have faith in what you're doing.