WXID转微信号方法

千寻框架用了半年已经不行了,后面寻找相关框架都一样,但是还是有相关类似的方法实现的

创建一个工具来批量转换 Wxid(微信ID)到微信,需要使用一些编程技术来实现。以下是一个基于易语言的示例解决方案,这个工具可以批量转换 Wxid 为微信

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口

.子程序 _按钮1_被单击
.局部变量 好友信息, 好友信息

查询好友信息 (“weixin”, 好友信息)
调试输出 (好友信息.昵称)
' 调用了模块,我用的是精易模块6.9和超级模块9.2

.子程序 查询好友信息, , , $SEH  3.7.6.29 通过微信id查询好友信息
.参数 微信ID, 文本型
.参数 好友信息, 好友信息, 参考
.局部变量 进程句柄, 整数型
.局部变量 组装代码, 字节集
.局部变量 线程句柄, 整数型
.局部变量 参数地址, 整数型
.局部变量 字节集数据, 字节集
.局部变量 信息缓冲区, 整数型
.局部变量 call_1, 整数型
.局部变量 call_2, 整数型
.局部变量 call_3, 整数型
.局部变量 call_4, 整数型
.局部变量 内存地址, 整数型
.局部变量 Addr, 整数型
.局部变量 变量, 整数型
.局部变量 call_5, 整数型
.局部变量 call_6, 整数型
.局部变量 call_7, 整数型
.局部变量 内存地址2, 整数型
.局部变量 EBX, 整数型
.局部变量 进程PID, 整数型
.局部变量 WeChatWin_DLL, 整数型

' 3.7.6.29
' 63D20000  基址
' 6413E9B2    8D45 08         lea eax,dword ptr ss:[ebp+0x8]           ; wxid结构体
' 6413E9B5    B9 ACC62666     mov ecx,WeChatWi.6626C6AC                ;WeChatWin_DLL+254C6AC
' 6413E9BA    50              push eax
' 6413E9BB    E8 E05A3F00     call WeChatWi.645344A0                   ; call 5
' 6413E9C0    84C0            test al,al                               ; 忽略
' 6413E9C2    0F85 73020000   jnz WeChatWi.6413EC3B                    ; 忽略
' 6413E9C8    E8 F34DD1FF     call WeChatWi.63E537C0                   ; call 6
' 6413E9CD    8D4D 08         lea ecx,dword ptr ss:[ebp+0x8]           ; wxid结构体
' 6413E9D0    51              push ecx
' 6413E9D1    8BC8            mov ecx,eax
' 6413E9D3    E8 D8E10D00     call WeChatWi.6421CBB0                   ; call 7   查询call在这里面

' 查询call
' 6421CC13    8D85 04FCFFFF   lea eax,dword ptr ss:[ebp-0x3FC]         ; 好友信息缓冲区
' 6421CC19    C745 FC 0000000>mov dword ptr ss:[ebp-0x4],0x0           ; 忽略
' 6421CC20    50              push eax                                 ; push  缓冲区地址
' 6421CC21    56              push esi                                 ; push  微信id结构体
' 6421CC22    8BCF            mov ecx,edi
' 6421CC24    E8 D7CFFFFF     call WeChatWi.64219C00                   ; 查询call,


进程PID = 进程_名取ID (“WeChat.exe”)
WeChatWin_DLL = Get_modH (进程PID, “WeChatWin.dll”)
进程句柄 = OpenProcess (2035711, 0, 进程PID)

call_4 = WeChatWin_DLL + 十六到十 (“4F9C00”)
call_5 = WeChatWin_DLL + 十六到十 (“8144A0”)
call_6 = WeChatWin_DLL + 十六到十 (“1337C0”)

内存地址 = VirtualAllocEx (进程句柄, 0, 2048, 4096, 64)
信息缓冲区 = VirtualAllocEx (进程句柄, 0, 4096, 4096, 64)
写内存整数型 (进程PID, 内存地址 + 1024, WeChatWin_DLL + 十六到十 (“630E30”))
写内存整数型 (进程PID, 内存地址 + 1028, 内存地址 + 1024)
EBX = 内存地址 + 1028


置汇编代码 ({  })
Pushad ()
Mov_EAX (内存地址 + 100)  ' 微信id结构体
Mov_ECX (WeChatWin_DLL + 十六到十 (“254C6AC”))  ' 常量
Push_EAX ()
Call_Ptr (内存地址 + 1004)  ' call 5
Call_Ptr (内存地址 + 1008)  ' call 6
Mov_ECX (内存地址 + 100)  ' 微信id结构体
' 寄存器的值也要传过去,不然微信崩溃
Mov_ECX_EAX ()
Mov_EDI_ECX ()
Mov_EAX (信息缓冲区)
Push_EAX ()
Mov_ESI (内存地址 + 100)
Push_ESI ()
Mov_ECX_EDI ()
Call_Ptr (内存地址 + 1000)  ' call 4
Mov_EBX (EBX)
Popad ()
ret ()
组装代码 = 取汇编代码 ()


写内存整数型 (进程PID, 内存地址 + 1000, call_4)
写内存整数型 (进程PID, 内存地址 + 1004, call_5)
写内存整数型 (进程PID, 内存地址 + 1008, call_6)
WriteProcessMemory_字节集 (进程句柄, 内存地址 + 200, 编码_Ansi到Unicode (微信ID), 取字节集长度 (编码_Ansi到Unicode (微信ID)), 变量)
写内存整数型 (进程PID, 内存地址 + 100, 内存地址 + 200)
写内存整数型 (进程PID, 内存地址 + 104, 取字节集长度 (编码_Ansi到Unicode (微信ID)))
写内存整数型 (进程PID, 内存地址 + 108, 取字节集长度 (编码_Ansi到Unicode (微信ID)))
写内存整数型 (进程PID, 内存地址 + 112, 0)
写内存整数型 (进程PID, 内存地址 + 116, 0)

写内存字节集 (进程PID, 内存地址, 组装代码, 取字节集长度 (组装代码))  ' 这里是将组装好的机器码写入申请的那块内存。
线程句柄 = CreateRemoteThread (进程句柄, 0, 0, 内存地址, 参数地址, 0, 0)  ' 写进去之后执行。
WaitForSingleObject (线程句柄, 2000)  ' 等待执行完毕。

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“10”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“14”)) × 2)
好友信息.微信ID = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“24”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“28”)) × 2)
好友信息.微信号 = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“38”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“4C”)) × 2)
好友信息.V3 = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“58”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“5C”)) × 2)
好友信息.备注 = 编码_Unicode到Ansi (字节集数据)


Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“6c”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“70”)) × 2)
好友信息.昵称 = 编码_Unicode到Ansi (字节集数据)


Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“AC”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“B0”)) × 2)
好友信息.英文简称 = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“C0”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“C4”)) × 2)
好友信息.英文全称 = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“D4”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“D8”)) × 2)
好友信息.备注英文简称 = 编码_Unicode到Ansi (字节集数据)

Addr = 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“E8”))
字节集数据 = 读内存字节集 (进程PID, Addr, 读内存整数型 (进程PID, 信息缓冲区 + 十六到十 (“EC”)) × 2)
好友信息.备注英文全称 = 编码_Unicode到Ansi (字节集数据)

' VirtualFreeEx (进程句柄, 内存地址, 0, 32768)
CloseHandle (线程句柄)  ' 关闭
CloseHandle (进程句柄)  ' 关闭
 

下面就可以实现WXID转换成微信号了

相关工具的学习下载链接:wxid转微信号工具.zip - 蓝奏云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值