• 注册
  • 查看作者
    • 逆向分析微信版本算法,可实现旧版登陆等功能

      版本号算法

      1、先把前3位依次分割,最后一位转换为16进制,例如:2.8.0.121 –> 2 8 0 79(最后一位转换为16进制)

      2、然后开始字符串拼接,6+2 0+8 0+0 79 –> 62080079(16进制结果) –> 1644691577(10进制结果)

      3、在计算较新的微信版本号然后替换即可,例如:3.2.1.151 –> 3 2 1 97(最后一位转换为16进制)

      4、然后开始字符串拼接,6+3 0+2 0+1 97 –> 63020197(16进制结果) –> 1661075863(10进制结果)

      版本号算法分析完毕,接下来就是找基址,然后替换旧版微信版本号为最新版!

      寻找版本号基址

      1、打开旧版微信,例如:2.8.0.121

      2、打开CE,选择WeChat.exe进程。

      3、搜索数值1644691577,点首次扫描,左侧会出来10几个结果,会有四五个个绿色。

      4、双击这几个绿色的地址,放到下面地址栏。

      5、从第一个开始,双击数值栏的数据,将其修改为1661075863,然后尝试是否能正常登陆,如若不能则尝试下一个地址直至可以正常登陆!

      6、删除其他无用结果,手动输入“wechatwin.dll”获取dll基址。

      7、用可以正常登陆的地址(也就是版本号的地址 -“wechatwin.dll”的地址)计算偏移。

      例如:基址为“66500000”版本号地址为“67B276C4”那么67B276C4-66500000=16276C4(这个结果就是偏移)

      8、然后获取“wechatwin.dll”的地址+16276C4(也就是刚才计算得到的偏移)最终计算结果就是版本号地址。

      9、对该地址(也就是最终计算地址)写入最新的微信版本号即可实现任意旧版本登陆!

      读取微信版本号

      1、获取“WeChatWin.dll”文件信息,相关API:GetFileVersionInfoSizeW下段,当堆栈出现“WeChatWin.dll”相关字符时回溯然后段尾下段。

      2、断下后看EAX的结果,然后得到对应的16进制字符串,转换为10进制后即为我们当前微信版本号的尾数!

      3、在单步即为另一种版本号算法。

      另一种版本号算法

      通过上述方式获取到当前微信版本号后,与“0x62070100”进行异或得到的结果即为当前版本的16进制结果(转换为10进制搜索可计算偏移)

      2.7.1.00  => 转换一下0x02070100

      0x62070100 => 0x60000000+0x02070100

      假如版本号是 3.3.3.33

      0x03030300+0x60000000=0x63030300 or 0x21 => 0x63030321

      微信版本号转换API

      链接

      成品源码

      链接

    • 0
    • 0
    • 0
    • 27
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 签到中心
      偏好设置
      在线聊天
    • 单栏布局 侧栏位置: