声明

  • 仅仅是个人兴趣,没有任何特殊目的。
  • 研究的平台是 Windows。
  • 无法“防止撤回”所有消息,目前只支持文本,没有深入研究了,有兴趣的朋友可以继续挖掘下,如果可以,分享下成果,哈哈!
  • 分析的版本Windows_pc5.1.28

思路

  • 一般就是找到钉钉客户端,处理服务器返回数据包的函数,然后手动触发撤回消息,跟踪分析……

分析过程

简单分析

  • 知己知彼才有可能百战百胜。 先调查下钉钉的框架。Procexp:
    可以看到,钉钉是个多进程的程序,有可能是基于Libcef 或者 Electron开发的,判断方法比较简单,看下是否有加载libcef.dll 。如果有,就是基于libcef开发的……
  • 本人对libcef不熟悉,但是稍微有开发过基于Electron的应用,大致了解libcef也是基于浏览器的应用,也是基于JS、C++的混合开发的应用。 所以,应该会有一些JS代码的资源文件,不过可能被加密了。 看看程序的安装目录有没有什么新发现:
    这里有个很大的pak后缀文件,成功的引起了我的注意。尝试用7z打开,结果:
    诶嘛真香???双击查看试试:
    好吧,果然加密了。 不过作为本地资源,钉钉肯定会解密这个pak文件,加载其中的页面展示。索性直接上调试器,找解压缩密码!
    这里插播一句废话,这个世界的确是存在捷径的,如果没有人告诉你,那么你就只能自己去发现、开辟它。

动态调试

  • 根据某个特征下断点,直接拿密码就好:
    关于这个断点,我只能附上一个截图了,剩下的靠读者自己摸索吧:
  • 拿到密码,提取资源:

静态分析

  • 不能做无头苍蝇。根据钉钉收到撤回消息的提示: XXX 撤回了一条消息,直接在解压缩的资源文件夹下,搜索所有文件:
    这时候就要有逆向的敏感嗅觉,看下这个字符串的引用:
    一坨打包的代码,直接js美化再看下引用(这里直接走“人生捷径了哈”):
    这里应该就是展示撤回消息的js代码了。构造一个DOM节点,设置文字内容。通过多次分析尝试,得到了如下代码,可以防撤回文本消息:
{s = void 0;s = o ? "dt_message_recall_message_file_format" : "pc_im_recalled_a_message";var c = b.i18next.t(s);try {c = " 撤回的消息为: " + a.baseMessage.content.textContent.text;}catch(e) {c= " 读取撤回消息失败。"}t = I.createElement("span", null, r, " ", c)}

改好以后,重新打包一份web_content.pak文件,用7zip打包压缩:
修改后缀为.pak文件,然后直接替换掉原始的:

  • 展示成果:

总结

钉钉是基于libcef开发的应用程序,其加载的核心资源文件,存放在安装目录下的web_content.pak加密压缩文件中。通过解密该资源文件,根据关键字“撤回了一条消息”,定位到处理撤回消息的相关代码,并通过修改代码,重打包并替换资源文件的方式,实现了文本消息的“防撤回”。 不过还是有一定缺陷的,因为只是在界面层防撤回,而不是真正的在处理数据包的native层,做消息防撤回处理。 由于时间关系,就不深入研究了,有兴趣的朋友可以基于以上分析做更深入的文件、@消息、富文本消息的防撤回。 各位大佬,请不吝赐教!

