发表于 2018-1-2 16:24

申请id:lluvio

申请id: lluvio
个人邮箱: caotousir@gmail.com

本文主要描述破解 Contexts 的过程


## 基本汇编指令

本文章需要了解的汇编指令

```
mov dest target ; 将 target 赋值给 dest
call xxx ; 调起一个 xxx 方法
jmp ; 无条件跳转
ret ; 返回
```



## Contexts Crack

这里简单讲讲破解(https://contexts.co/) 的流程,Contexts 是一个有试用期的收费软件,价格 `$9.99`。我们通过 `Hopper Disassembler` 反汇编工具打开 Contexts。

因为是试用的,所以我们可以很快的通过 `trial` 关键字找到一些相关函数。我在这里顺藤摸瓜,找到了 `checkStatus` 函数,一看这个函数就是检查 状态之类的意思

!(https://lluvio.github.io/blog/images/contexts-0.jpeg)

我们打开 `Hopper Disassembler` 提供的伪代码模式,可以看到一个关键单词 `isAppLicensed`。其实这里是调用名为 `isAppLicensed` 的 函数,将其返回结果与 `0x0` 比较。那接下来我们是不是可以猜测,这个条件语句成立即表示应用未授权呢?

!(https://lluvio.github.io/blog/images/contexts-3.jpg)



我们回头把将汇编代码改成如下图显示的内容。现在这个函数直接返回 `0x1`,即 `isAppLicensed` 返回始终不等于 `0x0` ,所以上图条件成立的情况将不存在,直接走到 `return`,什么事情都不会发生

!(https://lluvio.github.io/blog/images/contexts-1.jpg)



可以再看看还有什么地方使用了这个函数,如下,发现这个函数只被引用一次

!(https://lluvio.github.io/blog/images/contexts-2.jpg)



好,contexts 的破解结束。破解归破解,希望能从软件上得到帮助的同学能够支持作者!



## 其他

这里可以看到我仅仅是改变了函数返回的值,这也是破解带有试用期软件的常用手段

```
mov target, value ; 这里的 value 可以是 0x0/0x1
ret
```

但需要云计算的软件不好破解,因为你下载的程序不带完整功能,核心功能也许就是服务器端计算运行的,例如图像识别,这类情况下你的每一步操作需要全程联网,每一步操作都有可能被服务器校验。



## 参考资料

1. [基本指令大全](http://c9x.me/x86/)
2. [所有软件都可以被破解吗?](https://www.zhihu.com/question/29372527)

Hmily 发表于 2018-1-2 18:06

过程有些简单,可以补充更多技术内容来申请。
页: [1]
查看完整版本: 申请id:lluvio