微信机器人之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<"
————————————————
版权声明:本文为CSDN博主「qq_1148212080」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32539491/article/details/123580846
标签:hook,微信,dll,PC,call,UNICODE,ptr,eax 来源: https://www.cnblogs.com/jxzx/p/16022973.html