微信机器人之PC微信hook

想实现微信机器人软件的主要构成分为一个主进程exe和一个注入的dll,主进程exe:把dll注入到微信,发送指令给dll,接受dll的信息,注入的dll:被注入到微信内部,拦截微信的数据,调用微信的功能接收主进程的指令,执行指令对应的操作、发信息给主进程,通过这样的操作,就能实现获取信息和发送信息的最主要功能了。

编写微信机器人软件最主要的工作,就是找到微信中关键call,然后调用call代码的数据或者直接调用call代码来实现我们需要的功能。以接收好友消息为例,大致说明一下制作机器人的过程。

【接收实时消息】

1、第一步,打开CE软件,加载微信,附加微信之后,用另外一个微信,给已经登陆的微信发送一条信息,然后用CE 点击:New Scan ,注意不要选 UTF-16,搜索之后,出来了几条结果,再用一个微信发送一条信息,这时看有哪些地址是刚才的发送的内容,把他选到下面去。

 2、然后把这个地址复制下来,在OD里面下个断点。

 3、然后发送一条消息,程序中断,堆栈窗口往下翻,发现“lass SyncMgr”,有价值的信息。

 4、右键【反汇编窗口跟随】,函数位置下断点,删除内存写入断点,放程序执行完。再发一条消息,程序断下来。查看各个寄存器的值,是都由寄存器存储了微信接收人、发送人和具体内容。然后保存反汇编窗口代码,切换到e界面,获取基质地址,计算消息的偏移地址

 5、分析代码,编写hook代码

基址:0F2D0000

EBX=0DB52460  ->0DB576A0

hook=116B138F-0F2D0000=‭‭37622671‬‬

call=11642818-0F2D0000=‭‭37169176‬‬


116B1373    F9              stc
116B1374    81EE 04000000   sub esi,0x4
116B137A    C1D0 78         rcl eax,0x78
116B137D    98              cwde
116B137E    8B06            mov eax,dword ptr ds:[esi]
116B1380    E9 73B50500     jmp WeChatWi.1170C8F8
116B1385  ^ E9 51CEEAFF     jmp WeChatWi.1155E1DB
116B138A    68 48A5F0B1     push 0xB1F0A548
116B138F    E8 8414F9FF     call WeChatWi.11642818                   ; inset1
116B1394    3155 39         xor dword ptr ss:[ebp+0x39],edx
116B1397    AA              stos byte ptr es:[edi]
116B1398    48              dec eax
116B1399    5A              pop edx
116B139A    1E              push ds
116B139B    DC40 22         fadd qword ptr ds:[eax+0x22]
116B139E    5F              pop edi
116B139F    B8 0B483173     mov eax,0x7331480B


0DB576D8  00000001
0DB576DC  00000000
0DB576E0  00000002
0DB576E4  621A2ACC  andromed.621A2ACC
0DB576E8  0E0F3728  UNICODE "1234343681@chatroom"

0DB57710  0E31B5E0  UNICODE "[破涕为笑]"

0DB57810  08C5ADD0  UNICODE "wxid_jhnasdfghjkj22"
0DB57814  00000013
0DB57818  00000013
0DB5781C  00000000
0DB57820  00000000
0DB57824  0DCA63A0  UNICODE "75c3848bf7af25d77ed15057c1cbb784"

0DB5788C  0D67EC90  UNICODE "<msgsource>\n\t<silence>0</silence>\n\t<membercount>3<"



版权声明:本文为qq_32539491原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。