Compare commits
4 Commits
main
...
dev-3.9.2.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b37e448d8e | ||
![]() |
bce8ec25af | ||
![]() |
83d779c072 | ||
![]() |
8fa942c741 |
@ -5,7 +5,7 @@ project(wxhelper VERSION 1.0.0)
|
|||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
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)
|
file(GLOB CPP_FILES ${PROJECT_SOURCE_DIR}/src/*.cc ${PROJECT_SOURCE_DIR}/src/*.cpp)
|
||||||
|
|
||||||
|
1630
doc/3.9.2.23.md
Normal file
1630
doc/3.9.2.23.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -181,6 +181,11 @@ int AccountMgr::GetSelfInfo(SelfInfoInner &out) {
|
|||||||
return 1;
|
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 AccountMgr::CheckLogin() {
|
||||||
int success = -1;
|
int success = -1;
|
||||||
DWORD accout_service_addr = base_addr_ + WX_ACCOUNT_SERVICE_OFFSET;
|
DWORD accout_service_addr = base_addr_ + WX_ACCOUNT_SERVICE_OFFSET;
|
||||||
|
@ -8,6 +8,9 @@ namespace wxhelper{
|
|||||||
public:
|
public:
|
||||||
explicit AccountMgr(DWORD base);
|
explicit AccountMgr(DWORD base);
|
||||||
~AccountMgr();
|
~AccountMgr();
|
||||||
|
|
||||||
|
std::string GetLoginUrl();
|
||||||
|
|
||||||
int GetSelfInfo(SelfInfoInner& out);
|
int GetSelfInfo(SelfInfoInner& out);
|
||||||
|
|
||||||
int CheckLogin();
|
int CheckLogin();
|
||||||
|
@ -175,7 +175,7 @@ int ContactMgr::AddFriendByWxid(wchar_t *wxid,wchar_t* msg) {
|
|||||||
return success;
|
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;
|
int success = -1;
|
||||||
DWORD set_value_addr = base_addr_ + WX_INIT_CHAT_MSG_OFFSET;
|
DWORD set_value_addr = base_addr_ + WX_INIT_CHAT_MSG_OFFSET;
|
||||||
DWORD verify_addr = base_addr_ + WX_VERIFY_OK_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);
|
WeChatString v3_str(v3);
|
||||||
char helper_obj[0x40] = {0};
|
char helper_obj[0x40] = {0};
|
||||||
char nullbuffer[0x3CC] = {0};
|
char nullbuffer[0x3CC] = {0};
|
||||||
|
int flag = permission < 0 ? 0:permission;
|
||||||
__asm {
|
__asm {
|
||||||
PUSHAD
|
PUSHAD
|
||||||
PUSHFD
|
PUSHFD
|
||||||
LEA ECX,helper_obj
|
LEA ECX,helper_obj
|
||||||
CALL new_helper_addr
|
CALL new_helper_addr
|
||||||
MOV ESI,0x0
|
MOV ESI,flag
|
||||||
MOV EDI,0x6
|
MOV EDI,0x6
|
||||||
PUSH ESI
|
PUSH ESI
|
||||||
PUSH EDI
|
PUSH EDI
|
||||||
|
@ -14,7 +14,7 @@ class ContactMgr : public BaseMgr {
|
|||||||
int DelContact(wchar_t* wxid);
|
int DelContact(wchar_t* wxid);
|
||||||
std::wstring GetContactOrChatRoomNickname(wchar_t* id);
|
std::wstring GetContactOrChatRoomNickname(wchar_t* id);
|
||||||
int AddFriendByWxid(wchar_t* wxid,wchar_t* msg);
|
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
|
} // namespace wxhelper
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ string Dispatch(struct mg_connection *c, struct mg_http_message *hm) {
|
|||||||
case WECHAT_IS_LOGIN: {
|
case WECHAT_IS_LOGIN: {
|
||||||
int success = -1;
|
int success = -1;
|
||||||
success = g_context.account_mgr->CheckLogin();
|
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();
|
ret = ret_data.dump();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -252,7 +252,8 @@ string Dispatch(struct mg_connection *c, struct mg_http_message *hm) {
|
|||||||
case WECHAT_CONTACT_VERIFY_APPLY: {
|
case WECHAT_CONTACT_VERIFY_APPLY: {
|
||||||
wstring v3 = GetWStringParam(j_param, "v3");
|
wstring v3 = GetWStringParam(j_param, "v3");
|
||||||
wstring v4 = GetWStringParam(j_param, "v4");
|
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"}};
|
json ret_data = {{"code", success}, {"result", "OK"}};
|
||||||
ret = ret_data.dump();
|
ret = ret_data.dump();
|
||||||
break;
|
break;
|
||||||
|
@ -116,6 +116,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//login
|
//login
|
||||||
|
#define WX_LOGIN_URL_OFFSET 0x3040DE8
|
||||||
#define WX_LOGOUT_OFFSET 0xe58870
|
#define WX_LOGOUT_OFFSET 0xe58870
|
||||||
#define WX_ACCOUNT_SERVICE_OFFSET 0x768c80
|
#define WX_ACCOUNT_SERVICE_OFFSET 0x768c80
|
||||||
#define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xf3a610
|
#define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xf3a610
|
||||||
|
Loading…
Reference in New Issue
Block a user