Mac app 破解之路
6年之前一直做过一些内存挂,脚本挂。都是比较低级的技术。 这几年期间,断断续续利用业余时间学了一些汇编的知识,当时只是想着破解游戏。
所有的黑技术都是业余自学的,没有老师可以问,只能百度和自己领悟,比较苦逼。有时候搞一个东西搞到吐血,想砸电脑。
6年前就知道 Windows破解的工具: ida, ollydbg. CE. 换到Mac电脑,想当然也是想用这个几个软件。百度了一番,除了ollydbg, 都有Mac版本的。
于是网上下载了一个mac版本的IDA工具,随便拖了几个可执行程序分析了一番,还不错的,挺强大的。
我用这个工具,破解了很多cocos2dx加密的游戏, 也用这个工具破解了公司加密的nodejs库。
全是靠先搜索字符串,然后定位到代码的地方,然后反编译,拿到伪C代码。 这种方式有很大的局限。
这个玩意修改代码很弱,需要很强的汇编的知识,得知道指令code码,才能修改。也得保证字节长度。
最为关键是不能动态调试,一调试程序就崩溃。 这个玩意弄了我好久,气到吐血。
甚至有一种想法重金买正版,看这个玩意能不能在mac上调试。
新的曙光,无意之中,看到了hopper工具。 于是下载了一个破解版本的hopper 4.0.3
想动态调试一番,不管怎么着,也始终调试不了。一直提示无法启动lldb或者没有权限。
无奈之下,只好删除这个破解版本, 去官网买了一个正版。
【这个中间有一个插曲: 我花了685块大洋,结果他娘的不给老子license. 于是果断发邮箱过去询问。 这里不能使用QQ邮箱。
只能使用非QQ邮箱和他们对话, 第一封email的意思是我使用支付宝付完费用了,为什么没有收到licence, 下的订单填的QQ邮箱。
下午两点给我的回复,说需要支付截图。 我白天在上班比较忙 ,晚上10点多才看到这个回复, 于是把支付宝支付的截图发过去了,凌晨5点多,他们回复了。
也没说原因,只是说解决了这个问题,让我再次查收QQ邮箱。终于license文件收到了。从付费到拿到license文件,整整一天一夜】
附一张版本信息截图:

工具有了,就得发挥他的作用了,先拿cleanmymac-x开刀。
为什么要破解它?因为本人花钱买了一个cleanmyMac 3的永久授权, 但是目前有了-X最新版, 于是想要升级,结果他娘的,又要钱。搞的很不爽。
真正开始破解:
破解工具:hopper 4.5.12, charles
破解对象:cleanmymac-x 4.4.3中文版
1, 拖拽cleanmymac-X 文件到工具hopper 4.5.12,如图

2. 搜索字符串,.php.
为什么要搜索它?是因为我打开charles工具后,输入license字符串,检测到验证的地址是 .php的接口

3,跳到使用这个这个字符串的方法:
000000010050c055 db "https://activations.devmate.com/activation.php", 0 ; DATA XREF=sub_1003a3410+1621
双击sub_1003a3410 就跳入了
反编译它,这个函数有一大坨。从头到尾扫了一遍, 大概逻辑流程看懂了。
函数前半段,就是加密你输入的数据,然后组织请求头和请求参数,异步发送请求。
我不关心他是怎么加密的,怎么组织数据发送出去的。我只关心程序后半段,即处理服务器返回的数据。
后半段的部分截图:

动态调试了一番,从网络上拿到的数据是二进制数据,应该是加密处理了。 MSMutablelData里存放的是 【v3.二进制网络数据】
4,跟踪了很长时间没一个结果,准备放弃制作注册机了。这里比较绕,太浪费时间。
破解软件一般有3种方法:
a,一般逆向出算法,搞一个注册机出来,这样在不修改源二进制文件的情况可以达到破解目的。
b,直接修改二进制代码,直接跳过认证。
c,如果软件有试用期时间,动态直接找到读写试用期的位置,然后进行删除,然后无限试用
5,决定采用直接修改二进制代码,直接跳过认证的方式来破解这个软件。
再次所搜字符串 isactiv 得到结果:

6, 从上图结果可知,是否激活的标志取决于 sub_1003712a0方法,查找交叉引用找到sub_100372d90
修改这个方法直接,让0,变成1.

修改完后保存二进制文件:shiltf + Command + E

