写PC微信辅助感悟1

最近只要有空就写PC辅助功能,今天一天基本完成发送图片,发送文件,添加好友(包括单向和群好友之类的hook点),成就感还是蛮高的,于是记录一下最近心得。

1:辅助本质:找函数和找数据

2:找函数,对于网络程序,一般是投递网络事件这个点,以前是send这个点,但是现在如果同步发送网络请求程序,估计都很low。如果tx写这么low b程序的话估计会被喷死,所以一般都是一个通用的网络库(肯定是异步与ui主线程分开),所以一定有一个通用的投递网络请求地方,微信就有一个,因为微信他们有打日志习惯。

SceneCenter::doScene 微信给这个函数起这个名字,所以后面写功能都会这个函数打断点然后就通过堆栈回溯,找到合适的hook点。

3: 一般windows 程序都是有事件循环,我们自己开发时候,总会有个mainwnd(微信就有一个,我们自己开发也差不多,无论你用mfc还是别的,微信用的duilib),如果找到这个合适点,那么很多功能就好写了,找到起点,这个点就是一个很好的hook点,因为我们开发程序,也喜欢这么写,一个大的事件循环,那所有的功能,统一通过事件来做,微信也差不多这么样子,这个也是最近我才想到这一点,一下子就加快功能开发,因为Hook点查找,要找到合适,就是要找到容易构建参数的地方,最好不要太多对象,不然我们要找到对象指针是从哪里传递的,又要分析好久,如果是全局对象,那么还好说,如果是局部变量,你又去找合适函数,怎么构建。那么这样递归下去,就搞的非常难搞了,所以找到主要事件循环起点,那个点一般参数都比较简单,就是常见的类型,一般不是对象,也有对象的存在。

4:根据第三种,那么事件循环,一般是一个窗口类,那么肯定有对应的ecx 指针对象,那么肯定这个不是全局变量,或者不是那么好找,我们怎么获取呢,事件循环,那么一定很频繁调用,我们只要在事件函数找一个点hook,获取ecx就可以了,然后保存在自己地方,那么就简单了。

5:数据查找,这个我目前没有找到非常方便方法,只能根据数据关系,慢慢查找。

总结:

其实写辅助,更加要求对程序开发能力,你这样子才能想出他们代码大概是怎么写的,所以程序员的基本功要牢。

http://www.xiaoyutang.net/wordpress/wp-admin/post-new.php

 

 

补充:

函数调用压入堆栈,不是每个都会用掉,可以调用时候,修改成0x0进行判断验证(前提通过代码分析是否有访问,然后再去验证)

《写PC微信辅助感悟1》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注