背景和目的
接来下的这篇文章会介绍如何完成一个
“不可能”
的任务——通过
改一个数字
,破解掉Paw这个收费软件。
起初是在某位大神的博客里看到了Mac上一款非常好用的App,叫
Paw
。Paw可以在Mac上模拟各种HTTP请求,可视化的管理HTTP Header、Parameters、Cookies等,还有一点非常出乎意料的功能是通过下载插件可以自动生成Swfit、OC、JS等多种语言的代码。
然而Paw巨贵(198软妹币),而且破解版不好搜。于是寻思着自己动手解决需求,于是倒霉的Paw成了实验对象。
先从这里下载原版app
由于在此之前我毫无逆向工程方面的经验,在看别人的介绍时各种不懂,深受折磨,所以我尽量用简单、详细的语言描述本次从零开始破解app之旅。作为参考,我用了
大约七个小时
的时间完成了此次破解(大量的时间浪费在找工具以及学习使用工具上,后面可以看到破解这个事情本身并不难)。在文章的最后会给出破解版的下载地址。
由于水平有限,只是介绍了基本的逆向工程知识,算是自己的学习笔记,也希望向更多的和我一样还只是菜鸟的程序员科普一些逆向工程的基本知识,同时督促自己平时在Coding过程中的注意代码规范和安全。
知识储备
想要破解app,首先自己得开发过app,至少了解一些基本的命令行操作,源代码、汇编代码和二进制码的基本定义。如果这些基本要求有某一点不满足,那么整个过程会是非常痛苦的。
工具准备
破解Paw用到的工具主要有以下几个。
-
homebrew
—— 不知道这个的估计都不好意思说自己是用Mac的程序员。 -
Hopper Disassembler
—— 反编译工具,根据可执行文件反编译出汇编码。 -
Class-dump
—— 逆向工程的入门级工具,导出一个App的某些信息。 -
otx
—— 国外某位大神的介绍的一个工具,我也说不出明确的用处。通过
brew install --HEAD homebrew/head-only/otx
命令安装。 -
Hex friend
—— 二进制文件编辑器,要用这个修改二进制文件。 -
gdb
—— 著名的调试器,用lldb也行。通过
brew install gdb
命令安装。
Begin cracking
找到破解点
要破解App当然要明白自己为什么要破解它,它哪一点限制了我们,首先运行原版的Paw。可以看到如下界面:
这个Welcome界面非常讨厌,由于它的存在,我们不能点击程序主界面。而想要关掉这个Welcome界面,只有两个方法,选择
Try Paw
按钮获得30天试用期或点击
Register License
按钮输入自己的License。
因此我们的目的以及非常明确了——
关闭这个Welcome页面
初探Paw
既然要破解这个App,免不了要去了解这个App的结构。现在我们手上只有在Applications文件夹下的Paw.app这一个文件。突破口在于
Paw.app/Contents/MacOs/Paw
这个可执行的二进制文件。我们以后的操作,绝大多数时候是与它打交道。在“
应用程序
”文件夹下,右键Paw,选择“
显示包内容
”就可以看到这个二进制文件了
这时候,第一个工具——
class-dump
出场了。由于篇幅所限,我就不介绍这个工具的具体配置方法了。可以参考这篇文章
我们先用
class-dump
导出Paw的头文件看看,在终端中执行命令:
class-dump -H /Applications/PawReal.app/Contents/MacOS/Paw -o /Users/你的用户名/Desktop/classdump
,
换上你的用户名,等运行结束之后,在桌面上可以看到一个叫
classdump
的文件夹。不要被里面密密麻麻的文件吓到&#