钉钉 消息防撤回 分析相关推荐

  1. 钉钉web版防撤回、屏蔽已读

    钉钉web版防撤回.屏蔽已读 改造后,程序下载地址: https://gitee.com/demos-proj/cef-sharp-demo63.0.3/attach_files/795697/dow ...

  2. 防屏蔽浏览器_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!...

    阿虚同学 读完需要 6分钟 速读仅需 3 分钟 虽然阿虚有几年没用 Android 系统了,但今天还是想来聊聊 Android 系统的通知管理 Google 从 2007年开发 Android 系统以 ...

  3. 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?

    虽然阿虚有几年没用 Android 系统了,但今天还是想来聊聊 Android 系统的通知管理 Google 从 2007年开发 Android 系统以来,其实一直有在「为用户提供更好的通知体验」这件 ...

  4. Python实现微信消息防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:"摇一摇"."漂流 ...

  5. itchat实现微信聊天机器人,定时发送微信消息,消息防撤回,消息监控,自定义回复消息

    一.前言 由于在抖音上刷到微信机器人自动陪聊,心血来潮,自己利用itchat和图灵机器人实现了微信自动回复,监听消息,消息防撤回等.周末心情不好搞了一个微信陪聊机器人陪我聊天. 注意: 1.图灵机器人 ...

  6. #Python #微信 #消息防撤回 Python实现微信防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:"摇一摇"."漂流 ...

  7. 微信防撤回python代码_python实现微信消息防撤回

    微信(WeChat)是腾讯公司于2011年1月21日推出的一款社交软件,8年时间微信做到日活10亿,日消息量450亿.在此期间微信也推出了不少的功能如:"摇一摇"."漂 ...

  8. 微信防撤回python_python使用wxpy实现微信消息防撤回脚本

    本文实例为大家分享了python实现微信消息防撤回的具体代码,供大家参考,具体内容如下 使用了sqlite3保存数据,当有人撤回消息时取出数据发送到文件传输助手. 文件的话会先保存到本地,语音会以文件 ...

  9. 如何使用 Python 实现微信消息防撤回

    在微信上突然看到"XXX撤回一条消息"的时候,心里痒不痒?现在就教你如何实现消息防撤回的功能.不限手机型号.手机无需root,只要微信号可以登上网页版就可以了(部分不常用和新申请的 ...

  10. WeChat Patch 电脑微信多开消息防撤回补丁通用版

    介绍: PC微信多开防撤回通杀补丁工具(WeChat_v3.x_Patch),PC端通用的一个补丁软件,可以修改内核数据,目前能实现的功能有微信多开,防撤回,都是大家广泛需求的功能,将全部文件解压到P ...

最新文章

  1. Android 之Tasks和Back Stack(任务和返回栈)
  2. 云爆发架构是否难以实施?
  3. 什么是防火墙?—Vecloud微云
  4. 美团面试动态规划——整数拆分
  5. opencv java ubuntu_Ubuntu 16.04配置OpenCV 3.1.0 for Java
  6. sscanf取固定长度的int_sscanf函数用法详解-阿里云开发者社区
  7. 为什么我们需要Q#?
  8. Winrunner与QTP
  9. 【转】用Qt生成dll类库及调用方法
  10. MySQL误删数据救命指南:必收藏
  11. 关于uboot中tftp上传内存数据到tftp服务器
  12. tar包zip的拆分与合并
  13. pycharm 设置虚拟工作空间_七、连Pycharm都不知道怎么用,学什么Python
  14. log explorer for sql 不存在或访问被拒绝_原创干货 | 未授权访问漏洞批量化
  15. IE11 0x2ee4 bug 以及类似问题解决方法
  16. 红绿3d眼镜与红蓝3d眼镜区别_佩极定制眼镜青少年3D打印定制系列全新发布
  17. matlab 光斑质心算法,关于激光探测器光斑质心算法硬件的设计
  18. 怎样将CAD里面画好的图纸转换到WORD文档里面去
  19. 开放平台-百度开放平台:百度开放平台
  20. 链塔智库联合清华发布《2018区块链技术应用白皮书》

热门文章

  1. 操作系统原理:文件系统
  2. 抄书——最优化的理论与方法(5)——数学基础(凸集和凸函数)
  3. 世界著名汽车标志欣赏
  4. C#实现发送短信功能
  5. css里的小图标怎么加入,前端页面如何引入小图标?CSS字体的另类使用方式!
  6. 关于码率(Bitrate)、帧率(FPS)、分辨率和清晰度详解
  7. IPC$经典入侵步骤和常用net命令
  8. 局域网共享问题解决方案----日常经验总结
  9. 基于ssm+java+sql企业名录综合统计系统
  10. 刷机后IMEI丢失如何能刷回来