Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
m0_71398851
ComWeChatRobot
提交
24f986c8
C
ComWeChatRobot
项目概览
m0_71398851
/
ComWeChatRobot
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ComWeChatRobot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
24f986c8
编写于
6月 30, 2022
作者:
J
Jack Li
提交者:
GitHub
6月 30, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #47 from ljc545w/3.7.0.30
适配3.7.0.30
上级
9423b444
db32e56a
变更
34
隐藏空白更改
内联
并排
Showing
34 changed file
with
147 addition
and
153 deletion
+147
-153
DWeChatRobot/AddBrandContact.cpp
DWeChatRobot/AddBrandContact.cpp
+2
-2
DWeChatRobot/AddFriendByV3.cpp
DWeChatRobot/AddFriendByV3.cpp
+6
-6
DWeChatRobot/AddFriendByWxid.cpp
DWeChatRobot/AddFriendByWxid.cpp
+5
-5
DWeChatRobot/CheckFriendStatus.cpp
DWeChatRobot/CheckFriendStatus.cpp
+12
-12
DWeChatRobot/DeleteUser.cpp
DWeChatRobot/DeleteUser.cpp
+3
-3
DWeChatRobot/FriendList.cpp
DWeChatRobot/FriendList.cpp
+1
-1
DWeChatRobot/GetChatRoomMemebers.cpp
DWeChatRobot/GetChatRoomMemebers.cpp
+4
-4
DWeChatRobot/GetDbHandles.cpp
DWeChatRobot/GetDbHandles.cpp
+3
-3
DWeChatRobot/HookImageMessage.cpp
DWeChatRobot/HookImageMessage.cpp
+4
-4
DWeChatRobot/HookVoiceMessage.cpp
DWeChatRobot/HookVoiceMessage.cpp
+2
-2
DWeChatRobot/LogMsgInfo.cpp
DWeChatRobot/LogMsgInfo.cpp
+3
-3
DWeChatRobot/ReceiveMessage.cpp
DWeChatRobot/ReceiveMessage.cpp
+7
-7
DWeChatRobot/SearchContactByCache.cpp
DWeChatRobot/SearchContactByCache.cpp
+5
-5
DWeChatRobot/SearchContactByNet.cpp
DWeChatRobot/SearchContactByNet.cpp
+6
-6
DWeChatRobot/SelfInfo.cpp
DWeChatRobot/SelfInfo.cpp
+10
-10
DWeChatRobot/SendAppMsg.cpp
DWeChatRobot/SendAppMsg.cpp
+3
-3
DWeChatRobot/SendArticle.cpp
DWeChatRobot/SendArticle.cpp
+10
-8
DWeChatRobot/SendAtText.cpp
DWeChatRobot/SendAtText.cpp
+2
-2
DWeChatRobot/SendCard.cpp
DWeChatRobot/SendCard.cpp
+2
-2
DWeChatRobot/SendFile.cpp
DWeChatRobot/SendFile.cpp
+15
-21
DWeChatRobot/SendImage.cpp
DWeChatRobot/SendImage.cpp
+7
-6
DWeChatRobot/SendText.cpp
DWeChatRobot/SendText.cpp
+2
-2
DWeChatRobot/VerifyFriendApply.cpp
DWeChatRobot/VerifyFriendApply.cpp
+3
-3
DWeChatRobot/comclient.cpp
DWeChatRobot/comclient.cpp
+1
-6
DWeChatRobot/sqlite3.h
DWeChatRobot/sqlite3.h
+19
-19
DWeChatRobot/wechatver.cpp
DWeChatRobot/wechatver.cpp
+1
-1
DWeChatRobot/wechatver.h
DWeChatRobot/wechatver.h
+1
-1
Python/test.py
Python/test.py
+1
-2
Python/test/测试图片.png
Python/test/测试图片.png
+0
-0
Python/test/测试文件
Python/test/测试文件
+0
-0
README.md
README.md
+7
-4
Release/CWeChatRobot.exe
Release/CWeChatRobot.exe
+0
-0
Release/DWeChatRobot.dll
Release/DWeChatRobot.dll
+0
-0
Release/socket/SWeChatRobot.dll
Release/socket/SWeChatRobot.dll
+0
-0
未找到文件。
DWeChatRobot/AddBrandContact.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define AddPublicNoticeCallOffset 0x
64DAC1C4 - 0x62D7
0000
#define AddPublicNoticeParamOffset 0x
64C51DC4 - 0x62D7
0000
#define AddPublicNoticeCallOffset 0x
1203DB14 - 0x1000
0000
#define AddPublicNoticeParamOffset 0x
7A583DCC - 0x786A
0000
struct
AddBrandContactStruct
{
DWORD
handle
;
...
...
DWeChatRobot/AddFriendByV3.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 添加好友CALL1偏移
#define AddFriendByV3Call1Offset 0x
594944E0 - 0x593B
0000
#define AddFriendByV3Call1Offset 0x
78784540 - 0x786A
0000
// 添加好友CALL2偏移
#define AddFriendByV3Call2Offset 0x
59B20890 - 0x593B
0000
#define AddFriendByV3Call2Offset 0x
78E11890 - 0x786A
0000
// 添加好友CALL3偏移
#define AddFriendByV3Call3Offset 0x
59B20980 - 0x593B
0000
#define AddFriendByV3Call3Offset 0x
78E11980 - 0x786A
0000
// 添加好友CALL4偏移
#define AddFriendByV3Call4Offset 0x
63A23940 - 0x635C
0000
#define AddFriendByV3Call4Offset 0x
78B03970 - 0x786A
0000
// 添加好友参数偏移
#define AddFriendByV3ParamOffset 0x
5B7138F4 - 0x593B
0000
#define AddFriendByV3ParamOffset 0x
7AA068F4 - 0x786A
0000
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
;
...
...
DWeChatRobot/AddFriendByWxid.cpp
浏览文件 @
24f986c8
#include "pch.h"
// ӺCALL1ƫ
#define AddFriendByWxidCall1Offset 0x
594944E0 - 0x593B
0000
#define AddFriendByWxidCall1Offset 0x
78784540 - 0x786A
0000
// ӺCALL2ƫ
#define AddFriendByWxidCall2Offset 0x
59B20890 - 0x593B
0000
#define AddFriendByWxidCall2Offset 0x
78E11890 - 0x786A
0000
// ӺCALL3ƫ
#define AddFriendByWxidCall3Offset 0x
59B20980 - 0x593B
0000
#define AddFriendByWxidCall3Offset 0x
78E11980 - 0x786A
0000
// ӺCALL4ƫ
#define AddFriendByWxidCall4Offset 0x
59813940 - 0x593B
0000
#define AddFriendByWxidCall4Offset 0x
78B03970 - 0x786A
0000
// ӺѲƫ
#define AddFriendByWxidParamOffset 0x
5B7138F4 - 0x593B
0000
#define AddFriendByWxidParamOffset 0x
7AA068F4 - 0x786A
0000
struct
AddFriendByWxidParamStruct
{
DWORD
fill0
=
0x0
;
...
...
DWeChatRobot/CheckFriendStatus.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 检查好友状态CALL1偏移
#define CheckFriendStatusCall1Offset 0x
594944E0 - 0x593B
0000
#define CheckFriendStatusCall1Offset 0x
78784540 - 0x786A
0000
// 检查好友状态CALL2偏移
#define CheckFriendStatusCall2Offset 0x
59B20890 - 0x593B
0000
#define CheckFriendStatusCall2Offset 0x
78E11890 - 0x786A
0000
// 检查好友状态CALL3偏移
#define CheckFriendStatusCall3Offset 0x
59B20980 - 0x593B
0000
#define CheckFriendStatusCall3Offset 0x
78E11980 - 0x786A
0000
// 检查好友状态CALL4偏移
#define CheckFriendStatusCall4Offset 0x
59813940 - 0x593B
0000
#define CheckFriendStatusCall4Offset 0x
78B03970 - 0x786A
0000
// 检查好友状态参数偏移
#define CheckFriendStatusParamOffset 0x
5B7138F4 - 0x593B
0000
#define CheckFriendStatusParamOffset 0x
7AA068F4 - 0x786A
0000
// 好友状态码HOOK地址偏移
#define CheckFriendStatusHookOffset 0x
59937373 - 0x593B
0000
#define CheckFriendStatusHookOffset 0x
10587373 - 0x1000
0000
// HOOK的CALL偏移
#define CheckFriendStatusNextCallOffset 0x
59937410 - 0x593B
0000
#define CheckFriendStatusNextCallOffset 0x
10587410 - 0x1000
0000
// HOOK跳转的地址偏移
#define CheckFriendStatusHookJmpBackOffset 0x
59937378 - 0x593B
0000
#define CheckFriendStatusHookJmpBackOffset 0x
10587378 - 0x1000
0000
// 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
e
a
x
,
esp
;
mov
dword
ptr
[
e
a
x
],
0x0
;
mov
dword
ptr
[
e
a
x
+
0x14
],
0xF
;
mov
dword
ptr
[
e
a
x
+
0x10
],
0x0
;
mov
e
c
x
,
esp
;
mov
dword
ptr
[
e
c
x
],
0x0
;
mov
dword
ptr
[
e
c
x
+
0x14
],
0xF
;
mov
dword
ptr
[
e
c
x
+
0x10
],
0x0
;
sub
esp
,
0x18
;
lea
eax
,
FriendStatusParam
;
mov
ecx
,
esp
;
...
...
DWeChatRobot/DeleteUser.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define DeleteUserCall1Offset 0x
04417570 - 0x0436
0000
#define DeleteUserCall2Offset 0x
0441D570 - 0x0436
0000
#define DeleteUserCall3Offset 0x
047C8570 - 0x0436
0000
#define DeleteUserCall1Offset 0x
100B75D0 - 0x1000
0000
#define DeleteUserCall2Offset 0x
100BD5C0 - 0x1000
0000
#define DeleteUserCall3Offset 0x
104685A0 - 0x1000
0000
BOOL
__stdcall
DeleteUser
(
wchar_t
*
wxid
)
{
DWORD
WeChatWinBase
=
GetWeChatWinBase
();
...
...
DWeChatRobot/FriendList.cpp
浏览文件 @
24f986c8
...
...
@@ -2,7 +2,7 @@
#include <vector>
// 通讯录左树偏移
#define LeftTreeOffset 0x236
3
8F4
#define LeftTreeOffset 0x236
6
8F4
// 保存所有好友信息的动态数组
vector
<
WxFriendStruct
>
WxFriendList
;
...
...
DWeChatRobot/GetChatRoomMemebers.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 获取群成员CALL1偏移
#define GetChatRoomMembersCall1Offset 0x
54926F80 - 0x5427
0000
#define GetChatRoomMembersCall1Offset 0x
106B6F80 - 0x1000
0000
// 获取群成员CALL2偏移
#define GetChatRoomMembersCall2Offset 0x
54352990 - 0x5427
0000
#define GetChatRoomMembersCall2Offset 0x
100E29F0 - 0x1000
0000
// 获取群成员CALL3偏移
#define GetChatRoomMembersCall3Offset 0x
546B88C0 - 0x5427
0000
#define GetChatRoomMembersCall3Offset 0x
104488C0 - 0x1000
0000
// 清空缓存CALL偏移
#define DeleteGetChatRoomMembersCacheCallOffset 0x
549271A0 - 0x5427
0000
#define DeleteGetChatRoomMembersCacheCallOffset 0x
106B71A0 - 0x1000
0000
/*
* 外部调用的返回类型
...
...
DWeChatRobot/GetDbHandles.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 联系人相关库偏移
#define SqlHandleMicroMsgOffset
0x2363
934
#define SqlHandleMicroMsgOffset
0x2366
934
// 公众号相关库偏移
#define SqlHandlePublicMsgOffset 0x239
B
3C8
#define SqlHandlePublicMsgOffset 0x239
E
3C8
// 聊天记录相关库偏移
#define SqlHandleMSGOffset 0x239
C
F68
#define SqlHandleMSGOffset 0x239
F
F68
// 保存数据库信息的容器
vector
<
DbInfoStruct
>
dbs
;
...
...
DWeChatRobot/HookImageMessage.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define HookImageMsgAddrOffset 0x
61211FF6 - 0x60AE
0000
#define HookImageMsgNextCallOffset 0x
61211430 - 0x60AE
0000
#define AutoDownloadTimeSettingOffset 0x239
B
C50
#define HookImageMsgAddrOffset 0x
10732D26 - 0x1000
0000
#define HookImageMsgNextCallOffset 0x
10732160 - 0x1000
0000
#define AutoDownloadTimeSettingOffset 0x239
E
C50
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
;
...
...
DWeChatRobot/HookVoiceMessage.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define HookVoiceMsgAddrOffset 0x
610528DA - 0x60AE
0000
#define HookVoiceMsgNextCallOffset 0x
620F1040 - 0x60AE
0000
#define HookVoiceMsgAddrOffset 0x
105728DA - 0x1000
0000
#define HookVoiceMsgNextCallOffset 0x
11612540 - 0x1000
0000
BOOL
VoiceMsgHooked
=
false
;
static
DWORD
WeChatWinBase
=
GetWeChatWinBase
();
...
...
DWeChatRobot/LogMsgInfo.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 微信日志HOOK地址偏移
#define HookLogMsgInfoAddrOffset 0x
549DF444 - 0x5427
0000
#define HookLogMsgInfoAddrOffset 0x
78E10444 - 0x786A
0000
// HOOK的CALL偏移
#define HookLogMsgInfoNextCallOffset 0x
55C7E50E - 0x5427
0000
#define HookLogMsgInfoNextCallOffset 0x
7A0AF9BE - 0x786A
0000
// HOOK的跳转地址偏移
#define HookLogMsgJmpBackOffset 0x
549DF449 - 0x5427
0000
#define HookLogMsgJmpBackOffset 0x
78E10449 - 0x786A
0000
// 微信日志HOOK地址
DWORD
HookLogMsgInfoAddr
=
GetWeChatWinBase
()
+
HookLogMsgInfoAddrOffset
;
...
...
DWeChatRobot/ReceiveMessage.cpp
浏览文件 @
24f986c8
...
...
@@ -10,14 +10,14 @@ using namespace std;
#define CLTIP "127.0.0.1"
// 接收消息的HOOK地址偏移
#define ReceiveMessageHookOffset 0x
547C0F4C - 0x5427
0000
#define ReceiveMessageHookOffset 0x
78BF0F4C - 0x786A
0000
// 接收消息HOOK的CALL偏移
#define ReceiveMessageNextCallOffset 0x
54D04E60 - 0x5427
0000
#define ReceiveMessageNextCallOffset 0x
79136350 - 0x786A
0000
// 发送消息的HOOK地址偏移
#define SendMessageHookOffset 0x
102C8E32 - 0x0FDE
0000
#define SendMessageHookOffset 0x
78B88E42 - 0x786A
0000
// 发送消息HOOK的CALL偏移
#define SendMessageNextCallOffset 0x
101E8170 - 0x0FDE
0000
#define SendMessageNextCallOffset 0x
78AA8170 - 0x786A
0000
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
;
...
...
DWeChatRobot/SearchContactByCache.cpp
浏览文件 @
24f986c8
...
...
@@ -4,15 +4,15 @@
#include <vector>
// 获取好友信息CALL1偏移
#define GetUserInfoCall1Offset 0x
5946D570 - 0x593B
0000
#define GetUserInfoCall1Offset 0x
100BD5C0 - 0x1000
0000
// 获取好友信息CALL2偏移
#define GetUserInfoCall2Offset 0x
59B20980 - 0x593B
0000
#define GetUserInfoCall2Offset 0x
10771980 - 0x1000
0000
// 获取好友信息CALL3偏移
#define GetUserInfoCall3Offset 0x
59816270 - 0x593B
0000
#define GetUserInfoCall3Offset 0x
104662A0 - 0x1000
0000
// 清理好友信息缓存参数
#define DeleteUserInfoCacheCall1Offset 0x
59A752B0 - 0x593B
0000
#define DeleteUserInfoCacheCall1Offset 0x
106C52B0 - 0x1000
0000
// 清理好友信息缓存CALL2
#define DeleteUserInfoCacheCall2Offset 0x
5946E680 - 0x593B
0000
#define DeleteUserInfoCacheCall2Offset 0x
100BE6D0 - 0x1000
0000
/*
* 外部调用时的返回类型
...
...
DWeChatRobot/SearchContactByNet.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define SearchContactByNetCall1Offset 0x
638BF150 - 0x635C
0000
#define SearchContactByNetCall2Offset 0x
63ACF9C0 - 0x635C
0000
#define SearchContactByNetCall1Offset 0x
102FF150 - 0x1000
0000
#define SearchContactByNetCall2Offset 0x
1050F9C0 - 0x1000
0000
#define HookSearchContactErrcodeAddrOffset 0x
04DD97C4 - 0x047A
0000
#define HookSearchContactErrcodeNextCallOffset 0x
0425F170 - 0x03AF
0000
#define HookSearchContactErrcodeAddrOffset 0x
106397C4 - 0x1000
0000
#define HookSearchContactErrcodeNextCallOffset 0x
10770170 - 0x1000
0000
#define HookUserInfoAddrOffset 0x
04ABB520 - 0x047A
0000
#define HookUserInfoNextCallOffset 0x
04ABB770 - 0x047A
0000
#define HookUserInfoAddrOffset 0x
1031B520 - 0x1000
0000
#define HookUserInfoNextCallOffset 0x
1031B770 - 0x1000
0000
static
BOOL
SearchContactHooked
=
false
;
static
char
HookSearchContactErrcodeOldAsm
[
5
]
=
{
0
};
...
...
DWeChatRobot/SelfInfo.cpp
浏览文件 @
24f986c8
...
...
@@ -37,16 +37,16 @@ wstring GetSelfInfo() {
wstring
selfinfo
=
L""
;
DWORD
WeChatWinBase
=
GetWeChatWinBase
();
vector
<
DWORD
>
SelfInfoAddr
=
{
WeChatWinBase
+
0x236
3
07C
,
WeChatWinBase
+
0x236
3
548
,
WeChatWinBase
+
0x236
3
0F4
,
*
(
DWORD
*
)(
WeChatWinBase
+
0x236
3
22C
),
*
(
DWORD
*
)(
WeChatWinBase
+
0x23
9E
11C
),
*
(
DWORD
*
)(
WeChatWinBase
+
0x236
3
3D4
),
WeChatWinBase
+
0x236
3
2E8
,
WeChatWinBase
+
0x236
3
1FC
,
WeChatWinBase
+
0x236
3
214
,
WeChatWinBase
+
0x236
3
128
WeChatWinBase
+
0x236
6
07C
,
WeChatWinBase
+
0x236
6
548
,
WeChatWinBase
+
0x236
6
0F4
,
*
(
DWORD
*
)(
WeChatWinBase
+
0x236
6
22C
),
*
(
DWORD
*
)(
WeChatWinBase
+
0x23
A1
11C
),
*
(
DWORD
*
)(
WeChatWinBase
+
0x236
6
3D4
),
WeChatWinBase
+
0x236
6
2E8
,
WeChatWinBase
+
0x236
6
1FC
,
WeChatWinBase
+
0x236
6
214
,
WeChatWinBase
+
0x236
6
128
};
vector
<
wstring
>
SelfInfoKey
=
{
...
...
DWeChatRobot/SendAppMsg.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define SendAppMsgCall1Offset 0x
04421340 - 0x0436
0000
#define SendAppMsgCall2Offset 0x
04AD0980 - 0x0436
0000
#define SendAppMsgCall3Offset 0x
04B1BB30 - 0x0436
0000
#define SendAppMsgCall1Offset 0x
787613A0 - 0x786A
0000
#define SendAppMsgCall2Offset 0x
78E11980 - 0x786A
0000
#define SendAppMsgCall3Offset 0x
78E5CB30 - 0x786A
0000
#ifndef USE_SOCKET
struct
SendAppMsgStruct
{
...
...
DWeChatRobot/SendArticle.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送文章CALL1偏移
#define SendArticleCall1Offset 0x
54328A10 - 0x5427
0000
#define SendArticleCall1Offset 0x
78758A70 - 0x786A
0000
// 发送文章CALL2偏移
#define SendArticleCall2Offset 0x
5465D5E0 - 0x5427
0000
#define SendArticleCall2Offset 0x
78A8D5E0 - 0x786A
0000
// 发送文章CALL3偏移
#define SendArticleCall3Offset 0x
54377EB0 - 0x5427
0000
#define SendArticleCall3Offset 0x
787A7F00 - 0x786A
0000
// 发送文章CALL4偏移
#define SendArticleCall4Offset 0x
5465D7B0 - 0x5427
0000
#define SendArticleCall4Offset 0x
78A8D7B0 - 0x786A
0000
// 发送文章CALL参数偏移
#define SendArticleParamOffset 0x565F3FE4 - 0x54270000
#define SendArticleParamOffset 0x7AA26FE4 - 0x786A0000
// 个人WXID偏移
#define SelfWxidAddrOffset 0x236607C
// 清空缓存CALL1偏移
#define SendArticleClearCacheCall1Offset 0x
54916450 - 0x5427
0000
#define SendArticleClearCacheCall1Offset 0x
78D46450 - 0x786A
0000
// 清空缓存CALL2偏移
#define SendArticleClearCacheCall2Offset 0x
54327720 - 0x5427
0000
#define SendArticleClearCacheCall2Offset 0x
78757780 - 0x786A
0000
/*
* 外部调用时传递的参数结构
...
...
@@ -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
);
...
...
DWeChatRobot/SendAtText.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送艾特消息CALL偏移
#define SendAtTextCallOffset 0x
67391D30 - 0x66E7
0000
#define SendAtTextCallOffset 0x
78BC1D30 - 0x786A
0000
// 清空缓存CALL偏移
#define DeleteAtTextCacheCallOffset 0x
54327720 - 0x5427
0000
#define DeleteAtTextCacheCallOffset 0x
78757780 - 0x786A
0000
/*
* 外部调用时传递的参数结构
...
...
DWeChatRobot/SendCard.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送名片的CALL偏移
#define SendCardCallOffset 0x
54791D30 - 0x5427
0000
#define SendCardCallOffset 0x
78BC1D30 - 0x786A
0000
// 清空缓存的CALL偏移
#define DeleteCardCacheCallOffset 0x
54327720 - 0x5427
0000
#define DeleteCardCacheCallOffset 0x
78757780 - 0x786A
0000
/*
* 外部调用时提供的参数结构
...
...
DWeChatRobot/SendFile.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送文件CALL1偏移
#define SendFileCall1Offset (0x
549E0980 - 0x5427
0000)
#define SendFileCall1Offset (0x
78763B70 - 0x786A
0000)
// 发送文件CALL2偏移
#define SendFileCall2Offset (0x
549E0980 - 0x5427
0000)
#define SendFileCall2Offset (0x
78E11980 - 0x786A
0000)
// 发送文件CALL3偏移
#define SendFileCall3Offset (0x5465D8C0 - 0x54270000)
// 发送文件CALL4偏移
#define SendFileCall4Offset (0x54698270 - 0x54270000)
// 发送文件参数偏移
#define SendFileParamsOffset (0x565D36B0 - 0x54270000)
#define SendFileCall3Offset (0x78A8D8C0 - 0x786A0000)
// 清空缓存CALL偏移
#define DeleteSendFileCacheCallOffset (0x
54327720 - 0x5427
0000)
#define DeleteSendFileCacheCallOffset (0x
78757780 - 0x786A
0000)
/*
* 外部调用时传递的参数结构
...
...
@@ -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
WxSendFileCall
1
;
call
WxSendFileCall
2
;
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
;
...
...
DWeChatRobot/SendImage.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送图片CALL1偏移
#define SendImageCall1Offset (0x
5432D730 - 0x5427
0000)
#define SendImageCall1Offset (0x
7875D780 - 0x786A
0000)
// 发送图片CALL2偏移
#define SendImageCall2Offset (0x
549E0980 - 0x5427
0000)
#define SendImageCall2Offset (0x
78E11980 - 0x786A
0000)
// 发送图片CALL3偏移
#define SendImageCall3Offset (0x
54791640 - 0x5427
0000)
#define SendImageCall3Offset (0x
78BC1640 - 0x786A
0000)
// 清空缓存的CALL偏移
#define DeleteSendImageCacheCallOffset (0x
54327720 - 0x5427
0000)
#define DeleteSendImageCacheCallOffset (0x
78757780 - 0x786A
0000)
/*
* 外部调用时传递的参数结构
...
...
@@ -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
eb
x
,
eax
;
mov
tempea
x
,
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
;
...
...
DWeChatRobot/SendText.cpp
浏览文件 @
24f986c8
#include "pch.h"
// 发送文本消息的CALL偏移
#define SendTextCallOffset 0x
67391D30 - 0x66E7
0000
#define SendTextCallOffset 0x
78BC1D30 - 0x786A
0000
// 清空缓存的CALL偏移
#define DeleteTextCacheCallOffset 0x
54327720 - 0x5427
0000
#define DeleteTextCacheCallOffset 0x
78757780 - 0x786A
0000
/*
* 外部调用时传递的参数结构
...
...
DWeChatRobot/VerifyFriendApply.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define VerifyFriendApplyCall1Offset 0x
6BBC0980 - 0x6B45
0000
#define VerifyFriendApplyCall2Offset 0x
6B6FE8D0 - 0x6B45
0000
#define VerifyFriendApplyParamOffset 0x
6D3320D8 - 0x6B45
0000
#define VerifyFriendApplyCall1Offset 0x
10771980 - 0x1000
0000
#define VerifyFriendApplyCall2Offset 0x
102AE8D0 - 0x1000
0000
#define VerifyFriendApplyParamOffset 0x
11EE40E0 - 0x1000
0000
#ifndef USE_SOCKET
struct
VerifyFriendApplyStruct
{
...
...
DWeChatRobot/comclient.cpp
浏览文件 @
24f986c8
...
...
@@ -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
);
}
...
...
DWeChatRobot/sqlite3.h
浏览文件 @
24f986c8
...
...
@@ -38,28 +38,28 @@
#define SQLITE_TEXT 3
#define IDA_BASE 0x10000000
#define IDA_SQLITE3_EXEC_ADDRESS 0x1141
A8C
0
#define IDA_SQLITE3_EXEC_ADDRESS 0x1141
BDF
0
#define IDA_SQLITE3_OPEN_ADDRESS 0x114
4F00
0
#define IDA_SQLITE3_BACKUP_INIT_ADDRESS 0x113E
047
0
#define IDA_SQLITE3_BACKUP_STEP_ADDRESS 0x113E
087
0
#define IDA_SQLITE3_SLEEP_ADDRESS 0x114
4F84
0
#define IDA_SQLITE3_BACKUP_FINISH_ADDRESS 0x113E
0EB
0
#define IDA_SQLITE3_CLOSE_ADDRESS 0x1144
C3D
0
#define IDA_SQLITE3_BACKUP_REMAINING_ADDRESS 0x113E
0FB
0
#define IDA_SQLITE3_BACKUP_PAGECOUNT_ADDRESS 0x113E
0FC
0
#define IDA_SQLITE3_ERRCODE_ADDRESS 0x1144
DCA
0
#define IDA_SQLITE3_OPEN_ADDRESS 0x114
5052
0
#define IDA_SQLITE3_BACKUP_INIT_ADDRESS 0x113E
19B
0
#define IDA_SQLITE3_BACKUP_STEP_ADDRESS 0x113E
1DB
0
#define IDA_SQLITE3_SLEEP_ADDRESS 0x114
50D6
0
#define IDA_SQLITE3_BACKUP_FINISH_ADDRESS 0x113E
23F
0
#define IDA_SQLITE3_CLOSE_ADDRESS 0x1144
D91
0
#define IDA_SQLITE3_BACKUP_REMAINING_ADDRESS 0x113E
24F
0
#define IDA_SQLITE3_BACKUP_PAGECOUNT_ADDRESS 0x113E
250
0
#define IDA_SQLITE3_ERRCODE_ADDRESS 0x1144
F1C
0
#define IDA_SQLITE3_PREPARE_ADDRESS 0x1142
12C
0
#define IDA_SQLITE3_PREPARE_V2_ADDRESS 0x1142
12E
0
#define IDA_SQLITE3_STEP_ADDRESS 0x113E
924
0
#define IDA_SQLITE3_COLUMN_COUNT_ADDRESS 0x113E
979
0
#define IDA_SQLITE3_COLUMN_NAME_ADDRESS 0x113E
A0F
0
#define IDA_SQLITE3_COLUMN_TYPE_ADDRESS 0x113E
9F3
0
#define IDA_SQLITE3_COLUMN_BLOB_ADDRESS 0x113E
97D
0
#define IDA_SQLITE3_COLUMN_BYTES_ADDRESS 0x113E
989
0
#define IDA_SQLITE3_FINALIZE_ADDRESS 0x113E
81F
0
#define IDA_SQLITE3_PREPARE_ADDRESS 0x1142
27F
0
#define IDA_SQLITE3_PREPARE_V2_ADDRESS 0x1142
281
0
#define IDA_SQLITE3_STEP_ADDRESS 0x113E
A78
0
#define IDA_SQLITE3_COLUMN_COUNT_ADDRESS 0x113E
ACD
0
#define IDA_SQLITE3_COLUMN_NAME_ADDRESS 0x113E
B63
0
#define IDA_SQLITE3_COLUMN_TYPE_ADDRESS 0x113E
B47
0
#define IDA_SQLITE3_COLUMN_BLOB_ADDRESS 0x113E
AD1
0
#define IDA_SQLITE3_COLUMN_BYTES_ADDRESS 0x113E
ADD
0
#define IDA_SQLITE3_FINALIZE_ADDRESS 0x113E
973
0
typedef
int
(
__cdecl
*
Sqlite3_open
)(
const
char
*
,
DWORD
*
);
typedef
DWORD
(
__cdecl
*
Sqlite3_backup_init
)(
DWORD
,
const
char
*
,
DWORD
,
const
char
*
);
...
...
DWeChatRobot/wechatver.cpp
浏览文件 @
24f986c8
#include "pch.h"
#define WeChatVersionOffset 0x238
2
AF0
#define WeChatVersionOffset 0x238
5
AF0
DWORD
GetWeChatVerInt
()
{
...
...
DWeChatRobot/wechatver.h
浏览文件 @
24f986c8
...
...
@@ -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
Python/test.py
浏览文件 @
24f986c8
...
...
@@ -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
:
...
...
Python/test/测试图片.png
0 → 100644
浏览文件 @
24f986c8
399 字节
Python/test/测试文件
0 → 100644
浏览文件 @
24f986c8
文件已添加
README.md
浏览文件 @
24f986c8
...
...
@@ -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,感谢感谢
# 免责声明
...
...
Release/CWeChatRobot.exe
浏览文件 @
24f986c8
无法预览此类型文件
Release/DWeChatRobot.dll
浏览文件 @
24f986c8
无法预览此类型文件
Release/socket/SWeChatRobot.dll
浏览文件 @
24f986c8
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录