修复多开微信无法获取key的bug
This commit is contained in:
parent
04dd574c0d
commit
e59130b67b
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
- ### 三、每台电脑上微信账户的key是不是永远不会变?
|
- ### 三、每台电脑上微信账户的key是不是永远不会变?
|
||||||
|
|
||||||
1. 同一设备,同一微信,不删除数据情况下,key(密钥)相同
|
1. 同一设备,同一微信号,不删除数据情况下,key(密钥)相同
|
||||||
|
|
||||||
- ### 四、刚打开就闪退的问题
|
- ### 四、刚打开就闪退的问题
|
||||||
|
|
||||||
|
11
pywxdump/api/__init__.py
Normal file
11
pywxdump/api/__init__.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# -*- coding: utf-8 -*-#
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
# Name: __init__.py
|
||||||
|
# Description:
|
||||||
|
# Author: xaoyaoo
|
||||||
|
# Date: 2023/12/14
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
pass
|
@ -157,7 +157,7 @@ def get_info_filePath(wxid="all"):
|
|||||||
return filePath if os.path.exists(filePath) else "None"
|
return filePath if os.path.exists(filePath) else "None"
|
||||||
|
|
||||||
|
|
||||||
def get_key(db_path, addr_len):
|
def get_key(pid, db_path, addr_len):
|
||||||
def read_key_bytes(h_process, address, address_len=8):
|
def read_key_bytes(h_process, address, address_len=8):
|
||||||
array = ctypes.create_string_buffer(address_len)
|
array = ctypes.create_string_buffer(address_len)
|
||||||
if ReadProcessMemory(h_process, void_p(address), array, address_len, 0) == 0: return "None"
|
if ReadProcessMemory(h_process, void_p(address), array, address_len, 0) == 0: return "None"
|
||||||
@ -190,7 +190,7 @@ def get_key(db_path, addr_len):
|
|||||||
phone_type2 = "android\x00"
|
phone_type2 = "android\x00"
|
||||||
phone_type3 = "ipad\x00"
|
phone_type3 = "ipad\x00"
|
||||||
|
|
||||||
pm = pymem.Pymem("WeChat.exe")
|
pm = pymem.Pymem(pid)
|
||||||
module_name = "WeChatWin.dll"
|
module_name = "WeChatWin.dll"
|
||||||
|
|
||||||
MicroMsg_path = os.path.join(db_path, "MSG", "MicroMsg.db")
|
MicroMsg_path = os.path.join(db_path, "MSG", "MicroMsg.db")
|
||||||
@ -198,11 +198,17 @@ def get_key(db_path, addr_len):
|
|||||||
type1_addrs = pm.pattern_scan_module(phone_type1.encode(), module_name, return_multiple=True)
|
type1_addrs = pm.pattern_scan_module(phone_type1.encode(), module_name, return_multiple=True)
|
||||||
type2_addrs = pm.pattern_scan_module(phone_type2.encode(), module_name, return_multiple=True)
|
type2_addrs = pm.pattern_scan_module(phone_type2.encode(), module_name, return_multiple=True)
|
||||||
type3_addrs = pm.pattern_scan_module(phone_type3.encode(), module_name, return_multiple=True)
|
type3_addrs = pm.pattern_scan_module(phone_type3.encode(), module_name, return_multiple=True)
|
||||||
type_addrs = type1_addrs if len(type1_addrs) >= 2 else type2_addrs if len(type2_addrs) >= 2 else type3_addrs if len(
|
|
||||||
type3_addrs) >= 2 else "None"
|
# print(type1_addrs, type2_addrs, type3_addrs)
|
||||||
# print(type_addrs)
|
|
||||||
if type_addrs == "None":
|
type_addrs = []
|
||||||
return "None"
|
if len(type1_addrs) >= 2: type_addrs += type1_addrs
|
||||||
|
if len(type2_addrs) >= 2: type_addrs += type2_addrs
|
||||||
|
if len(type3_addrs) >= 2: type_addrs += type3_addrs
|
||||||
|
if len(type_addrs) == 0: return "None"
|
||||||
|
|
||||||
|
type_addrs.sort() # 从小到大排序
|
||||||
|
|
||||||
for i in type_addrs[::-1]:
|
for i in type_addrs[::-1]:
|
||||||
for j in range(i, i - 2000, -addr_len):
|
for j in range(i, i - 2000, -addr_len):
|
||||||
key_bytes = read_key_bytes(pm.process_handle, j, addr_len)
|
key_bytes = read_key_bytes(pm.process_handle, j, addr_len)
|
||||||
@ -269,7 +275,7 @@ def read_info(version_list, is_logging=False):
|
|||||||
|
|
||||||
tmp_rd['wxid'] = get_info_wxid(Handle)
|
tmp_rd['wxid'] = get_info_wxid(Handle)
|
||||||
tmp_rd['filePath'] = get_info_filePath(tmp_rd['wxid']) if tmp_rd['wxid'] != "None" else "None"
|
tmp_rd['filePath'] = get_info_filePath(tmp_rd['wxid']) if tmp_rd['wxid'] != "None" else "None"
|
||||||
tmp_rd['key'] = get_key(tmp_rd['filePath'], addrLen) if tmp_rd['filePath'] != "None" else "None"
|
tmp_rd['key'] = get_key(tmp_rd['pid'], tmp_rd['filePath'], addrLen) if tmp_rd['filePath'] != "None" else "None"
|
||||||
result.append(tmp_rd)
|
result.append(tmp_rd)
|
||||||
|
|
||||||
if is_logging:
|
if is_logging:
|
||||||
|
Loading…
Reference in New Issue
Block a user