12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 229|回复: 0

使用inline hook实现修改PC微信通知铃声-哥哥微信来了

[复制链接]

305

主题

305

帖子

620

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
620
发表于 2020-5-18 22:12:25 | 显示全部楼层 |阅读模式
原贴:https://www.52pojie.cn/thread-1103441-1-1.html

最近频繁刷某音刷到哥哥微信来了的铃声,刚好今天2.14大家云恋爱,我等单身狗只能舔屏,前几日看到楼主这篇帖子修改了PC微信的提示音,同时楼主也提出了一个缺陷,就是文件大小有限制,不能超过256kb

我个人的理解就是原提示音89.8 KB (92,044 字节),理论上覆盖这个提示音,不能超过这个大小,但是如果说自己增加一块资源段,理论上应该是可以放的,但是这块我们不作讨论,因为我不想去作实现,太没必要了

另外我不知道为什么楼主会说不能超过256kb,阅读了一下api说明,我也没有发现说有这个限制,那么我还是从api入手,看看是否有发现。

首先要理解的是,DLL中的资源是怎么被加载调用的,我们需要知道三个API:

FindResourceW 寻找资源
LoadResource 加载资源
SizeofResource 获取资源大小

只有加载了资源以后,才能对这个资源进行调用

所以我们可以通过这些API找到一个调用点,但是如果说资源比较多,我们要一个一个断下来看,也挺费时间,所以我直接看哪个API函数是播放WAV提示音的入手就可以了,PlaySoundW/PlaySoundA

一般来说都是宽字节,所以我们只需要断PlaySoundW即可,先从WeChatWin.dll里面找导入函数,至于为什么是这个dll,因为这个dll是PC微信实现功能的dll

直接在WeChatWin.dll领空ctrl+N,找到这个导入函数


然后按enter回车键,查找函数调用参考

因为我多次调试过了,所以知道是第一个,如果是第一次,请全部下断,然后让朋友给你发消息,会断下的那个就是播放声音的调用处

然后我们看他的3个参,直接从百度里面搜,看各个参数代表啥意思,大家可以看这篇帖子

https://blog.csdn.net/lindorx/article/details/78724518

然后找到里面的C++代码
PlaySound(TEXT("F:\\c.wav"),NULL,SND_FILENAME | SND_ASYNC);

那么就知道了第一个参数是文件路径或者是资源号,第二个可以为NULL,如果不为NULL,则表示是包含资源模块的模块句柄,第三个参数是播放模式

所以按照这个逻辑,我们自己写一个C++程序,调用一下我们的提示音.wav,然后用OD载入看看

然后OD反编译一下,得到如下代码

剩下的就是照着抄就可以了
[Asm] 纯文本查看 复制代码7B18DD73    68 05000400             push 0x40005      //这里改 push 200017B18DD78    E8 1E0C7200             call 7B8AE99B    //这里是获取资源句柄,可以不改7B18DD7D    50                      push eax  //这里改push 07B18DD7E    6A 76                   push 0x76 // 这里改 push 文件路径的地址 7B18DD80    FF15 F0AA297C           call dword ptr ds:[]  ; winmm.PlaySoundW

文件路径的地址,自己找一个00的空段,写入文件路径,然后把地址改上去即可

重点注意:修改可能会导致需要补码的情况,另外还要考虑重定位,已测试如果直接修改保存,会导致PlaySoundW重定位不可用,大家慎重,坐等大佬放出直接保存的修改方法!!!

修改完毕后的图:


然后inline hook的话就是直接修改PlaySoundW函数,代码使用shellcode即可,我这里没有加判断,可自行添加,因为只有3个提示音,来消息,来电语音,挂断语音
[Asm] 纯文本查看 复制代码04990007    C74424 04 60009904      mov dword ptr ss:[esp+0x4], 0x4990060 //赋值0499000F    C74424 08 00000000      mov dword ptr ss:[esp+0x8], 0x0 //赋值04990017    C74424 0C 01000200      mov dword ptr ss:[esp+0xC], 0x20001 //赋值0499001F    8BFF                    mov edi, edi  //补码04990021    55                      push ebp //补码04990022    8BEC                    mov ebp, esp //补码04990024  - E9 CC28846E             jmp winmm.731D28F5 //调用原函数

shellcode:C7 44 24 04  00 00 00 00  C7 44 24 08 00 00 00 00 C7 44 24 0C 01 00 02 00 8B
FF 55 8B EC E9 00 00 00 00

另外说明一点:使用inline hook的好处就是基本无视微信版本升级,除非他换API,不使用inline hook的话,如果微信资源文件更新导致地址变更就凉了,这点区别大家知晓一下
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-19 00:09 , Processed in 0.125977 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表