|
发表于 2020-2-29 10:16:48
|
显示全部楼层
重庆市重庆市
.版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 g_WxPath, 文本型
.程序集变量 Module, 整数型
.程序集变量 pid, 整数型
.程序集变量 list, 整数型, , "0"
.程序集变量 index, 整数型
.子程序 __启动窗口_创建完毕
.如果真 (进程_是否存在 (“WeChat.exe”, ) = 假)
g_WxPath = 取文本zc项 (#现行用户, “Software\Tencent\WeChat\InstallPath”, )
进程_创建 (g_WxPath + “\WeChat.exe”, , , )
.如果真结束
pid = 进程_名取ID (“WeChat.exe”, )
Module = 进程_取模块基址 (pid, “WeChatWin.dll”)
.子程序 _按钮1_被单击
.局部变量 内存, 类_内存
.局部变量 link, 整数型
.局部变量 room_number, 整数型
.局部变量 _head1, 整数型
.局部变量 _head2, 整数型
.局部变量 _head3, 整数型
.局部变量 link_head, 整数型
.局部变量 room_offset, 整数型
重定义数组 (list, 假, 0)
编辑框1.内容 = “”
room_offset = 23187284 ' 16*F54
link = 内存.读整数 (pid, room_offset + Module) + 1992 + 128 ' 群链表指针
link_head = 内存.读整数 (pid, link) ' 链表地址
room_number = 内存.读整数 (pid, link + 4) ' 群数量
加入日志 (“进程ID:” + 到文本 (pid) + “模块句柄:” + 到文本 (Module) + “群链表指针:” + 进制_十到十六 (link, 真) + “群数量:” + 到文本 (room_number))
调试输出 (room_number)
_head1 = 内存.读整数 (pid, link_head)
_head2 = 内存.读整数 (pid, link_head + 4)
_head3 = 内存.读整数 (pid, link_head + 8)
调试输出 (_head1, _head2, _head3)
遍历xx (_head1)
遍历xx (_head2)
遍历xx (_head3)
.子程序 遍历xx
.参数 offset, 整数型
.局部变量 roomid, 文本型
.局部变量 Gurp_age, 文本型
.局部变量 Gurp_name, 文本型
.局部变量 Gurp_arr, 文本型
.局部变量 size, 整数型
.局部变量 _head1, 整数型
.局部变量 _head2, 整数型
.局部变量 _head3, 整数型
' 106395A8 107E5788 UNICODE "10496068702@chatroom"
' 106395AC 00000014
' 106395B0 00000020
.如果 (判断重复 (offset) = 真)
返回 ()
.否则
加入成员 (list, offset)
.如果结束
_head1 = 内存.读整数 (pid, offset)
_head2 = 内存.读整数 (pid, offset + 4)
_head3 = 内存.读整数 (pid, offset + 8)
index = index + 1
size = 内存.读整数 (pid, offset + 20)
roomid = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 16), size × 2))
' 106395D4 04295B40 UNICODE "^Gwxid_yzrp52kis0w522^Gwxid_oikine2ayfcc21^Gwxid_7"
' 106395D8 000000DE
' 106395DC 00000100
size = 内存.读整数 (pid, offset + 64)
Gurp_arr = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 60), size × 2))
' 群成员
' 106395E8 00A09C48 UNICODE "^G^G"
' 106395EC 00000004
' 106395F0 00000004
' size = 内存.读整数 (pid, offset + 84)
' Gurp_name = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 80), size × 2))
' 调试输出 (Gurp_name)
' 106395FC 00000008
' 10639600 107E5D78 UNICODE "wxid_yzrp52kis0w522"
' 10639604 00000013
' 10639608 00000020
size = 内存.读整数 (pid, offset + 108)
Gurp_age = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 104), size × 2))
加入日志 (“ID” + 到文本 (index) + “ ” + Gurp_age + “ ” + roomid)
Gurp_arr = 子文本替换 (Gurp_arr, “^G”, #换行符, , , 真)
加入日志 (Gurp_arr)
遍历xx (_head1)
遍历xx (_head2)
遍历xx (_head3)
.子程序 判断重复, 逻辑型
.参数 add, 整数型
.局部变量 i, 整数型
.计次循环首 (取数组成员数 (list), i)
.如果真 (list = add)
返回 (真)
.如果真结束
.计次循环尾 ()
返回 (假)
.子程序 加入日志
.参数 data, 文本型
编辑框1.加入文本 (data + #换行符 + #换行符)
.子程序 进程_取模块基址, 整数型, 公开
.参数 进程ID, 整数型
.参数 模块名, 文本型
.局部变量 i, 整数型
.局部变量 局部_返回值, 整数型
.局部变量 局部_, 精易_模块信息, , "0"
.如果真 (进程_ID取模块 (进程ID, 局部_) ≠ 0)
.计次循环首 (取数组成员数 (局部_), i)
.如果真 (到小写 (到文本 (局部_ .模块文件名)) = 到小写 (模块名))
局部_返回值 = 局部_ .base
跳出循环 ()
.如果真结束
.计次循环尾 ()
.如果真结束
返回 (局部_返回值)
.子程序 _按钮2_被单击
.局部变量 link_head, 整数型
.局部变量 link, 整数型
.局部变量 user_offset, 整数型
.局部变量 user_number, 整数型
.局部变量 _head1, 整数型
.局部变量 _head2, 整数型
.局部变量 _head3, 整数型
编辑框1.内容 = “”
重定义数组 (list, 假, 0)
user_offset = 23187284 ' 16*F54
link = 内存.读整数 (pid, user_offset + Module) + 40 + 132 ' 群链表指针
link_head = 内存.读整数 (pid, link) ' 链表地址
user_number = 内存.读整数 (pid, link + 4) ' 群数量
加入日志 (“进程ID:” + 到文本 (pid) + “模块句柄:” + 到文本 (Module) + “群链表指针:” + 进制_十到十六 (link, 真) + “群数量:” + 到文本 (user_number))
_head1 = 内存.读整数 (pid, link_head)
_head2 = 内存.读整数 (pid, link_head + 4)
_head3 = 内存.读整数 (pid, link_head + 8)
调试输出 (_head1, _head2, _head3)
遍历好友 (_head1)
遍历好友 (_head2)
遍历好友 (_head3)
.子程序 遍历好友
.参数 offset, 整数型
.局部变量 wxid, 文本型
.局部变量 wxh, 文本型
.局部变量 user_name, 文本型
.局部变量 Gurp_list, 文本型
.局部变量 sex, 整数型
.局部变量 size, 整数型
.局部变量 _head1, 整数型
.局部变量 _head2, 整数型
.局部变量 _head3, 整数型
.如果 (判断重复 (offset) = 真)
返回 ()
.否则
加入成员 (list, offset)
.如果结束
_head1 = 内存.读整数 (pid, offset)
_head2 = 内存.读整数 (pid, offset + 4)
_head3 = 内存.读整数 (pid, offset + 8)
index = index + 1
' $+10 >0AC70EA0 UNICODE "10496068702@chatroom"
' $+14 >00000014
' $+18 >00000020
size = 内存.读整数 (pid, offset + 20)
wxid = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 16), size × 2))
' $+8C >0*FBB58 UNICODE "VXWebAPI技术交流群"
' $+90 >0000000D
' $+94 >00000010
' $+C8 >00000001
size = 内存.读整数 (pid, offset + 144)
user_name = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 140), size × 2))
调试输出 (user_name)
' $+44 >036AF570 UNICODE "xueyy08"
' $+48 >00000007
' $+4C >00000008
size = 内存.读整数 (pid, offset + 72)
wxh = 编码_Unicode到Ansi (内存.读字节集 (pid, 内存.读整数 (pid, offset + 68), size × 2))
' $+70 >00000003
sex = 内存.读整数 (pid, offset + 112)
加入日志 (“ID” + 到文本 (index) + “ ” + user_name + “ ” + wxid + “ ” + wxh + “ ” + 到文本 (sex))
遍历好友 (_head1)
遍历好友 (_head2)
遍历好友 (_head3)
|
|