[软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
0x00 一点废话
最近因为Mac软件收费的比较多,所以买了几款正版软件,但是有的软件卖的有点贵,买了感觉不值,不买吧,又觉得不方便,用别人的吧,又怕不安全。于是我就买了正版的Hopper Disassembler然后把这些软件分析一下[滑稽]。
本文cnblog的图片不怎么清楚,提供高清PDF下载。
https://my.pcloud.com/publink/show?code=XZKaIy7ZS5cfJax4mih0UCu985wrczJ17du7
0x01 所需工具
调试工具
Hopper Disassembler (最好正版)
内核追踪
dtrace(系统自带)
0x02 QQ防撤回
先把QQ的主程序拽到我们的Hopper里边,等待它全部分析完,没分析完的时候,右下角有一个红色的Working。它分析完后大概是这个样子。
这时候我们需要寻找一个撤回的类。QQ的这个撤回的类叫QQMessageRevokeEngine(QQ消息撤回引擎)。我们继续查找这个类下面的方法。
这个时候发现该类有如下方法:
[QQMessageRevokeEngine init]
[QQMessageRevokeEngine onDidChangeAccount]
[QQMessageRevokeEngine handleRecallNotify:isOnline:]
[QQMessageRevokeEngine getProcessor]
[QQMessageRevokeEngine revokeMessage:completion:]
[QQMessageRevokeEngine handleRevokeC2CMsgResp:completion:]
[QQMessageRevokeEngine handleRevokeGroupMsgResp:completion:]
[QQMessageRevokeEngine setC2CReqWithMsgArray:drawReq:]
[QQMessageRevokeEngine setClusterReqWithMsgArray:drawReq:]
[QQMessageRevokeEngine .cxx_destruct]
发现init方法,这个是初始化的方法,我们只需要将这个方法给return掉,整个撤回引擎就没用了。
方法头部ret,然后保存测试下,这里会问你是否移除签名,直接移除即可。
保存替换原文件。
和手机端对比下。
0x02 微信防撤回
跟QQ防撤回差不多所以这里不细说,先载入Hopper。查找onRevoke关键字,找到MessageService onRevokeMsg:这个方法,直接return。但是有一点需要注意,就是微信Hopper分析的时间有点长。
保存测试。
0x03 某商业软件分析
QQ和微信都是很好解决的毕竟有Revoke这个关键字,但是接下来我们分析的这个软件,是个VPN连接工具,需要动态内核追踪。因为当时我找不到它的类关键字。
首先,直接打开软件发现这个窗口。提示我们需要激活license。
看来,我们需要先把这个窗口干掉。
先载入Hopper,发现所有跟License有关的方法都在NUShimo这个类里边。
那我们就使用dtrace去监听这个NUShimo类。关掉Hopper,打开一个终端窗口。
打开我们的试用软件。先获取PID然后用dtrace开始监听试用软件。
然后 发现:
NUShimo的这个applicationDidBecomeActive方法好像可以patch掉。
看一眼伪代码发现确实是弹那个激活的窗口的方法。直接头部ret。
保存,然后测试一下。
确实不弹需要注册的窗口了,但是还是不能连接VPN。
看来还得处理这个弹框啊,这个弹框我就懒的用dtrace追踪了,使用字符串查找方法吧。
我们看到它弹的是 You need to activate什么什么的,Hopper搜索这个字符串。
继续追踪调用这个字符串的地方。
再次查找上层调用。
发现来到了这个地方。
发现这个,看一眼伪代码。
发现只要让这个if成立就可以跳过这个框。
这个je跳转是关键跳,直接改成jne。然后保存测试执行。
OK成功,这样虽然显示无效的liense和试用到期,但是依然可以连接VPN。
本文来自 突突兔@Nixi_Team
请尊重版权,转载请通过本人许可。
[软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回的更多相关文章
- ubuntu系统下创建软件桌面快捷方式
转自ubuntu系统下创建软件桌面快捷方式 默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制- ...
- Mac系统下Datagrip打不开、点击没反应?
有没有可能是因为你从网上下载了一些破解软件导致的? 背景 Mac系统下JB公司家的IDEA. Datagrip.PyCharm 或 Goland 打不开点击没反应-- 分析 大概率是之前安装过 汉化插 ...
- Mac系统下React Native环境搭建
这里记录一下在Mac系统下搭建React Native开发环境的过程: 1. 安装HomeBrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.g ...
- MAC系统下,删除.svn文件
MAC系统下,.svn文件是隐藏的. 如果项目是非export导出的,那么项目中会有很多的.svn文件. 如果项目的体积非常庞大,我们如何快速的批量删除.svn文件呢?下面是操作方法: 打开终端,cd ...
- Mac系统下使用VirtualBox虚拟机安装win7--第一步 安装vbox虚拟机
Mac系统下使用VirtualBox虚拟机安装win7操作步骤: 第一步 安装vbox虚拟机 1.先下载vbox,下载地址:: https://www.virtualbox.org/wiki/Down ...
- 曲线救国,解决Mac系统下,Android sdk下载失败的问题
Mac下翻_墙的问题 话说GFW屏蔽谷歌已经有一阵子了,最近打算在Mac系统下折腾个Android应用,备好了IDE,只欠SDK,无奈下载时因为GFW的缘故,总是失败,我心痛哉! 由于本人偏爱Mac系 ...
- MAC系统下Sublime Text3 配置Python3详细教程
MAC系统下Sublime Text3 配置Python3详细教程(亲测有效) https://blog.csdn.net/weixin_41768008/article/details/798590 ...
- Mac系统下编译支持Android平台的最新X264编码器
Mac系统下编译支持Android平台的最新X264编码器 原文来自 http://www.mingjianhua.com,转载请注明出处 1.首先去官网下载最新的x264源代码,解压到任意目录 ht ...
- mac系统下ionic环境配置
本人是在mac环境下进行配置的: 下载nodejs:https://nodejs.org/download/ 并双击安装 Cordova and Ionic command-line tools 安装 ...
随机推荐
- 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 1.Practice questions:Detection algorithms
[解释] tree的两个bounding boxes 都要保留,因为交并比小于0.5:car 0.73保留:pedestrain 0.98保留:motorcycle 0.58保留.一共5个. [解释] ...
- Eclipse建立Java工程中的三个JRE选项的区别(Use an execution environment JRE,Use a project specific JRE,Use default JRE)
本博客部分转载自: http://blog.csdn.net/wdjhzw/article/details/42086615 这篇博客写的非常好,很用心. 一.首先看新建Java Project时候 ...
- Java并发框架AbstractQueuedSynchronizer(AQS)
1.前言 本文介绍一下Java并发框架AQS,这是大神Doug Lea在JDK5的时候设计的一个抽象类,主要用于并发方面,功能强大.在新增的并发包中,很多工具类都能看到这个的影子,比如:CountDo ...
- iOS开发(1):设置APP的图标与启动图 | iOS图标的尺寸 | LaunchScreen的使用
每个APP都应该有自己的图标跟启动图. 这里介绍怎么设置iOS的APP的图标跟启动图. (1)图标 小程的xcode是10.0版本,设置图标的入口如下: 点击入口后,进到设置页面,如下: 可以看到有很 ...
- #18 turtle模块
前言 这一节继续记录模块,本节将记录Python中一个非常重要的画图模块——turtle,Here we go! 一.turtle模块 turtle(海龟)模块是Python中强大的内置画图模块,可以 ...
- .net core 基于IIS发布
原文链接: https://www.cnblogs.com/gx018/p/7874060.html
- vue.js 使用时间组件 日期少一天的问题
<el-form :inline="true" class="demo-form-inline padding-top-20"> <el-fo ...
- C# 函数式编程:LINQ
一直以来,我以为 LINQ 是专门用来对不同数据源进行查询的工具,直到我看了这篇十多年前的文章,才发现 LINQ 的功能远不止 Query.这篇文章的内容比较高级,主要写了用 C# 3.0 推出的 L ...
- 浏览器与Tomcat交互
浏览器与Tomcat交互 Web开发者都知道在Tomcat下部署应用后启动Tomcat即可通过浏览器与Tomcat建立连接. 那么二者之间的连接建立过程是怎么样的呢?(在此,我们不具体讲述关于网络底层 ...
- Java基础回顾Application(一)
Java Web 中application(应用级) session(会话级) request(请求级) 在JavaWeb 中实现数据共享往往通过定义属性的方法来实现,而什么是属性呢?它类似于Hash ...