X64微信逆向之-查找锁定微信CALL

X64微信逆向之-查找锁定微信CALL

阿冲老师是从2023年开始参考网上微信hook图文等教程跟着大家一样零起点开始学习的,走了很多误区踩了很多坑,现在一眨眼已经2024年了目前网上的教程都停留在旧版本32位微信,因此决定做些新手教程跟大家一起分享,如有写得不好的,还望各位老师们多多指教。(注:教程仅供学习交流使用,请勿用于非法用途与与商业用途)

版本与工具:

X64微信:v 3.9.9.35 、64dgb、Cheat Engine

我们就以找比较简单锁定微信CALL入手,首先找CALL方法很多:

### 微信小程序云开发获取用户手机号方法 #### 函数调用逻辑 当用户同意授权其手机号码时,前端会触发`getPhoneNumber`事件处理程序。此函数接收由微信返回的数据包作为参数,并从中提取`cloudID`字段用于后续操作。 ```javascript // 获取手机号 getPhoneNumber(e){ let cloudID = e.detail.cloudID; // 开放数据ID const that = this; if (!cloudID) { app.showToast('用户未授权'); return; } // 调用微信云函数来解密并获得真实的电话号码 wx.cloud.callFunction({ name: 'getPhoneNum', data: { weRunData: wx.cloud.CloudID(cloudID), } }).then(res => { console.log('成功获取到的手机号:', res.result.phoneNumber); }).catch(err => { console.error('失败原因:', err); }); } ``` 在此过程中,如果检测不到有效的`cloudID`则提示用户尚未完成必要的权限授予过程[^2]。一旦获得了合法的身份验证凭证,则通过调用名为`getPhoneNum`的自定义云函数来进行下一步骤的操作,在服务器端执行敏感信息的安全处理流程[^1]。 对于后端部分而言,Python脚本负责对接收到加密后的资料进行解析工作: ```python import json from base64 import b64decode from Crypto.Cipher import AES from binascii import a2b_hex, b2a_base64 class WXBizDataCrypt(object): def __init__(self, appId, sessionKey): self.appId = appId self.session_key = sessionKey def _unpad(self,s): return s[:-ord(s[len(s)-1:])] def decrypt(self, encrypted_data, iv): cipher = AES.new(a2b_hex(self.session_key), AES.MODE_CBC, a2b_hex(iv)) decrypted = json.loads(self._unpad(cipher.decrypt(b64decode(encrypted_data)).decode())) if decrypted['watermark']['appid'] != self.appId: raise Exception('Invalid Buffer') return decrypted['purePhoneNumber'] ``` 这段代码展示了如何利用AES算法以及Base64编码方式对来自客户端传入已加密的信息流实施逆向转换作业,最终得到明文形式下的纯数字串表示的实际移动设备联系手段——即用户的手机号码[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值