微信电脑端 3.8.1.26 提示版本号过低需要升级
需要使用 CE 修改器搜索找到基准地址。
用以下计算工具计算微信版本 3.8.1.26 加尾号计算为 0x6308011a
<!DOCTYPE html>
<html>
<head>
<title>版本号转换工具</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.container { max-width: 600px; margin: 0 auto; }
.input-group { margin-bottom: 15px; }
input, button { margin: 5px; padding: 5px; }
.result { margin-top: 15px; padding: 10px; background: #f0f0f0; }
</style>
</head>
<body>
<div class="container">
<h2>版本号转换工具</h2>
<div class="input-group">
<h3>版本号转十六进制</h3>
<input type="text" id="version" placeholder="版本号 (例如: 3.9.8.25)" />
<button onclick="convertVersion()">转换</button>
<div id="versionResult" class="result"></div>
</div>
<div class="input-group">
<h3>十六进制转版本号</h3>
<input type="text" id="hex" placeholder="十六进制 (例如: 0x63090819)" />
<button onclick="convertHex()">转换</button>
<div id="hexResult" class="result"></div>
</div>
</div>
<script>
function versionToHex(version, tail) {
if (!/^\d+\.\d+\.\d+\.\d+$/.test(version)) {
throw new Error('版本号格式必须为 x.x.x.x');
}
let [major, minor, patch, build] = version.split('.').map(Number);
if (major > 255 || minor > 255 || patch > 255 || build > 255) {
throw new Error('版本号各部分不能超过255');
}
let baseHex = `0x6${major.toString(16).padStart(1, '0')}${minor.toString(16).padStart(2, '0')}${patch.toString(16).padStart(2, '0')}00`;
let tailHex = build.toString(16).padStart(2, '0');
return {
baseHex: baseHex,
finalHex: (parseInt(baseHex, 16) | parseInt(tailHex, 16)).toString(16).padStart(8, '0')
};
}
function hexToVersion(hex) {
hex = hex.replace('0x', '').padStart(8, '0');
if (!/^[0-9a-fA-F]{8}$/.test(hex)) {
throw new Error('无效的十六进制格式');
}
if (hex[0] !== '6') {
throw new Error('十六进制必须以6开头');
}
const major = parseInt(hex[1], 16);
const minor = parseInt(hex.substr(2, 2), 16);
const patch = parseInt(hex.substr(4, 2), 16);
const tail = parseInt(hex.substr(6, 2), 16);
return {
version: `${major}.${minor}.${patch}.${tail}`,
tail: tail
};
}
function convertVersion() {
const versionInput = document.getElementById('version').value;
const result = document.getElementById('versionResult');
try {
const converted = versionToHex(versionInput);
result.innerHTML = `基础值(去掉尾号): ${converted.baseHex}<br>完整值(包含尾号): 0x${converted.finalHex}`;
} catch (error) {
result.innerHTML = `错误: ${error.message}`;
}
}
function convertHex() {
const hexInput = document.getElementById('hex').value;
const result = document.getElementById('hexResult');
try {
const converted = hexToVersion(hexInput);
result.innerHTML = `版本号: ${converted.version}<br>尾号: ${converted.tail}`;
} catch (error) {
result.innerHTML = `错误: ${error.message}`;
}
}
</script>
</body>
</html>
CE 查询修改,找到六个地址,WechatWin.dll+XXXXX 这样
然后照着网上写个 python 写个修改工具
from pymem import Pymem
def fix_version(pm: Pymem):
WeChatWindll_base = 0
for m in list(pm.list_modules()):
path = m.filename
if path.endswith("WeChatWin.dll"):
WeChatWindll_base = m.lpBaseOfDll
break
# 您提供的地址偏移量
ADDRS = [
0x2C43B7C,
0x2C6421C,
0x2C64370,
0x2C7D238,
0x2C80384,
0x2C818C4
]
for offset in ADDRS:
addr = WeChatWindll_base + offset
v = pm.read_uint(addr)
if v == 0x63090a1b: # 如果已经是目标版本,跳过
continue
elif v != 0x6308011a: # 检查是否为当前版本 3.8.1.26
raise Exception("版本不匹配,当前代码只适配微信版本3.8.1.26")
pm.write_uint(addr, 0x63090a1b) # 修改为目标版本 3.9.10.27
print("修改完成,可以扫码登录了")
if __name__ == "__main__":
try:
pm = Pymem("WeChat.exe")
fix_version(pm)
except Exception as e:
print(f"详细错误信息: {str(e)}")
可惜我不会逆向。
评论已关闭