mirror of
https://github.com/ttttupup/wxhelper.git
synced 2024-11-26 04:09:24 +08:00
fix:修复获取个人信息错误的bug
This commit is contained in:
parent
82a5ca28db
commit
7e89c6ef2d
106
src/self_info.cc
106
src/self_info.cc
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user