feat(contact): impl new friend verification
This commit is contained in:
parent
ab87986a90
commit
518cee4dda
@ -17,6 +17,8 @@ namespace OsCon = Offsets::Contact;
|
|||||||
|
|
||||||
using get_contact_mgr_t = QWORD (*)();
|
using get_contact_mgr_t = QWORD (*)();
|
||||||
using get_contact_list_t = QWORD (*)(QWORD, QWORD);
|
using get_contact_list_t = QWORD (*)(QWORD, QWORD);
|
||||||
|
using func_verify_new_t = QWORD (*)(QWORD, WxString *);
|
||||||
|
using func_verify_ok_t = QWORD (*)(QWORD, WxString *, QWORD *, QWORD, QWORD, QWORD *, WxString *, QWORD *, WxString *);
|
||||||
|
|
||||||
#define FEAT_LEN 5
|
#define FEAT_LEN 5
|
||||||
static const uint8_t FEAT_COUNTRY[FEAT_LEN] = { 0xA4, 0xD9, 0x02, 0x4A, 0x18 };
|
static const uint8_t FEAT_COUNTRY[FEAT_LEN] = { 0xA4, 0xD9, 0x02, 0x4A, 0x18 };
|
||||||
@ -90,8 +92,30 @@ vector<RpcContact_t> get_contacts()
|
|||||||
|
|
||||||
int accept_new_friend(const std::string &v3, const std::string &v4, int scene)
|
int accept_new_friend(const std::string &v3, const std::string &v4, int scene)
|
||||||
{
|
{
|
||||||
LOG_ERROR("技术太菜,实现不了。");
|
// TODO: 处理来源、备注、标签等
|
||||||
return -1; // 成功返回 1
|
auto func_new = Spy::getFunction<func_verify_new_t>(OsCon::VERIFY_NEW);
|
||||||
|
auto func_verify = Spy::getFunction<func_verify_ok_t>(OsCon::VERIFY_OK);
|
||||||
|
|
||||||
|
QWORD helper = util::get_qword(Spy::WeChatDll.load() + OsCon::ADD_FRIEND_HELPER);
|
||||||
|
QWORD fvdf = util::get_qword(Spy::WeChatDll.load() + OsCon::FVDF);
|
||||||
|
QWORD mgr = util::get_qword(Spy::WeChatDll.load() + OsCon::VERIFY_MGR);
|
||||||
|
QWORD a8 = util::get_qword(Spy::WeChatDll.load() + OsCon::VERIFY_A8);
|
||||||
|
|
||||||
|
auto pV3 = util::CreateWxString(v3);
|
||||||
|
auto pV4 = util::CreateWxString(v4);
|
||||||
|
|
||||||
|
QWORD v4Array[4] = { 0 };
|
||||||
|
QWORD p_v4Buff = func_new(reinterpret_cast<QWORD>(&v4Array), pV4);
|
||||||
|
|
||||||
|
char buff[0x100] = { 0 };
|
||||||
|
memcpy(buff, &helper, sizeof(&helper));
|
||||||
|
QWORD a1 = reinterpret_cast<QWORD>(&buff);
|
||||||
|
|
||||||
|
QWORD ret = func_verify(a1, pV3, &fvdf, 0x3A08A4, p_v4Buff, &mgr, pV4, &a8, pV4);
|
||||||
|
util::FreeWxString(pV3);
|
||||||
|
util::FreeWxString(pV4);
|
||||||
|
|
||||||
|
return static_cast<int>(ret); // 成功返回 1
|
||||||
}
|
}
|
||||||
|
|
||||||
RpcContact_t get_contact_by_wxid(const string &wxid)
|
RpcContact_t get_contact_by_wxid(const string &wxid)
|
||||||
|
Loading…
Reference in New Issue
Block a user