弹窗的意思是:
已经修改了已签名的应用程序。原有签名对生成的新的二进制文件无效。 要不要删除这个删除这个无效签名。
这里选择删除即可。【正确做法是: 保持无效签名】
7, 然后重新测试cleanmymac-x, 发现已经破解了,不会再有任何弹窗了。 但是会有一些清理不干净,是因为没有权限的原因, 没有签名也就没法赋予权限。
8,重新签名:
查看签名:
➜ dmg codesign -v CleanMyMac\ X.app CleanMyMac X.app: code object is not signed at all In architecture: x86_64
查找本机可用的签名:security find-identity -v -p codesigning
重新签名:codesign -f -s "签名" /path/to/app
/Library/Developer/CommandLineTools/usr/bin/codesign_allocate: file not in an order that can be processed (link edit information does not fill the __LINKEDIT segment): /Users/dengzhongqiang/Downloads/dmg/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X
CleanMyMac X.app: the codesign_allocate helper tool cannot be found or used
报错了。
出现这个问题并不是签名工具出错了,而是hopper生成二进制文件时去除签名信息过程中导致的LINKEDIT段错误。对比文件会发现出了自己修改的汇编代码还有别的数据一起被改掉了,并且被改掉的数据还是挺多的。要解决问题也很简单,生成可执行文件的时候不要去掉签名信息。重新导出一个版本
没破解前的签名:
➜ dmg codesign -dvvv /Applications/CleanMyMac\ X.app
Executable=/Applications/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X
Identifier=com.macpaw.zh.CleanMyMac4
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20500 size=69061 flags=0x10000(runtime) hashes=2149+5 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=3f59bf294b4a40914c2f13f48c28ab99cd7f98a5
CandidateCDHash sha256=6890d759d07aa2cf1513b0e01070ac7617a44be3
Hash choices=sha1,sha256
CDHash=6890d759d07aa2cf1513b0e01070ac7617a44be3
Signature size=9003
Authority=Developer ID Application: MacPaw Inc. (S8EX82NJP6)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 14, 2019 at 7:46:17 PM
Info.plist entries=41
TeamIdentifier=S8EX82NJP6
Runtime Version=10.14.0
Sealed Resources version=2 rules=13 files=236
Internal requirements count=1 size=188
破解后的签名:和上面一摸一样。
重新签名:
➜ MacOS codesign -f -s "Mac Developer: Deng Zhongqiang (Z5472F3S63)" /Applications/CleanMyMac\ X.app
/Applications/CleanMyMac X.app: replacing existing signature
再查看重新签名的破解文件的签名:
➜ MacOS codesign -dvvv /Applications/CleanMyMac\ X.app
Executable=/Applications/CleanMyMac X.app/Contents/MacOS/CleanMyMac-X
Identifier=com.macpaw.zh.CleanMyMac4
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=68953 flags=0x0(none) hashes=2149+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=efb5f4497d7e8b7c5d5d271aadd02a9ac8547090
CandidateCDHash sha256=7792767bec80d69685747f1d343d6c332dff6f6c
Hash choices=sha1,sha256
CDHash=7792767bec80d69685747f1d343d6c332dff6f6c
Signature size=4782
Authority=Mac Developer: Deng Zhongqiang (Z5472F3S63)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=Jun 23, 2019 at 2:29:14 AM
Info.plist entries=41
TeamIdentifier=Q53X4QR364
Sealed Resources version=2 rules=13 files=236
Internal requirements count=1 size=188
===============
接近尾声:基本上可用把破解包发给别人用了。
1, 把破解包拷贝到dmg目录【目录名dmg自己随意】,
2, cd dmg
3, ln -s /Applications Applications
4 , 使用磁盘工具》 文件 》新建映像 》来自文件夹的映像 〉选择dmg
==============
给别人的破解软件可能会一直弹出安装帮助程序界面。
解决办法有两种:
1,先让别人安装正版软件,先进行身份验证【操作菜单-》身份验证】, 然后再用破解的二进制替换正版的二进制文件
如果是已经验证的情况,点击 操作菜单-》取消验证。 如果是这种情况,说明 CleanMyMac\ X.app已经验证过了, 不需要再次验证。
只需要替换CleanMyMac\ X.app/contens/macos 目录下的二进制文件就好了。 注意仅仅是单个二进制文件,不要替换整个app包。
2,
sudo xattr -r -d com.apple.quarantine /Applications/CleanMyMac\ X.app
sudo codesign --force --deep --sign - /Applications/CleanMyMac\ X.app
或者 codesign --sign --force --deep /Applications/CleanMyMac\ X.app
参考百度经验:https://jingyan.baidu.com/article/67508eb462f5519ccb1ce460.html
=================== 2020/04/18 更新, 目前最新版本是4.6.2版本
我又重新破解了一遍这个版本, 即使没有解锁完整版本的标志了,但是发现删除文件时要一直输入密码:
关于这个一直弹窗输入密码的问题, 修改的位置关键点如图:

