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

到此, 破解工作全部结束.

最新文章

  1. 《Pro ASP.NET MVC 4》异常整理
  2. 数据库视图 (View)和EntityFramework Code First结合使用
  3. (转)SpringSecurity扩展User类,获取Session
  4. Windows API 文件处理
  5. 【HTML】Jquery前台传参及接收
  6. Android 图片处理方法
  7. sqlite3 小结
  8. NET下三种缓存机制(Winform里面的缓存使用 )
  9. Eclipse ADT 插件安装慢的解决的方法
  10. Django扩展自定义manage命令
  11. Elasticsearch 索引别名与Template
  12. webbench安装使用
  13. 二叉树:B+tree等
  14. uarts裸机程序
  15. ODAC(V9.5.15) 学习笔记(十)TVirtualTable
  16. Docker for Windows(三)Docker镜像与容器的区别&常用命令
  17. 20155236 2016-2017-2 《Java程序设计》第四周学习总结
  18. cocos2dx -- 学习笔记
  19. bootstrap-table 分页增删改查之一(增加 删除)
  20. Mybatis-Plus的填坑之路 - Lynwood/wunian7yulian

热门文章

  1. uoj#267. 【清华集训2016】魔法小程序(乱搞)
  2. 单片机C基本编程规范
  3. MyBatis逆向工程中domainObjectRenamingRule报错或无效
  4. jsp内置对象分析
  5. Hive_Hive的安装
  6. 简单了解junit的使用
  7. jQuery addClass() 源码解读
  8. Java动态解析域名
  9. 在spring的过滤器中注入实体类(@autowire会失效可使用这个方法)
  10. Sql Server 排序规则字符集的冲突问题