|
发表于 2022-11-25 19:44:36
|
显示全部楼层
江苏省南京市
.版本 2
.子程序 查询好友信息, , , 3.7.6.29 微信id查好友信息,传入群id就是查群信息,偏移不变
.参数 微信ID, 文本型
.参数 好友信息, 好友信息, 参考
.局部变量 进程句柄, 整数型
.局部变量 组装代码, 字节集
.局部变量 线程句柄, 整数型
.局部变量 参数地址, 整数型
.局部变量 字节集数据, 字节集
.局部变量 信息缓冲区, 整数型
.局部变量 call_1, 整数型
.局部变量 call_2, 整数型
.局部变量 call_3, 整数型
.局部变量 call_4, 整数型
.局部变量 内存地址, 整数型
.局部变量 Addr, 整数型
.局部变量 变量, 整数型
.局部变量 call_5, 整数型
.局部变量 call_6, 整数型
.局部变量 call_7, 整数型
.局部变量 内存地址2, 整数型
.局部变量 EBX, 整数型
' 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 (进程句柄) ' 关闭
|
|