问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...封装32位和64位Python hook框架实战打印微信日志

发布网友 发布时间:2024-09-17 05:24

我来回答

1个回答

热心网友 时间:2024-09-28 02:58

目录修整

目前的系列目录(后面会根据实际情况变动):

上上篇文章说的以后只更新32位版本这句话收回,以后会同时更新32位和64位的最新版本,已经可以在Python中使用Detours来hook 64位版本。

为了加快进度,第六篇和第七篇同一天发布,这篇文章为使用总结,想知道hook原理的可以看同时间发布的其他几篇文章。

温馨提示:本次发布的这几篇文章都是偏技术,想获取成品直接使用的可以等下一篇文章(实战32位和64位接收消息和消息防撤回)

另外,这篇文章开始建群,请关注github或者公众号菜单栏

封装好的Hook库32位程序的Hook

hook的参数有两个:内存地址和回调函数。回调函数的参数是一个包含x86所有寄存器的结构体指针,没有返回值。结构体的定义如下:

一个简单的Hook 示例:

context这个结构体获取的就是当执行到这个地址时的寄存器的值,这个和你用x32dbg看到的寄存器的值是一样的。值的类型都定义成DWORD,如果寄存器是类型是其他类型,比如字符串或结构体,你需要在Python里做相应的转换,可以参考下面Hook日志的代码

你同样可以在回调函数里修改这个指针中寄存器的值,它会反映到实际的寄存器,案例的话会在消息防撤回那一篇文章演示。

64位的Hook

因为64位hook是封装的Detour,比32位需要多定义一个函数指针,而且只能hook函数。所以hook之前需要知道被Hook的函数参数有几个,类型如果不知道的话,可以像上面一样都定义成c_uint64。

回调函数的参数跟被Hook函数的参数必须一样,如果参数很多,你也可以用*arg来表示,示例代码如下:

另外,回调函数的返回值类型也需要和被Hook函数一样,一般都是先调用原函数获取返回值然后返回。如果返回错误类型的返回值,进程会崩溃。

案例

为什么要选择Hook日志做案例?日志是多线程打印的,如果Hook日志没有问题的话,其他任何位置的Hook基本都不会有问题。

效果

hook后的效果如下:

32位代码

先定义回调函数,因为我需要同时获取参数和返回值,所以要hook两个地方(函数头和函数尾)。

用x32dbg在日志函数头位置下个断点,看起来有两个有用的信息:EDX的代码路径和esp的函数返回地址。

定义回调函数:

然后看返回值,返回值获取的是EAX的值

在new一个Hook类hook这两个位置:

因为需要支持热加载,所以在hook之前先调用一下unhook,这样你修改代码就会生效新的hook。

使用

你想hook日志的话,先将github的代码拉下来,然后安装依赖,再运行main.py注入Python之后,修改robot.py, 添加如下代码控制台就会打印日志了:

github的代码更新了3.9.8.15和3.9.8.12两个版本,如果有更新的版本,请提issue。

64位代码

x64dbg打上断点,可以看到RDX是代码路径,而RDX是函数的第二个参数。因为获取不到寄存器,所以返回地址就拿不到了。

返回值如下, 也是char数组:

定义回调函数,日志函数有12个参数,我就用args来代替了:

开始hook

代码更新

以后微信相关的代码统一到下面的仓库更新:

32位和64位hook的代码封装成库并发布到pypi,可以通过pip install py_process_hooker安装或者pip install --upgrade py_process_hooker更新,具体操作请看仓库说明。

其实微信相关的代码也可以发布到pypi,后面代码稳定下来再看要不要发布。因为目前需要频繁更新,比较麻烦。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
WPS手机版怎么设置页边距 页面设置了解下 wps页边距水平和垂直在哪里? wps excel页边距水平居中设置技巧_百度... 冬季储存大葱最简单方法是什么?怎样让大葱新鲜过冬? 大葱在过冬的时候应该怎样储存 高分求,流鼻血问题。她一到热天随便晒晒太阳就经常流,有时候步晒太阳也... 我一晒太阳就流鼻血是什么问题 家用投影仪排名前十名的品牌有哪些? 坚果j10s和n1pro 色彩对比 坚果j10s当家用投影仪如何? 神奇宝贝观看顺序 武汉不明原因肺炎可以治好吗 新冠肺炎有没有可能自愈 武汉新型肺炎后遗症 武汉金银潭医院院长:新冠肺炎是自限性疾病 治愈率很高 用英语介绍巴黎(要有中英对照),巴黎周边旅游城市推荐英文 好吗今天是谁唱的? 公司10周年庆,我唱刘德华的《今天》行吗? 怎么样把刘德华的今天’这首歌唱好. 怎么样唱好柳德华的那首<今天> 生产并销售劣药罪的构成条件有哪些? 哪些条件会构成生产并销售劣药罪? 这样来看化验单,才算真的懂了 肺炎的分型有哪些 肺炎支原体衣原体抗体阴性是什么意思 引起肺炎的病原体有哪些 感染性肺炎是什么引起的 肺炎ct的片子怎么看 肺炎弱阳性是什么意思 薏米、红豆、核桃仁、花生米、燕麦能一起吃吗 核桃,花生,红豆,香菇,薏米,桂圆,猪肉能一起煮汤喝吗 牛肉不能放什么食物一起吃 牛肉不能放什么食物一起炖 牛肉不能放什么菜一起吃 牛肉不能与什么一起吃东西 炖牛肉最忌讳哪三种食物 兰陵王入阵歌曲 《武媚娘传奇》兰陵王入阵曲舞蹈动作的出处 兰陵王入阵曲舞蹈教学兰陵王入阵曲完整版 初一的孩子总是爱玩手机游戏,该怎么办? 霎时毛笔字怎么写? 你好,我想请问口服阿奇霉素胶囊需要停药多少天做尿常规准确率高啊? 铠甲勇士:炎龙铠甲3内容简介 卢洁云作品介绍 word文档怎么比较两个文档内容是否相同? Excel怎么判断两个文本是否一致 数码视听柜怎么蓝牙 视听柜如何安装 视听柜上有一个插槽,写着SD/MMC,是什么意思? 视听柜放客厅好吗视听柜放客厅有什么禁忌 视听柜尺寸一般多少?