Compare commits

...

4 Commits

Author SHA1 Message Date
ttttupup
b37e448d8e
Merge pull request #140 from 502647092/dev-3.9.2.23
feat: 0接口 新增二维码登录地址
2023-05-25 22:12:52 +08:00
MiaoWoo
bce8ec25af feat: add 新增二维码登录地址 2023-05-25 10:09:48 +08:00
hugy
83d779c072 doc: 23接口更新 2023-05-05 09:40:33 +08:00
hugy
8fa942c741 fix: 通过好友验证需要指定权限 close #105 2023-05-05 09:39:20 +08:00
8 changed files with 1647 additions and 6 deletions

View File

@ -5,7 +5,7 @@ project(wxhelper VERSION 1.0.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D '_UNICODE' /D 'UNICODE'")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D '_UNICODE' /D 'UNICODE' /D 'ELPP_THREAD_SAFE'")
file(GLOB CPP_FILES ${PROJECT_SOURCE_DIR}/src/*.cc ${PROJECT_SOURCE_DIR}/src/*.cpp)

1630
doc/3.9.2.23.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -181,6 +181,11 @@ int AccountMgr::GetSelfInfo(SelfInfoInner &out) {
return 1;
}
string AccountMgr::GetLoginUrl() {
DWORD login_url_addr = base_addr_ + WX_LOGIN_URL_OFFSET;
return "http://weixin.qq.com/x/" + std::string(reinterpret_cast<char*>(*(DWORD*)login_url_addr));
}
int AccountMgr::CheckLogin() {
int success = -1;
DWORD accout_service_addr = base_addr_ + WX_ACCOUNT_SERVICE_OFFSET;

View File

@ -8,6 +8,9 @@ namespace wxhelper{
public:
explicit AccountMgr(DWORD base);
~AccountMgr();
std::string GetLoginUrl();
int GetSelfInfo(SelfInfoInner& out);
int CheckLogin();

View File

@ -175,7 +175,7 @@ int ContactMgr::AddFriendByWxid(wchar_t *wxid,wchar_t* msg) {
return success;
}
int ContactMgr::VerifyApply(wchar_t *v3, wchar_t *v4){
int ContactMgr::VerifyApply(wchar_t *v3, wchar_t *v4,int permission){
int success = -1;
DWORD set_value_addr = base_addr_ + WX_INIT_CHAT_MSG_OFFSET;
DWORD verify_addr = base_addr_ + WX_VERIFY_OK_OFFSET;
@ -186,12 +186,13 @@ int ContactMgr::AddFriendByWxid(wchar_t *wxid,wchar_t* msg) {
WeChatString v3_str(v3);
char helper_obj[0x40] = {0};
char nullbuffer[0x3CC] = {0};
int flag = permission < 0 ? 0:permission;
__asm {
PUSHAD
PUSHFD
LEA ECX,helper_obj
CALL new_helper_addr
MOV ESI,0x0
MOV ESI,flag
MOV EDI,0x6
PUSH ESI
PUSH EDI

View File

@ -14,7 +14,7 @@ class ContactMgr : public BaseMgr {
int DelContact(wchar_t* wxid);
std::wstring GetContactOrChatRoomNickname(wchar_t* id);
int AddFriendByWxid(wchar_t* wxid,wchar_t* msg);
int VerifyApply(wchar_t *v3, wchar_t *v4);
int VerifyApply(wchar_t *v3, wchar_t *v4,int permission);
};
} // namespace wxhelper

View File

@ -94,7 +94,7 @@ string Dispatch(struct mg_connection *c, struct mg_http_message *hm) {
case WECHAT_IS_LOGIN: {
int success = -1;
success = g_context.account_mgr->CheckLogin();
json ret_data = {{"result", "OK"}, {"code", success}};
json ret_data = {{"result", "OK"}, {"code", success}, {"login_url", g_context.account_mgr->GetLoginUrl()}};
ret = ret_data.dump();
break;
}
@ -252,7 +252,8 @@ string Dispatch(struct mg_connection *c, struct mg_http_message *hm) {
case WECHAT_CONTACT_VERIFY_APPLY: {
wstring v3 = GetWStringParam(j_param, "v3");
wstring v4 = GetWStringParam(j_param, "v4");
int success = g_context.contact_mgr->VerifyApply(WS2LPWS(v3),WS2LPWS(v4));
int permission = GetIntParam(j_param, "permission");
int success = g_context.contact_mgr->VerifyApply(WS2LPWS(v3),WS2LPWS(v4),permission);
json ret_data = {{"code", success}, {"result", "OK"}};
ret = ret_data.dump();
break;

View File

@ -116,6 +116,7 @@
//login
#define WX_LOGIN_URL_OFFSET 0x3040DE8
#define WX_LOGOUT_OFFSET 0xe58870
#define WX_ACCOUNT_SERVICE_OFFSET 0x768c80
#define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xf3a610