即使解决了弹窗问题, 发现删除文件不干净, 查看日志,显示无权限操作.
关于这个的问题, 执行以下命令
sudo chown -R root:admin /Applications/CleanMyMac\ X.app
到此, 破解工作全部结束.
Mac app 破解之路的更多相关文章
- mac App 破解之路六 studio 3t
不想无限使用,直接破解到正版: 输入邮箱 名字之后 还有licence信息之后,处理函数是: this.text.getText() 很明显是你输入的licence. 然后交给父类okPress处 ...
- Mac App破解之路九 vscode插件破解
破解对象: luaide 破解目的:学习如何破解vscode插件 破解背景: vsscode用了这么多年,安装了很多插件,其中luaide插件是收费的. 说实话,100块并不贵, 我本来准备买的. ...
- MAC App破解之路十 Particle Design
这个软件破解非常简单: 修改: [PaddleStatic Yz6nrtNwF4].直接返回1 效果:
- Mac App 破解之路八 病毒程序分析
本人使用MacBooster 7 扫出了几个未知程序. JMJ56 这个程序. 在finder中打开发现是一个shell脚本 调用了python 9NKb0 就是python脚本使用. 只不过是 ...
- Ios App破解之路二 JJ斗地主
前提条件: 越狱手机里, 安装了 <JJ斗地主> 使用砸壳工具clutch 下载地址: https://github.com/KJCracks/Clutch/releases dzq:~/ ...
- IOS App破解之路一 拿到appstore上的ipa
1, 在Mac电脑上的app store里搜索Apple Configurator2 并安装 2, iPhone手机连接Mac电脑 3, 登录Apple Configurator2 菜单栏, 账号 ...
- 【APP设计利器】Sketch 41 Mac中文破解版(含汉化插件)
Sketch是一款拥有美观界面和强大功能适用于所有设计师的专业矢量绘图工具.它旨在为美术设计师创造出一款更优秀的作品,不是复制品,而是提升品.Sketch简约的设计是基于无限的规模和层次的绘图空间,免 ...
- 破解安装 SecureCRT 7.0.2 for mac完美破解版,mac secureCRT , apple secureCRT
mac secureCRT , apple secureCRT 下载地址:http://download.csdn.net/detail/guolichun/7733069 破解安装 SecureC ...
- Mac上的欧路词典单词本迁移到有道词典 #node.js
摘要 有道词典提供了柯林斯和朗文辞典,加上最近在背单词且Mac版的屏幕取词也够用了,为了云单词本的同步,决定抛弃Mac上的欧路词典.单词欧路上的单词本也存了一百多个单词.怎样迁移到有道呢? 关键词:n ...
随机推荐
- 微信小程序中时间戳和日期的相互转换
在微信开发小程序时,后台传入的诗句可能是 时间戳 而不是日期 或者需要把日期转换成时间戳来做出相应的处理时我们将用到时间戳和日期的相互转换微信小程序里, 时间戳转化为日期格式,支持自定义.拷贝至项目 ...
- U3D开发性能优化笔记(待增加版本.x)
http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...
- Ruby测试小代码[计算50以内的素数]
算法思想 判断某一个数,能不能被比他平方根小的素数整除. 首先看看代码 $arr = [] $arr[0] = 2 def add_prime(n) 3.step(n,2){|num| $arr &l ...
- [Xcode 实际操作]八、网络与多线程-(16)使用网址会话对象URLSession下载图片并显示下载进度
目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession显示下载图片的进度. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的代理模式 ...
- RPC跟MQ之间的差异比较
在阿里的平台技术部参与开发了Dubbo(远程调用服务)和Napoli(消息解决方案),又给网站应用支持这2个产品很长一段时间,了解了这2个产品的实现及应用对这两个产品的用法. 大部分情况下,“给定场景 ...
- JSP | 基础 | 中文字符的传递
设置传递格式: request.setCharacterEncoding("utf-8"); 中文字符解码: import java.net.URLDecoder; String ...
- morphia(6-1)-查询
1.filter morphia语法: query.filter("price >=", 1000); mongodb语法: { price: { $gte: 1000 } ...
- TDH-kafka
一.kafka原理:1.broker:一个kafka实例,多个broker组成kafka集群: 2.topic:逻辑概念,同一类数据的集合,可以看做一张表: 3.producer:将数据写入topic ...
- C#的特性学习
转自:https://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类 ...
- Jquery测试纠错笔记
一. 解析: 获取元素范围大小顺序依次为: $(#one).siblings("div")>$("#one~div")>$("#one + ...