hook 微信信息撤回功能

公众号:泷羽Sec-尘宇安全

hook 微信信息撤回功能

原文地址:https://bbs.kanxue.com/thread-282005.htm
b站刷到一位老师分享了hook pc端微信信息撤回功能的视频,跟着动手操作了一遍之后,尝试了一下hook Android端的微信,下面分享一下学习过程。

视频链接:广东财经大学-信息安全-基于IDA Pro和Frida的微信消息撤回无效实验_哔哩哔哩_bilibili

PC端

PC端那位老师已经演示的很清楚了,我就简单的复述一遍,感兴趣的可以看一下视频。

微信的核心功能都是在WeChatwin.dll(windows下)里实现的,信息撤回也不例外。

我们使用ida分析,通过字符串进行定位,试试相关的字符,如:撤回、revoke、withdrawn等关键字

我们逐一hook使用到这些字符串的函数,然后点击微信的撤回,如果有log输出,就代表是关键函数。

测试脚本如下,首先我们获取了dll的加载地址,然后通过ida查看到函数的偏移地址,将dll地址加上该偏移地址,即可得到内存中该函数的地址,那么如何确定哪一个才是撤回相关函数? 就是靠试,使用到msg相关字符串的函数我们都hook一遍,然后触发撤回功能,如果打印出来revokeMsg就说明hook成功。

import frida,sys
 
# 创建脚本
jsCode="""
 
//写入js脚本 就和之前一样
//下面的代码获取dll的加载地址
const baseAddr=Module.findBaseAddress('WeChatWin.dll');
console.log("baseAddr:"+baseAddr);
 
//每次需要修改的只有这里
const revokeMsgFunAddr=getRealAddr('0x1823CD710');
console.log("function addr:",revokeMsgFunAddr);
 
//根据地址进行frida注入
Interceptor.attach(revokeMsgFunAddr,{\
//一旦进入hook的函数,该回调函数就会被调用
     onEnter(args){
      console.log("-----revokeMsg------")
     }
});
 
//dll地址加上偏移地址,定位到这个函数
function getRealAddr(addr){
  //基地址
  const idaBase=ptr('0x180000000');
  const offset=ptr(addr).sub(idaBase);
  const result=ptr(baseAddr).add(offset);
  return result;
}
 
"""
 
#使用任务管理器查看微信的PID然后填入
session = frida.attach(7876)
 
# 运行脚本
script = session.create_script(jsCode)
 
script.load()
print("Successfully attached!!!!")
 
 
# 防止运行完进程直接退出
sys.st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值