mirror of
https://github.com/yincongcyincong/wechat_chatter.git
synced 2026-07-15 10:26:52 +08:00
81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
import ida_idd
|
|
import ida_bytes
|
|
import idc
|
|
import time
|
|
|
|
sendMessageAddress = 0x1120eed40
|
|
MessageAddress = 0x1120eee40
|
|
|
|
task_id = 0x20000090
|
|
idc.patch_dword(MessageAddress + 0x08, task_id)
|
|
idc.patch_dword(sendMessageAddress + 0x20, task_id)
|
|
idc.patch_dword(0x175ED6600, task_id)
|
|
|
|
MessageAddrAddr = 0x1120eed80
|
|
idc.patch_dword(MessageAddrAddr+0x18, int(time.time()))
|
|
|
|
# 改task id, 改 cgi,改第一个指针即可
|
|
payload = (
|
|
b"\x0A\x02\x00\x00" # 0x00 // task id / cmd id 175ED6600
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x08
|
|
b"\x03\x00\x00\x00\x10\x00\x00\x00" # 0x10
|
|
b"\x40\xec\x0e\x12\x01\x00\x00\x00" # 0x18 // cgi 1120eec40
|
|
b"\x20\x00\x00\x00\x00\x00\x00\x00" # 0x20
|
|
b"\x30\x00\x00\x00\x00\x00\x00\x80" # 0x28
|
|
b"\x00\x01\x01\x01\x00\xAA\xAA\xAA" # 0x30
|
|
b"\x00\x00\x00\x00\x03\x00\x00\x00" # 0x38
|
|
b"\x01\x00\x00\x00\xFF\xFF\xFF\xFF" # 0x40
|
|
b"\xFF\xFF\xFF\xFF\x00\xAA\xAA\xAA" # 0x48
|
|
b"\xFF\xFF\xFF\xFF\xAA\xAA\xAA\xAA" # 0x50
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x58
|
|
b"\x0A\x02\x00\x00\x00\x00\x00\x00" # 0x60
|
|
b"\x64\x65\x66\x61\x75\x6C\x74\x2D" # 0x68 (default-)
|
|
b"\x6C\x6F\x6E\x67\x6C\x69\x6E\x6B" # 0x70 (longlink)
|
|
b"\x00\xAA\xAA\xAA\xAA\xAA\xAA\x10" # 0x78
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x80
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x88
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x90
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x98
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xA0
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xA8
|
|
b"\x00\x00\x00\x00\xAA\xAA\xAA\xAA" # 0xB0
|
|
b"\xC0\x66\xED\x75\x01\x00\x00\x00" # 0xB8
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xC0
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xC8
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xD0
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xD8
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xE0
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xE8
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xF0
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0xF8
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x100
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x108
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x110
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x118
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x120
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x128
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x130
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x138
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x140
|
|
b"\x01\x00\x00\x00\xAA\xAA\xAA\xAA" # 0x148
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x150
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x158
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x160
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x168
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x170
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x178
|
|
b"\x03\x00\x00\x00\x00\x00\x00\x00" # 0x180
|
|
b"\x00\x00\xAA\xAA\xAA\xAA\xAA\xAA" # 0x188
|
|
b"\x98\x67\xED\x75\x01\x00\x00\x00" # 0x190
|
|
b"\x00\x00\x00\x00\x00\x00\x00\x00" # 0x198
|
|
)
|
|
|
|
ida_bytes.patch_bytes(0x175ED6604, payload)
|
|
my_func = ida_idd.Appcall.proto(0x10444A99C, "long long __fastcall sub_10444A99C(long long *a1, long long a2);")
|
|
|
|
try:
|
|
my_func(0x8E1699400, 0x175ED6600)
|
|
print("Executed with manually set X0.")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|