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 破解之路的更多相关文章

  1. mac App 破解之路六 studio 3t

    不想无限使用,直接破解到正版: 输入邮箱 名字之后 还有licence信息之后,处理函数是: this.text.getText() 很明显是你输入的licence.   然后交给父类okPress处 ...

  2. Mac App破解之路九 vscode插件破解

    破解对象: luaide 破解目的:学习如何破解vscode插件 破解背景: vsscode用了这么多年,安装了很多插件,其中luaide插件是收费的.  说实话,100块并不贵, 我本来准备买的. ...

  3. MAC App破解之路十 Particle Design

    这个软件破解非常简单: 修改: [PaddleStatic Yz6nrtNwF4].直接返回1 效果:

  4. Mac App 破解之路八 病毒程序分析

    本人使用MacBooster 7 扫出了几个未知程序. JMJ56 这个程序. 在finder中打开发现是一个shell脚本 调用了python 9NKb0 就是python脚本使用.    只不过是 ...

  5. Ios App破解之路二 JJ斗地主

    前提条件: 越狱手机里, 安装了 <JJ斗地主> 使用砸壳工具clutch 下载地址: https://github.com/KJCracks/Clutch/releases dzq:~/ ...

  6. IOS App破解之路一 拿到appstore上的ipa

    1,  在Mac电脑上的app store里搜索Apple Configurator2 并安装 2, iPhone手机连接Mac电脑 3, 登录Apple Configurator2 菜单栏,  账号 ...

  7. 【APP设计利器】Sketch 41 Mac中文破解版(含汉化插件)

    Sketch是一款拥有美观界面和强大功能适用于所有设计师的专业矢量绘图工具.它旨在为美术设计师创造出一款更优秀的作品,不是复制品,而是提升品.Sketch简约的设计是基于无限的规模和层次的绘图空间,免 ...

  8. 破解安装 SecureCRT 7.0.2 for mac完美破解版,mac secureCRT , apple secureCRT

    mac secureCRT , apple secureCRT 下载地址:http://download.csdn.net/detail/guolichun/7733069 破解安装  SecureC ...

  9. Mac上的欧路词典单词本迁移到有道词典 #node.js

    摘要 有道词典提供了柯林斯和朗文辞典,加上最近在背单词且Mac版的屏幕取词也够用了,为了云单词本的同步,决定抛弃Mac上的欧路词典.单词欧路上的单词本也存了一百多个单词.怎样迁移到有道呢? 关键词:n ...

随机推荐

  1. Exists 方法

    public void ExistsMethodDemo() { string userId = "123"; string userName = "admin" ...

  2. DataGridView DataSource 如何实现排序

    将数据绑定在下面的类中就可以实现排序 public class SortableBindingList<T> : BindingList<T> { private ArrayL ...

  3. Educational Codeforces Round 20 C(math)

    題目鏈接: http://codeforces.com/problemset/problem/803/C 題意: 給出兩個數n, k, 將n拆分成k個數的和,要求這k個數是嚴格遞增的,並且這k個數的g ...

  4. 单片机的C语言中位操作用法2

    单片机的C语言中位操作用法 在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大 的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点. 这也 ...

  5. Codeforces 1136E(转化+线段树维护)

    题目传送 虽然线段树比较显然但是发现a数组并不好维护.考虑将a转化为好维护的数组b. 方法 这里我将k[1]设为0,对应着\[a[1] + k[1] <= a[2]\]不难得出\[a[i] + ...

  6. 2017 Multi-University Training Contest - Team 1 Balala Power!

    Talented Mr.Tang has n strings consisting of only lower case characters. He wants to charge them wit ...

  7. CATIA 各个版本代号详解

    一. 第几代(V-"version")简介 1982—1988年,catia相继发布了第一代—V1版本.第二代—V2版本.第三代—V3版本,并于1993年发布了功能强大的第四代—V ...

  8. web基础笔记

    浏览器渲染页面的过程 浏览器渲染页面前需要先构建 DOM 和 CSSOM 树.因此,我们需要确保尽快将 HTML 和 CSS 都提供给浏览器. 参考:https://developers.google ...

  9. npm 修改源地址

    修改源地址为淘宝 NPM 镜像 npm config set registry http://registry.npm.taobao.org/ 修改源地址为官方源 npm config set reg ...

  10. 第六章 设计程序架构 之 设计实现WebSocket策略

    1. 概述 传统网页的通信方式是请求-响应模式,每次请求-响应都是新的连接.连接的建立和断开也是需要消耗资源的. WebSocket是基于TCP协议,实现单个连接上的双向通信. 本章内容包括: 异步读 ...