天天看点

微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

由于本人对易语言刚入门,这是第一个易语言程序,请大家不要见笑!

本实例只完成 HTTP调试  微信启动与注入  获取即时消息这几个功能,其它更多功能请自行开发,效果如图:

微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

 一、启动微信:

.版本 2
.支持库 const

.子程序 _按钮_启动微信_被单击
.局部变量 微信登录窗口句柄, 整数型
.局部变量 微信启动文件, 文本型
.局部变量 进程启动信息, STARTUPINFO, , , 进程启动信息结构体
.局部变量 进程标识, PROCESS_INFORMATION, , , 进程标识结构体
.局部变量 创建进程返回, 整数型

' 通过注册表获取微信启动目录
微信启动文件 = 取注册表值 (#HKEY_CURRENT_USER, “Software\Tencent\WeChat”, “InstallPath”)
.如果真 (微信启动文件 = “”)
    微信启动文件 = “C:\Program Files (x86)\Tencent\WeChat”
.如果真结束
微信启动文件 = 微信启动文件 + “\WeChat.exe”
' 检查是否有微信登录
.如果真 (查找微信进程 () = 真)
    信息框 (“已有微信登陆,请退出所有微信再启动!”, 0, , )
    返回 ()
.如果真结束

' 创建微信启动里程
创建进程返回 = CreateProcessA (0, 微信启动文件, 0, 0, 假, 0, 0, 0, 进程启动信息, 进程标识)
.如果真 (创建进程返回 = 0)
    信息框 (“启动微信失败”, 0, , )
    返回 ()
.如果真结束
微信进程ID = 进程标识.dwProcessId






.子程序 查找微信进程, 逻辑型, 公开, 查找是否有微信运行
.局部变量 快照句柄, 整数型
.局部变量 进程信息, PROCESSENTRY32
.局部变量 下一个, 逻辑型

进程信息.dwSize = 1024
快照句柄 = CreateToolhelp32Snapshot (2, 0)
下一个 = Process32First (快照句柄, 进程信息)
.循环判断首 ()
    .如果真 (到文本 (进程信息.szExeFile) = “WeChat.exe”)
        返回 (真)
    .如果真结束
    下一个 = Process32Next (快照句柄, 进程信息)
.循环判断尾 (下一个 = 真)

返回 (假)
           
微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

二、微信DLL注入

.版本 2
.支持库 const

.子程序 _按钮_注入微信_被单击, , , 注入微信DLL
.局部变量 进程ID, 整数型
.局部变量 窗口句柄, 整数型
.局部变量 DLL文件, 文本型

DLL文件 = 取当前目录 () + “\WeChatDlls\” + #DLL名称
.如果真 (文件是否存在 (DLL文件) = 假)
    信息框 (“未找到DLL文件:” + DLL文件, 0, , )
    返回 ()
.如果真结束

' 查找微信登录窗口句柄
窗口句柄 = API_寻找顶级窗口 (“WeChatLoginWndForPC”, 0)
.如果真 (窗口句柄 = 0)
    信息框 (“未找到微信登陆窗口”, 0, , )
    返回 ()
.如果真结束
' 通过句柄获取进程ID
API_GetWindowThreadProcessId (窗口句柄, 进程ID)
' 远程注入DLL
注入目标进程 (进程ID, DLL文件)


.子程序 注入目标进程, , , 远程注入DLL
.参数 进程ID, 整数型
.参数 DLL文件路径, 文本型
.局部变量 申请内存, 整数型
.局部变量 注入地址, 整数型
.局部变量 是否注入, 整数型
.局部变量 是否写入, 整数型
.局部变量 模块地址, 整数型


.如果真 (检查能否注入 (进程ID) = 假)
    信息框 (“dll已经注入,请退出所有微信重新注入!”, 0, , )
    返回 ()
.如果真结束

.如果真 (编辑框_端口.内容 = “”)
    信息框 (“请输入端口”, 0, , )
    返回 ()
.如果真结束

写配置项 (取运行目录 () + “\config.ini”, “Setting”, “port”, 编辑框_端口.内容)

' 打开进程
模块地址 = OpenProcess (#PROCESS_ALL_ACCESS, 假, 进程ID)

.如果真 (模块地址 = 0)
    信息框 (“进程打开失败”, 0, , )
    CloseHandle (模块地址)
    返回 ()
.如果真结束

' 在微信进程中申请内存
申请内存 = VirtualAllocEx (模块地址, 0, 取文本长度 (DLL文件路径) + 1, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE)
.如果真 (申请内存 = 0)
    信息框 (“申请内存失败”, 0, , )
    返回 ()
.如果真结束

' 写入dll到微信进程
是否写入 = WriteProcessMemory (模块地址, 申请内存, DLL文件路径, 取文本长度 (DLL文件路径) + 1, 0)
.如果真 (是否写入 = 0)
    信息框 (“写入dll到微信进程失败”, 0, , )
    返回 ()
.如果真结束

' 获取LoadLibraryA函数地址
注入地址 = API_GetProcAddress (API_GetModuleHandle (“kernel32.dll”), “LoadLibraryA”)
.如果真 (注入地址 = 0)
    信息框 (“获取LoadLibraryA函数地址失败”, 0, , )
    返回 ()
.如果真结束

' 远程线程注入dll
是否注入 = CreateRemoteThread (模块地址, 0, 0, 注入地址, 申请内存, 0, 0)
.如果真 (是否注入 = 0)
    信息框 (“远程线程注入dll失败”, 0, , )
    返回 ()
.如果真结束

' API_WaitForSingleObject (hThread, 10 × 1000)
VirtualFreeEx (模块地址, 申请内存, 取文本长度 (DLL文件路径) + 1, 32768)
CloseHandle (是否注入)

.如果真 (检查能否注入 (进程ID) = 假)
    时钟_检查登录.时钟周期 = 1000
.如果真结束
.如果真 (检查能否注入 (进程ID) = 真)
    信息框 (“注入失败”, 0, , )
.如果真结束
CloseHandle (模块地址)
           
微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息
微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

三、HTTP请求

.版本 2

.子程序 HTTP请求_GET, 文本型, , 本命令由【精易网页调试助手】生成,请配合精易模块使用。
.参数 请求地址, 文本型, , HTTP请求地址
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型

局_结果 = 到字节集 (网页_访问_对象 (请求地址, 0, ))
局_返回 = 编码_utf8到gb2312 (到文本 (局_结果))
返回 (局_返回)


.子程序 HTTP请求_POST, 文本型, , 本命令由【精易网页调试助手】生成,请配合精易模块使用。
.参数 请求地址, 文本型, , HTTP请求地址
.参数 请求数据, 文本型, , 请求数据为JSON
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型

局_结果 = 到字节集 (网页_访问_对象 (请求地址, 1, 请求数据))
局_返回 = 编码_utf8到gb2312 (到文本 (局_结果))
返回 (局_返回)
           
微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

四、获取即时消息

通过易语言中的 时钟  每3秒刷新一次最新消息!

.版本 2
.支持库 spec



.子程序 _时钟_检查登录_周期事件
.局部变量 网页文本, 文本型

网页文本 = HTTP请求_GET (“http://127.0.0.1:” + 编辑框_端口.内容 + “/?cmdid=1”)
.如果真 (网页文本 = “1”)
    时钟_检查登录.时钟周期 = 0
    调试输出 (“登录成功”)
    时钟_获取即时消息.时钟周期 = 3000
.如果真结束


.子程序 _时钟_获取即时消息_周期事件
.局部变量 网页文本, 文本型
.局部变量 json, 类_json
.局部变量 聊天内容, 文本型
.局部变量 聊天记录, 类_json
.局部变量 n, 整数型
.局部变量 Data数组, 类_json

网页文本 = HTTP请求_GET (“http://127.0.0.1:” + 编辑框_端口.内容 + “/?cmdid=7”)
' 编辑框_聊天记录.内容 = 网页文本

json.解析 (网页文本)
Data数组 = json.取属性 (“data”)
.计次循环首 (Data数组.成员数 (), n)
    聊天记录 = Data数组.取成员 (n - 1)
    编辑框_聊天记录.加入文本 (聊天记录.取通用属性 (“StrContent”) + #换行符 + #换行符)
.计次循环尾 ()

           
微信3.1.0.72逆向-微信3.1.0.72接口(WeChatHelper3.1.0.72.dll)-易语言调用实例方法 一、启动微信:二、微信DLL注入三、HTTP请求四、获取即时消息

聊天消息的JSON结构为:

{
    "cmdid": 7,
    "maxid": 5,
    "count": 75,
    "status": "ok",
    "qq": "2376140244",
    "data": [
{
            "localId": 42,
            "MsgSvrID": "2062239765205091112",
            "StrTalker": "[email protected]",
            "StrContent": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"611118464e36d48e86c891c79e25b07c\" encryver=\"1\" cdnthumbaeskey=\"611118464e36d48e86c891c79e25b07c\" cdnthumburl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" cdnthumblength=\"4043\" cdnthumbheight=\"140\" cdnthumbwidth=\"56\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" length=\"24332\" md5=\"692efd877bce4ad7dc41becca0d2278d\" hevc_mid_size=\"24332\" />\n</msg>\n",
            "CreateTime": 1609564091,
            "IsSender": 0,
            "type": 3,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "wxid_y7hw81zn588b12",
                "thumb": "keepmoving8\\FileStorage\\Image\\Thumb\\2021-01\\e03c67108d6c39c020c48696dbd36916_t.dat",
                "image": "keepmoving8\\FileStorage\\Image\\2021-01\\4953c7f182c4741eec97c9ab6bfe1eb4.dat",
                "video": ""
            }
        },
        {
            "localId": 43,
            "MsgSvrID": "3036343329427015238",
            "StrTalker": "[email protected]",
            "StrContent": "收满不收弹头40",
            "CreateTime": 1609564122,
            "IsSender": 0,
            "type": 1,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "wxid_87rw855vmv4h22",
                "thumb": "",
                "image": "",
                "video": ""
            }
        },
        {
            "localId": 44,
            "MsgSvrID": "6558585969683208319",
            "StrTalker": "JI282940039",
            "StrContent": "要的滴滴我",
            "CreateTime": 1609564128,
            "IsSender": 0,
            "type": 1,
            "SubType": 0,
            "CompressContent": "",
            "BytesExtra": {
                "wxid": "",
                "thumb": "",
                "image": "",
                "video": ""
            }
        }
    ]
}
           

这样,简单的易语言实例就介绍完了!详细请下载源码!

下载地址:https://tshelper.lanzous.com/i7V8llim3sh     https://download.csdn.net/download/keepmoving0407/15158700

交流群:1005923608   561112477 

继续阅读