提交 db32e56a 编写于 作者: L ljc545w

适配3.7.0.30

上级 9423b444
#include "pch.h"
#define AddPublicNoticeCallOffset 0x64DAC1C4 - 0x62D70000
#define AddPublicNoticeParamOffset 0x64C51DC4 - 0x62D70000
#define AddPublicNoticeCallOffset 0x1203DB14 - 0x10000000
#define AddPublicNoticeParamOffset 0x7A583DCC - 0x786A0000
struct AddBrandContactStruct {
DWORD handle;
......
#include "pch.h"
// 添加好友CALL1偏移
#define AddFriendByV3Call1Offset 0x594944E0 - 0x593B0000
#define AddFriendByV3Call1Offset 0x78784540 - 0x786A0000
// 添加好友CALL2偏移
#define AddFriendByV3Call2Offset 0x59B20890 - 0x593B0000
#define AddFriendByV3Call2Offset 0x78E11890 - 0x786A0000
// 添加好友CALL3偏移
#define AddFriendByV3Call3Offset 0x59B20980 - 0x593B0000
#define AddFriendByV3Call3Offset 0x78E11980 - 0x786A0000
// 添加好友CALL4偏移
#define AddFriendByV3Call4Offset 0x63A23940 - 0x635C0000
#define AddFriendByV3Call4Offset 0x78B03970 - 0x786A0000
// 添加好友参数偏移
#define AddFriendByV3ParamOffset 0x5B7138F4 - 0x593B0000
#define AddFriendByV3ParamOffset 0x7AA068F4 - 0x786A0000
struct AddFriendByV3ParamStruct {
DWORD fill0 = 0x0;
......@@ -77,7 +77,7 @@ BOOL __stdcall AddFriendByV3(wchar_t* v3, wchar_t* message,int AddType) {
mov edi, pmessage;
sub esp, 0x14;
mov ecx, esp;
push - 0x1;
push -0x1;
mov eax, edi;
push eax;
call AddFriendByV3Call2;
......
#include "pch.h"
// ӺCALL1ƫ
#define AddFriendByWxidCall1Offset 0x594944E0 - 0x593B0000
#define AddFriendByWxidCall1Offset 0x78784540 - 0x786A0000
// ӺCALL2ƫ
#define AddFriendByWxidCall2Offset 0x59B20890 - 0x593B0000
#define AddFriendByWxidCall2Offset 0x78E11890 - 0x786A0000
// ӺCALL3ƫ
#define AddFriendByWxidCall3Offset 0x59B20980 - 0x593B0000
#define AddFriendByWxidCall3Offset 0x78E11980 - 0x786A0000
// ӺCALL4ƫ
#define AddFriendByWxidCall4Offset 0x59813940 - 0x593B0000
#define AddFriendByWxidCall4Offset 0x78B03970 - 0x786A0000
// ӺѲƫ
#define AddFriendByWxidParamOffset 0x5B7138F4 - 0x593B0000
#define AddFriendByWxidParamOffset 0x7AA068F4 - 0x786A0000
struct AddFriendByWxidParamStruct {
DWORD fill0 = 0x0;
......
#include "pch.h"
// 检查好友状态CALL1偏移
#define CheckFriendStatusCall1Offset 0x594944E0 - 0x593B0000
#define CheckFriendStatusCall1Offset 0x78784540 - 0x786A0000
// 检查好友状态CALL2偏移
#define CheckFriendStatusCall2Offset 0x59B20890 - 0x593B0000
#define CheckFriendStatusCall2Offset 0x78E11890 - 0x786A0000
// 检查好友状态CALL3偏移
#define CheckFriendStatusCall3Offset 0x59B20980 - 0x593B0000
#define CheckFriendStatusCall3Offset 0x78E11980 - 0x786A0000
// 检查好友状态CALL4偏移
#define CheckFriendStatusCall4Offset 0x59813940 - 0x593B0000
#define CheckFriendStatusCall4Offset 0x78B03970 - 0x786A0000
// 检查好友状态参数偏移
#define CheckFriendStatusParamOffset 0x5B7138F4 - 0x593B0000
#define CheckFriendStatusParamOffset 0x7AA068F4 - 0x786A0000
// 好友状态码HOOK地址偏移
#define CheckFriendStatusHookOffset 0x59937373 - 0x593B0000
#define CheckFriendStatusHookOffset 0x10587373 - 0x10000000
// HOOK的CALL偏移
#define CheckFriendStatusNextCallOffset 0x59937410 - 0x593B0000
#define CheckFriendStatusNextCallOffset 0x10587410 - 0x10000000
// HOOK跳转的地址偏移
#define CheckFriendStatusHookJmpBackOffset 0x59937378 - 0x593B0000
#define CheckFriendStatusHookJmpBackOffset 0x10587378 - 0x10000000
// HOOK的CALL地址
DWORD CheckFriendStatusNextCallAddress = GetWeChatWinBase() + CheckFriendStatusNextCallOffset;
......@@ -143,10 +143,10 @@ VOID __stdcall CheckFriendStatus(wchar_t* wxid) {
mov edi, 0x6;
mov esi, 0x0;
sub esp, 0x18;
mov eax, esp;
mov dword ptr[eax], 0x0;
mov dword ptr[eax + 0x14], 0xF;
mov dword ptr[eax + 0x10], 0x0;
mov ecx, esp;
mov dword ptr[ecx], 0x0;
mov dword ptr[ecx + 0x14], 0xF;
mov dword ptr[ecx + 0x10], 0x0;
sub esp, 0x18;
lea eax, FriendStatusParam;
mov ecx, esp;
......
#include "pch.h"
#define DeleteUserCall1Offset 0x04417570 - 0x04360000
#define DeleteUserCall2Offset 0x0441D570 - 0x04360000
#define DeleteUserCall3Offset 0x047C8570 - 0x04360000
#define DeleteUserCall1Offset 0x100B75D0 - 0x10000000
#define DeleteUserCall2Offset 0x100BD5C0 - 0x10000000
#define DeleteUserCall3Offset 0x104685A0 - 0x10000000
BOOL __stdcall DeleteUser(wchar_t* wxid) {
DWORD WeChatWinBase = GetWeChatWinBase();
......
......@@ -2,7 +2,7 @@
#include <vector>
// 通讯录左树偏移
#define LeftTreeOffset 0x23638F4
#define LeftTreeOffset 0x23668F4
// 保存所有好友信息的动态数组
vector<WxFriendStruct> WxFriendList;
......
#include "pch.h"
// 获取群成员CALL1偏移
#define GetChatRoomMembersCall1Offset 0x54926F80 - 0x54270000
#define GetChatRoomMembersCall1Offset 0x106B6F80 - 0x10000000
// 获取群成员CALL2偏移
#define GetChatRoomMembersCall2Offset 0x54352990 - 0x54270000
#define GetChatRoomMembersCall2Offset 0x100E29F0 - 0x10000000
// 获取群成员CALL3偏移
#define GetChatRoomMembersCall3Offset 0x546B88C0 - 0x54270000
#define GetChatRoomMembersCall3Offset 0x104488C0 - 0x10000000
// 清空缓存CALL偏移
#define DeleteGetChatRoomMembersCacheCallOffset 0x549271A0 - 0x54270000
#define DeleteGetChatRoomMembersCacheCallOffset 0x106B71A0 - 0x10000000
/*
* 外部调用的返回类型
......
#include "pch.h"
// 联系人相关库偏移
#define SqlHandleMicroMsgOffset 0x2363934
#define SqlHandleMicroMsgOffset 0x2366934
// 公众号相关库偏移
#define SqlHandlePublicMsgOffset 0x239B3C8
#define SqlHandlePublicMsgOffset 0x239E3C8
// 聊天记录相关库偏移
#define SqlHandleMSGOffset 0x239CF68
#define SqlHandleMSGOffset 0x239FF68
// 保存数据库信息的容器
vector<DbInfoStruct> dbs;
......
#include "pch.h"
#define HookImageMsgAddrOffset 0x61211FF6 - 0x60AE0000
#define HookImageMsgNextCallOffset 0x61211430 - 0x60AE0000
#define AutoDownloadTimeSettingOffset 0x239BC50
#define HookImageMsgAddrOffset 0x10732D26 - 0x10000000
#define HookImageMsgNextCallOffset 0x10732160 - 0x10000000
#define AutoDownloadTimeSettingOffset 0x239EC50
BOOL ImageMsgHooked = false;
static DWORD WeChatWinBase = GetWeChatWinBase();
......@@ -75,7 +75,7 @@ void __stdcall HookImageMsg() {
if (ImageMsgHooked)
return;
HookAnyAddress(HookImageMsgAddr, dealImageMsg, ImageMsgOldAsm);
char settime[] = "00:00-23:59";
char settime[] = "00:00-00:00";
DWORD AutoDownloadTimeSettingAddr = GetWeChatWinBase() + AutoDownloadTimeSettingOffset;
WriteProcessMemory(GetCurrentProcess(), (LPVOID)AutoDownloadTimeSettingAddr, settime, strlen(settime) + 1, 0);
ImageMsgHooked = true;
......
#include "pch.h"
#define HookVoiceMsgAddrOffset 0x610528DA - 0x60AE0000
#define HookVoiceMsgNextCallOffset 0x620F1040 - 0x60AE0000
#define HookVoiceMsgAddrOffset 0x105728DA - 0x10000000
#define HookVoiceMsgNextCallOffset 0x11612540 - 0x10000000
BOOL VoiceMsgHooked = false;
static DWORD WeChatWinBase = GetWeChatWinBase();
......
#include "pch.h"
// 微信日志HOOK地址偏移
#define HookLogMsgInfoAddrOffset 0x549DF444 - 0x54270000
#define HookLogMsgInfoAddrOffset 0x78E10444 - 0x786A0000
// HOOK的CALL偏移
#define HookLogMsgInfoNextCallOffset 0x55C7E50E - 0x54270000
#define HookLogMsgInfoNextCallOffset 0x7A0AF9BE - 0x786A0000
// HOOK的跳转地址偏移
#define HookLogMsgJmpBackOffset 0x549DF449 - 0x54270000
#define HookLogMsgJmpBackOffset 0x78E10449 - 0x786A0000
// 微信日志HOOK地址
DWORD HookLogMsgInfoAddr = GetWeChatWinBase() + HookLogMsgInfoAddrOffset;
......
......@@ -10,14 +10,14 @@ using namespace std;
#define CLTIP "127.0.0.1"
// 接收消息的HOOK地址偏移
#define ReceiveMessageHookOffset 0x547C0F4C - 0x54270000
#define ReceiveMessageHookOffset 0x78BF0F4C - 0x786A0000
// 接收消息HOOK的CALL偏移
#define ReceiveMessageNextCallOffset 0x54D04E60 - 0x54270000
#define ReceiveMessageNextCallOffset 0x79136350 - 0x786A0000
// 发送消息的HOOK地址偏移
#define SendMessageHookOffset 0x102C8E32 - 0x0FDE0000
#define SendMessageHookOffset 0x78B88E42 - 0x786A0000
// 发送消息HOOK的CALL偏移
#define SendMessageNextCallOffset 0x101E8170 - 0x0FDE0000
#define SendMessageNextCallOffset 0x78AA8170 - 0x786A0000
static int SRVPORT = 0;
......@@ -60,7 +60,7 @@ BOOL SendSocketMessage(ReceiveMsgStruct* ms)
if (clientsocket < 0)
{
#ifdef _DEBUG
cout << "create socket error:" << strerror(errno) << " errno:" << errno << endl;
cout << "create socket error," << " errno:" << errno << endl;
#endif
return false;
}
......@@ -74,7 +74,7 @@ BOOL SendSocketMessage(ReceiveMsgStruct* ms)
if (connect(clientsocket, reinterpret_cast<sockaddr*>(&clientAddr), sizeof(sockaddr)) < 0)
{
#ifdef _DEBUG
cout << "connect error:" << strerror(errno) << " errno:" << errno << endl;
cout << "connect error,"<< " errno:" << errno << endl;
#endif
delete ms;
return false;
......@@ -94,7 +94,7 @@ BOOL SendSocketMessage(ReceiveMsgStruct* ms)
if (ret == -1 || ret == 0)
{
#ifdef _DEBUG
printf("send fail %s\n", strerror(errno));
cout << "send fail," << " errno:" << errno << endl;
#endif
delete ms;
delete sms;
......
......@@ -4,15 +4,15 @@
#include <vector>
// 获取好友信息CALL1偏移
#define GetUserInfoCall1Offset 0x5946D570 - 0x593B0000
#define GetUserInfoCall1Offset 0x100BD5C0 - 0x10000000
// 获取好友信息CALL2偏移
#define GetUserInfoCall2Offset 0x59B20980 - 0x593B0000
#define GetUserInfoCall2Offset 0x10771980 - 0x10000000
// 获取好友信息CALL3偏移
#define GetUserInfoCall3Offset 0x59816270 - 0x593B0000
#define GetUserInfoCall3Offset 0x104662A0 - 0x10000000
// 清理好友信息缓存参数
#define DeleteUserInfoCacheCall1Offset 0x59A752B0 - 0x593B0000
#define DeleteUserInfoCacheCall1Offset 0x106C52B0 - 0x10000000
// 清理好友信息缓存CALL2
#define DeleteUserInfoCacheCall2Offset 0x5946E680 - 0x593B0000
#define DeleteUserInfoCacheCall2Offset 0x100BE6D0 - 0x10000000
/*
* 外部调用时的返回类型
......
#include "pch.h"
#define SearchContactByNetCall1Offset 0x638BF150 - 0x635C0000
#define SearchContactByNetCall2Offset 0x63ACF9C0 - 0x635C0000
#define SearchContactByNetCall1Offset 0x102FF150 - 0x10000000
#define SearchContactByNetCall2Offset 0x1050F9C0 - 0x10000000
#define HookSearchContactErrcodeAddrOffset 0x04DD97C4 - 0x047A0000
#define HookSearchContactErrcodeNextCallOffset 0x0425F170 - 0x03AF0000
#define HookSearchContactErrcodeAddrOffset 0x106397C4 - 0x10000000
#define HookSearchContactErrcodeNextCallOffset 0x10770170 - 0x10000000
#define HookUserInfoAddrOffset 0x04ABB520 - 0x047A0000
#define HookUserInfoNextCallOffset 0x04ABB770 - 0x047A0000
#define HookUserInfoAddrOffset 0x1031B520 - 0x10000000
#define HookUserInfoNextCallOffset 0x1031B770 - 0x10000000
static BOOL SearchContactHooked = false;
static char HookSearchContactErrcodeOldAsm[5] = { 0 };
......
......@@ -37,16 +37,16 @@ wstring GetSelfInfo() {
wstring selfinfo = L"";
DWORD WeChatWinBase = GetWeChatWinBase();
vector<DWORD> SelfInfoAddr = {
WeChatWinBase + 0x236307C,
WeChatWinBase + 0x2363548,
WeChatWinBase + 0x23630F4,
*(DWORD*)(WeChatWinBase + 0x236322C),
*(DWORD*)(WeChatWinBase + 0x239E11C),
*(DWORD*)(WeChatWinBase + 0x23633D4),
WeChatWinBase + 0x23632E8,
WeChatWinBase + 0x23631FC,
WeChatWinBase + 0x2363214,
WeChatWinBase + 0x2363128
WeChatWinBase + 0x236607C,
WeChatWinBase + 0x2366548,
WeChatWinBase + 0x23660F4,
*(DWORD*)(WeChatWinBase + 0x236622C),
*(DWORD*)(WeChatWinBase + 0x23A111C),
*(DWORD*)(WeChatWinBase + 0x23663D4),
WeChatWinBase + 0x23662E8,
WeChatWinBase + 0x23661FC,
WeChatWinBase + 0x2366214,
WeChatWinBase + 0x2366128
};
vector<wstring> SelfInfoKey = {
......
#include "pch.h"
#define SendAppMsgCall1Offset 0x04421340 - 0x04360000
#define SendAppMsgCall2Offset 0x04AD0980 - 0x04360000
#define SendAppMsgCall3Offset 0x04B1BB30 - 0x04360000
#define SendAppMsgCall1Offset 0x787613A0 - 0x786A0000
#define SendAppMsgCall2Offset 0x78E11980 - 0x786A0000
#define SendAppMsgCall3Offset 0x78E5CB30 - 0x786A0000
#ifndef USE_SOCKET
struct SendAppMsgStruct {
......
#include "pch.h"
// 发送文章CALL1偏移
#define SendArticleCall1Offset 0x54328A10 - 0x54270000
#define SendArticleCall1Offset 0x78758A70 - 0x786A0000
// 发送文章CALL2偏移
#define SendArticleCall2Offset 0x5465D5E0 - 0x54270000
#define SendArticleCall2Offset 0x78A8D5E0 - 0x786A0000
// 发送文章CALL3偏移
#define SendArticleCall3Offset 0x54377EB0 - 0x54270000
#define SendArticleCall3Offset 0x787A7F00 - 0x786A0000
// 发送文章CALL4偏移
#define SendArticleCall4Offset 0x5465D7B0 - 0x54270000
#define SendArticleCall4Offset 0x78A8D7B0 - 0x786A0000
// 发送文章CALL参数偏移
#define SendArticleParamOffset 0x565F3FE4 - 0x54270000
#define SendArticleParamOffset 0x7AA26FE4 - 0x786A0000
// 个人WXID偏移
#define SelfWxidAddrOffset 0x236607C
// 清空缓存CALL1偏移
#define SendArticleClearCacheCall1Offset 0x54916450 - 0x54270000
#define SendArticleClearCacheCall1Offset 0x78D46450 - 0x786A0000
// 清空缓存CALL2偏移
#define SendArticleClearCacheCall2Offset 0x54327720 - 0x54270000
#define SendArticleClearCacheCall2Offset 0x78757780 - 0x786A0000
/*
* 外部调用时传递的参数结构
......@@ -55,7 +57,7 @@ VOID SendArticleRemote(LPVOID lparameter) {
* return:DWORD,个人wxid保存地址
*/
DWORD GetSelfWxIdAddr() {
DWORD baseAddr = GetWeChatWinBase() + 0x236307C;
DWORD baseAddr = GetWeChatWinBase() + SelfWxidAddrOffset;
char wxidbuffer[0x100] = { 0 };
DWORD SelfWxIdAddr = 0x0;
sprintf_s(wxidbuffer, "%s", (char*)baseAddr);
......
#include "pch.h"
// 发送艾特消息CALL偏移
#define SendAtTextCallOffset 0x67391D30 - 0x66E70000
#define SendAtTextCallOffset 0x78BC1D30 - 0x786A0000
// 清空缓存CALL偏移
#define DeleteAtTextCacheCallOffset 0x54327720 - 0x54270000
#define DeleteAtTextCacheCallOffset 0x78757780 - 0x786A0000
/*
* 外部调用时传递的参数结构
......
#include "pch.h"
// 发送名片的CALL偏移
#define SendCardCallOffset 0x54791D30 - 0x54270000
#define SendCardCallOffset 0x78BC1D30 - 0x786A0000
// 清空缓存的CALL偏移
#define DeleteCardCacheCallOffset 0x54327720 - 0x54270000
#define DeleteCardCacheCallOffset 0x78757780 - 0x786A0000
/*
* 外部调用时提供的参数结构
......
#include "pch.h"
// 发送文件CALL1偏移
#define SendFileCall1Offset (0x549E0980 - 0x54270000)
#define SendFileCall1Offset (0x78763B70 - 0x786A0000)
// 发送文件CALL2偏移
#define SendFileCall2Offset (0x549E0980 - 0x54270000)
#define SendFileCall2Offset (0x78E11980 - 0x786A0000)
// 发送文件CALL3偏移
#define SendFileCall3Offset (0x5465D8C0 - 0x54270000)
// 发送文件CALL4偏移
#define SendFileCall4Offset (0x54698270 - 0x54270000)
// 发送文件参数偏移
#define SendFileParamsOffset (0x565D36B0 - 0x54270000)
#define SendFileCall3Offset (0x78A8D8C0 - 0x786A0000)
// 清空缓存CALL偏移
#define DeleteSendFileCacheCallOffset (0x54327720 - 0x54270000)
#define DeleteSendFileCacheCallOffset (0x78757780 - 0x786A0000)
/*
* 外部调用时传递的参数结构
......@@ -70,33 +66,31 @@ void __stdcall SendFile(wchar_t* receiver, wchar_t* FilePath) {
WxBaseStruct pReceiver(receiver);
WxBaseStruct pFilePath(FilePath);
WxFileStruct esi_(FilePath);
WxString nullbuffer = { 0 };
DWORD WeChatWinBase = GetWeChatWinBase();
DWORD WxSendFileCall1 = WeChatWinBase + SendFileCall1Offset;
DWORD WxSendFileCall2 = WeChatWinBase + SendFileCall2Offset;
DWORD WxSendFileCall3 = WeChatWinBase + SendFileCall3Offset;
DWORD WxSendFileCall4 = WeChatWinBase + SendFileCall4Offset;
DWORD WxSendFileParams = WeChatWinBase + SendFileParamsOffset;
DWORD DeleteSendFileCacheCall = WeChatWinBase + DeleteSendFileCacheCallOffset;
DWORD WxSendFileParams = 0;
char buffer[0x3B0] = { 0 };
DWORD edi_ = pReceiver.length;
DWORD ptrReceiver = (DWORD)pReceiver.buffer;
DWORD tempecx = 0;
__asm {
pushad;
pushfd;
call WxSendFileCall1;
sub esp, 0x14;
mov edi, esp;
mov dword ptr ds : [edi] , 0x0;
mov dword ptr ds : [edi + 0x4] , 0x0;
mov dword ptr ds : [edi + 0x8] , 0x0;
mov dword ptr ds : [edi + 0xC] , 0x0;
mov dword ptr ds : [edi + 0x10] , 0x0;
mov WxSendFileParams, eax;
lea eax, nullbuffer;
mov ecx, esp;
push eax;
call WxSendFileCall2;
push 0x00DBE200;
sub esp, 0x14;
mov edi, esp;
......@@ -109,13 +103,13 @@ void __stdcall SendFile(wchar_t* receiver, wchar_t* FilePath) {
lea eax, pFilePath;
mov ecx, esp;
push eax;
call WxSendFileCall1;
call WxSendFileCall2;
sub esp, 0x14;
lea eax, pReceiver;
mov ecx, esp;
push eax;
call WxSendFileCall2;
mov ecx, [WxSendFileParams];
mov ecx, dword ptr [WxSendFileParams];
lea eax, buffer;
push eax;
call WxSendFileCall3;
......
#include "pch.h"
// 发送图片CALL1偏移
#define SendImageCall1Offset (0x5432D730 - 0x54270000)
#define SendImageCall1Offset (0x7875D780 - 0x786A0000)
// 发送图片CALL2偏移
#define SendImageCall2Offset (0x549E0980 - 0x54270000)
#define SendImageCall2Offset (0x78E11980 - 0x786A0000)
// 发送图片CALL3偏移
#define SendImageCall3Offset (0x54791640 - 0x54270000)
#define SendImageCall3Offset (0x78BC1640 - 0x786A0000)
// 清空缓存的CALL偏移
#define DeleteSendImageCacheCallOffset (0x54327720 - 0x54270000)
#define DeleteSendImageCacheCallOffset (0x78757780 - 0x786A0000)
/*
* 外部调用时传递的参数结构
......@@ -50,18 +50,19 @@ void __stdcall SendImage(wchar_t* receiver, wchar_t* ImagePath) {
WxBaseStruct pReceiver(receiver);
WxBaseStruct pImagePath(ImagePath);
WxString nullStruct = { 0 };
DWORD tempeax = 0;
__asm {
pushad;
call SendImageCall1;
sub esp, 0x14;
mov ebx, eax;
mov tempeax, eax;
lea eax, nullStruct;
mov ecx, esp;
lea edi, pImagePath;
push eax;
call SendImageCall2;
mov ecx, ebx;
mov ecx, dword ptr [tempeax] ;
lea eax, pReceiver;
push edi;
push eax;
......
#include "pch.h"
// 发送文本消息的CALL偏移
#define SendTextCallOffset 0x67391D30 - 0x66E70000
#define SendTextCallOffset 0x78BC1D30 - 0x786A0000
// 清空缓存的CALL偏移
#define DeleteTextCacheCallOffset 0x54327720 - 0x54270000
#define DeleteTextCacheCallOffset 0x78757780 - 0x786A0000
/*
* 外部调用时传递的参数结构
......
#include "pch.h"
#define VerifyFriendApplyCall1Offset 0x6BBC0980 - 0x6B450000
#define VerifyFriendApplyCall2Offset 0x6B6FE8D0 - 0x6B450000
#define VerifyFriendApplyParamOffset 0x6D3320D8 - 0x6B450000
#define VerifyFriendApplyCall1Offset 0x10771980 - 0x10000000
#define VerifyFriendApplyCall2Offset 0x102AE8D0 - 0x10000000
#define VerifyFriendApplyParamOffset 0x11EE40E0 - 0x10000000
#ifndef USE_SOCKET
struct VerifyFriendApplyStruct {
......
......@@ -8,7 +8,7 @@
#include <iostream>
#include <thread>
CComModule m_commodule;
// CComModule m_commodule;
class CSink :
public CComObjectRoot,
......@@ -49,11 +49,6 @@ BOOL PostComMessage(VARIANT* msg) {
DWORD cookies = 0;
AtlAdvise(spRobotEvent, sinkptr, __uuidof(_IRobotEventEvents), &cookies);
*/
/*
CComVariant varParam;
varParam.vt = VT_BSTR;
varParam = pmsg;
*/
int __result = 0;
spRobotEvent->CPostMessage(msg, &__result);
}
......
......@@ -38,28 +38,28 @@
#define SQLITE_TEXT 3
#define IDA_BASE 0x10000000
#define IDA_SQLITE3_EXEC_ADDRESS 0x1141A8C0
#define IDA_SQLITE3_EXEC_ADDRESS 0x1141BDF0
#define IDA_SQLITE3_OPEN_ADDRESS 0x1144F000
#define IDA_SQLITE3_BACKUP_INIT_ADDRESS 0x113E0470
#define IDA_SQLITE3_BACKUP_STEP_ADDRESS 0x113E0870
#define IDA_SQLITE3_SLEEP_ADDRESS 0x1144F840
#define IDA_SQLITE3_BACKUP_FINISH_ADDRESS 0x113E0EB0
#define IDA_SQLITE3_CLOSE_ADDRESS 0x1144C3D0
#define IDA_SQLITE3_BACKUP_REMAINING_ADDRESS 0x113E0FB0
#define IDA_SQLITE3_BACKUP_PAGECOUNT_ADDRESS 0x113E0FC0
#define IDA_SQLITE3_ERRCODE_ADDRESS 0x1144DCA0
#define IDA_SQLITE3_OPEN_ADDRESS 0x11450520
#define IDA_SQLITE3_BACKUP_INIT_ADDRESS 0x113E19B0
#define IDA_SQLITE3_BACKUP_STEP_ADDRESS 0x113E1DB0
#define IDA_SQLITE3_SLEEP_ADDRESS 0x11450D60
#define IDA_SQLITE3_BACKUP_FINISH_ADDRESS 0x113E23F0
#define IDA_SQLITE3_CLOSE_ADDRESS 0x1144D910
#define IDA_SQLITE3_BACKUP_REMAINING_ADDRESS 0x113E24F0
#define IDA_SQLITE3_BACKUP_PAGECOUNT_ADDRESS 0x113E2500
#define IDA_SQLITE3_ERRCODE_ADDRESS 0x1144F1C0
#define IDA_SQLITE3_PREPARE_ADDRESS 0x114212C0
#define IDA_SQLITE3_PREPARE_V2_ADDRESS 0x114212E0
#define IDA_SQLITE3_STEP_ADDRESS 0x113E9240
#define IDA_SQLITE3_COLUMN_COUNT_ADDRESS 0x113E9790
#define IDA_SQLITE3_COLUMN_NAME_ADDRESS 0x113EA0F0
#define IDA_SQLITE3_COLUMN_TYPE_ADDRESS 0x113E9F30
#define IDA_SQLITE3_COLUMN_BLOB_ADDRESS 0x113E97D0
#define IDA_SQLITE3_COLUMN_BYTES_ADDRESS 0x113E9890
#define IDA_SQLITE3_FINALIZE_ADDRESS 0x113E81F0
#define IDA_SQLITE3_PREPARE_ADDRESS 0x114227F0
#define IDA_SQLITE3_PREPARE_V2_ADDRESS 0x11422810
#define IDA_SQLITE3_STEP_ADDRESS 0x113EA780
#define IDA_SQLITE3_COLUMN_COUNT_ADDRESS 0x113EACD0
#define IDA_SQLITE3_COLUMN_NAME_ADDRESS 0x113EB630
#define IDA_SQLITE3_COLUMN_TYPE_ADDRESS 0x113EB470
#define IDA_SQLITE3_COLUMN_BLOB_ADDRESS 0x113EAD10
#define IDA_SQLITE3_COLUMN_BYTES_ADDRESS 0x113EADD0
#define IDA_SQLITE3_FINALIZE_ADDRESS 0x113E9730
typedef int(__cdecl* Sqlite3_open)(const char*, DWORD*);
typedef DWORD(__cdecl* Sqlite3_backup_init)(DWORD, const char*, DWORD, const char*);
......
#include "pch.h"
#define WeChatVersionOffset 0x2382AF0
#define WeChatVersionOffset 0x2385AF0
DWORD GetWeChatVerInt()
{
......
......@@ -6,5 +6,5 @@ DWORD GetWeChatVerInt();
string GetWeChatVerStr();
BOOL ChangeWeChatVer(wchar_t* verStr);
#ifndef USE_SOCKET
extern "C" __declspec(dllexport) BOOL ChangeWeChatVerRemote(wchar_t* verStr);
extern "C" __declspec(dllexport) BOOL ChangeWeChatVerRemote(LPVOID verStr);
#endif // !USE_SOCKET
\ No newline at end of file
......@@ -5,10 +5,10 @@ Created on Sat Apr 16 14:06:24 2022
@author: lijinchao-002
"""
import time
import os
from wxRobot import WeChatRobot
def test_SendText():
import os
path = os.path.split(os.path.realpath(__file__))[0]
# image full path
imgpath = os.path.join(path,'test\\测试图片.png')
......@@ -34,7 +34,6 @@ def test_FriendStatus():
wx = WeChatRobot()
wx.StartService()
FriendList = wx.GetFriendList()
wx.CheckFriendStatusInit()
index = "\t".join(['微信号','昵称','备注','状态','\n'])
f.writelines(index)
for Friend in FriendList:
......
......@@ -18,8 +18,9 @@ PC微信机器人,实现以下功能:
# 可用版本
微信电脑版**3.5.0.46**
微信电脑版**3.6.0.18**
微信电脑版**3.7.0.26**
主分支对应微信3.7.0.26版本,其他版本请查看对应分支。
微信电脑版**3.7.0.26**
微信电脑版**3.7.0.30**
主分支对应微信3.7.0.30版本,其他版本请查看对应分支。
# 编译环境
**Visual Studio 2019**(平台配置:win32(x86))
......@@ -49,7 +50,7 @@ CWeChatRobot.exe /unregserver
参考[wxRobot.py](/Python/wxRobot.py)
**C#:**
参考[ComWechatRobotCsharp](https://github.com/RingoStudio/ComWechatRobotCsharp),感谢@RingoStudio 的贡献
**ESDK**
**易语言:**
参考[ESDK](/ESDK),感谢@lovezm 的贡献
# 更多功能
后续计划功能:
......@@ -103,7 +104,9 @@ CWeChatRobot.exe /unregserver
## 2022.06.24
1. 解决Python脚本中,socket接收数据可能不完整的问题
2. 解决心跳时如果同步了同一个人的多条消息,只会返回一条的问题
3. 感谢@shangdev 提供的思路,现在开启hook图片的时会修改自动下载图片时段为"00:00-23:59"
3. 感谢@shangdev 提供的思路,现在开启hook图片的时会修改自动下载图片时段为全天
## 2022.06.30
1. 已适配3.7.0.30版本
# 打赏作者
请给作者一个star,感谢感谢
# 免责声明
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册