fix:修复获取个人信息错误的bug

This commit is contained in:
hugy 2023-03-01 17:02:15 +08:00
parent 82a5ca28db
commit 7e89c6ef2d

View File

@ -20,10 +20,10 @@ using namespace std;
#define WX_APP_DATA_SAVE_PATH_OFFSET 0x2E52DB0 #define WX_APP_DATA_SAVE_PATH_OFFSET 0x2E52DB0
#define WX_CURRENT_DATA_PATH_OFFSET 0x2E4F290 #define WX_CURRENT_DATA_PATH_OFFSET 0x2E4F290
#define WX_LOGOUT_OFFSET 0xdd5c90 #define WX_LOGOUT_OFFSET 0xdd5c90
#define WX_ACCOUNT_SERVICE_OFFSET 0x707960 #define WX_ACCOUNT_SERVICE_OFFSET 0x707960
#define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xeb4b00 #define WX_GET_APP_DATA_SAVE_PATH_OFFSET 0xeb4b00
#define WX_GET_CURRENT_DATA_PATH_OFFSET 0xc11140 #define WX_GET_CURRENT_DATA_PATH_OFFSET 0xc11140
int GetSelfInfo(SelfInfoInner &out) { int GetSelfInfo(SelfInfoInner &out) {
DWORD base = GetWeChatWinBase(); DWORD base = GetWeChatWinBase();
DWORD accout_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET; DWORD accout_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET;
@ -41,72 +41,117 @@ int GetSelfInfo(SelfInfoInner &out) {
*(DWORD *)(service_addr + 0x44 + 0x10) == 0) { *(DWORD *)(service_addr + 0x44 + 0x10) == 0) {
out.wxid = string(); out.wxid = string();
} else { } else {
out.wxid = string(*(char **)(service_addr + 0x44), if (*(DWORD *)(service_addr + 0x44 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0x44 + 0x10)); out.wxid = string((char *)(service_addr + 0x44),
*(DWORD *)(service_addr + 0x44 + 0x10));
} else {
out.wxid = string(*(char **)(service_addr + 0x44),
*(DWORD *)(service_addr + 0x44 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0xA8) == 0 || if (*(DWORD *)(service_addr + 0xA8) == 0 ||
*(DWORD *)(service_addr + 0xA8 + 0x10) == 0) { *(DWORD *)(service_addr + 0xA8 + 0x10) == 0) {
out.account = string(); out.account = string();
} else { } else {
out.account = string(*(char **)(service_addr + 0xA8), if (*(DWORD *)(service_addr + 0xA8 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0xA8 + 0x10)); out.account = string((char *)(service_addr + 0xA8),
*(DWORD *)(service_addr + 0xA8 + 0x10));
} else {
out.account = string(*(char **)(service_addr + 0xA8),
*(DWORD *)(service_addr + 0xA8 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0xC0) == 0 || if (*(DWORD *)(service_addr + 0xC0) == 0 ||
*(DWORD *)(service_addr + 0xC0 + 0x10) == 0) { *(DWORD *)(service_addr + 0xC0 + 0x10) == 0) {
out.mobile = string(); out.mobile = string();
} else { } else {
out.mobile = string((char *)(service_addr + 0xC0), if (*(DWORD *)(service_addr + 0xC0 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0xC0 + 0x10)); out.mobile = string((char *)(service_addr + 0xC0),
*(DWORD *)(service_addr + 0xC0 + 0x10));
} else {
out.mobile = string(*(char **)(service_addr + 0xC0),
*(DWORD *)(service_addr + 0xC0 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0xD8) == 0 || if (*(DWORD *)(service_addr + 0xD8) == 0 ||
*(DWORD *)(service_addr + 0xD8 + 0x10) == 0) { *(DWORD *)(service_addr + 0xD8 + 0x10) == 0) {
out.signature = string(); out.signature = string();
} else { } else {
out.signature = string((char *)(service_addr + 0xD8), if (*(DWORD *)(service_addr + 0xD8 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0xD8 + 0x10)); out.signature = string((char *)(service_addr + 0xD8),
*(DWORD *)(service_addr + 0xD8 + 0x10));
} else {
out.signature = string(*(char **)(service_addr + 0xD8),
*(DWORD *)(service_addr + 0xD8 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0xF0) == 0 || if (*(DWORD *)(service_addr + 0xF0) == 0 ||
*(DWORD *)(service_addr + 0xF0 + 0x10) == 0) { *(DWORD *)(service_addr + 0xF0 + 0x10) == 0) {
out.country = string(); out.country = string();
} else { } else {
out.country = string((char *)(service_addr + 0xF0), if (*(DWORD *)(service_addr + 0xF0 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0xF0 + 0x10)); out.country = string((char *)(service_addr + 0xF0),
*(DWORD *)(service_addr + 0xF0 + 0x10));
} else {
out.country = string(*(char **)(service_addr + 0xF0),
*(DWORD *)(service_addr + 0xF0 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0x108) == 0 || if (*(DWORD *)(service_addr + 0x108) == 0 ||
*(DWORD *)(service_addr + 0x108 + 0x10) == 0) { *(DWORD *)(service_addr + 0x108 + 0x10) == 0) {
out.province = string(); out.province = string();
} else { } else {
out.province = string((char *)(service_addr + 0x108), if (*(DWORD *)(service_addr + 0x108 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0x108 + 0x10)); out.province = string((char *)(service_addr + 0x108),
*(DWORD *)(service_addr + 0x108 + 0x10));
} else {
out.province = string(*(char **)(service_addr + 0x108),
*(DWORD *)(service_addr + 0x108 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0x120) == 0 || if (*(DWORD *)(service_addr + 0x120) == 0 ||
*(DWORD *)(service_addr + 0x120 + 0x10) == 0) { *(DWORD *)(service_addr + 0x120 + 0x10) == 0) {
out.city = string(); out.city = string();
} else { } else {
out.city = string((char *)(service_addr + 0x120), if (*(DWORD *)(service_addr + 0x120 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0x120 + 0x10)); out.city = string((char *)(service_addr + 0x120),
*(DWORD *)(service_addr + 0x120 + 0x10));
} else {
out.city = string(*(char **)(service_addr + 0x120),
*(DWORD *)(service_addr + 0x120 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0x150) == 0 || if (*(DWORD *)(service_addr + 0x150) == 0 ||
*(DWORD *)(service_addr + 0x150 + 0x10) == 0) { *(DWORD *)(service_addr + 0x150 + 0x10) == 0) {
out.name = string(); out.name = string();
} else { } else {
out.name = string((char *)(service_addr + 0x150), if (*(DWORD *)(service_addr + 0x150 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0x150 + 0x10)); out.name = string((char *)(service_addr + 0x150),
*(DWORD *)(service_addr + 0x150 + 0x10));
} else {
out.name = string(*(char **)(service_addr + 0x150),
*(DWORD *)(service_addr + 0x150 + 0x10));
}
} }
if (*(DWORD *)(service_addr + 0x304) == 0 || if (*(DWORD *)(service_addr + 0x304) == 0 ||
*(DWORD *)(service_addr + 0x304 + 0x10) == 0) { *(DWORD *)(service_addr + 0x304 + 0x10) == 0) {
out.head_img = string(); out.head_img = string();
} else { } else {
out.head_img = string(*(char **)(service_addr + 0x304), if (*(DWORD *)(service_addr + 0x304 + 0x14) == 0xF) {
*(DWORD *)(service_addr + 0x304 + 0x10)); out.head_img = string((char *)(service_addr + 0x304),
*(DWORD *)(service_addr + 0x304 + 0x10));
} else {
out.head_img = string(*(char **)(service_addr + 0x304),
*(DWORD *)(service_addr + 0x304 + 0x10));
}
} }
} }
@ -125,21 +170,21 @@ int GetSelfInfo(SelfInfoInner &out) {
if (data_save_path.ptr) { if (data_save_path.ptr) {
out.data_save_path = out.data_save_path =
Wstring2String(wstring(data_save_path.ptr, data_save_path.length)); Wstring2String(wstring(data_save_path.ptr, data_save_path.length));
}else { }
else {
out.data_save_path = string(); out.data_save_path = string();
} }
if (current_data_path.ptr) { if (current_data_path.ptr) {
out.current_data_path = out.current_data_path = Wstring2String(
Wstring2String(wstring(current_data_path.ptr, current_data_path.length)); wstring(current_data_path.ptr, current_data_path.length));
}else { } else {
out.current_data_path = string(); out.current_data_path = string();
} }
return 1; return 1;
} }
int CheckLogin() {
int CheckLogin(){
DWORD base = GetWeChatWinBase(); DWORD base = GetWeChatWinBase();
DWORD accout_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET; DWORD accout_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET;
DWORD service_addr = NULL; DWORD service_addr = NULL;
@ -157,16 +202,15 @@ int CheckLogin(){
} }
} }
int Logout() {
int Logout(){
int success = 0; int success = 0;
if(!CheckLogin()){ if (!CheckLogin()) {
return success; return success;
} }
DWORD base = GetWeChatWinBase(); DWORD base = GetWeChatWinBase();
DWORD account_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET; DWORD account_service_addr = base + WX_ACCOUNT_SERVICE_OFFSET;
DWORD logout_addr = base + WX_LOGOUT_OFFSET; DWORD logout_addr = base + WX_LOGOUT_OFFSET;
__asm{ __asm {
PUSHAD PUSHAD
CALL account_service_addr CALL account_service_addr
PUSH 0x0 PUSH 0x0