MCPcopy Index your code
hub / github.com/JaveleyQAQ/WeChatOpenDevTools-Python / Commons

Class Commons

utils/commons.py:9–96  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7import platform
8
9class Commons:
10 def __init__(self):
11 self.wechatutils_instance = WechatUtils()
12 self.device = frida.get_local_device()
13 self.process = self.device.enumerate_processes()
14 self.version_list = []
15 self.configs_path = ""
16 self.active_sessions = []
17
18 def onMessage(self, message, data):
19 if message['type'] == 'send':
20 print(Color.GREEN + message['payload'], Color.END)
21 elif message['type'] == 'error':
22 print(Color.RED + message['stack'], Color.END)
23
24 def inject_wechatEx(self, pid, code):
25 try:
26 session = frida.attach(pid)
27 script = session.create_script(code)
28 script.on("message", self.onMessage)
29 script.load()
30 print(f"Successfully injected into WeChat PID: {pid}")
31 return session
32 except Exception as e:
33 print(f"Error injecting into WeChat PID {pid}: {e}")
34 return None
35
36 def inject_wechatDLL(self, path, code):
37 pid = self.device.spawn(path)
38 session = frida.attach(pid)
39 script = session.create_script(code)
40 script.on("message", self.onMessage)
41 script.load()
42 self.device.resume(pid)
43 time.sleep(10)
44 session.detach()
45
46 def load_wechatEx_configs(self):
47 path = self.wechatutils_instance.get_configs_path()
48 if get_cpu_architecture() == "MacOS x64":
49 wechat_instances = self.wechatutils_instance.get_wechat_pids_and_versions_mac()
50 else:
51 wechat_instances = self.wechatutils_instance.get_wechat_pids_and_versions()
52
53 if wechat_instances:
54 for pid, version in wechat_instances:
55 try:
56 wechatEx_hookcode = open(path + "../scripts/hook.js", "r", encoding="utf-8").read()
57 wechatEx_addresses = open(path + f"../configs/address_{version}_x64.json").read()
58 wechatEx_hookcode = "var address=" + wechatEx_addresses + wechatEx_hookcode
59 session = self.inject_wechatEx(pid, wechatEx_hookcode)
60 if session:
61 self.active_sessions.append(session)
62 print(f"Injected into WeChat instance PID: {pid}, Version: {version}")
63 except Exception as e:
64 print(f"Error injecting into WeChat PID {pid}: {e}")
65 else:
66 self.wechatutils_instance.print_process_not_found_message()

Callers 2

main.pyFile · 0.90
commons.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected