24 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 逆向过程
description:
published: true
date: 2021-09-06T17:00:53.240Z
tags: crack
editor: markdown
dateCreated: 2021-09-06T16:58:02.272Z
---
# 逆向过程记录
## APP反编译
接上节买入树莓派4B、下载恢复镜像并将其写入SD卡后将SD卡插入树莓派4B通电开机此时通过安卓APP确认已经可以扫描到ASIAIR发射的WIFI信号。输入恢复系统的默认WIFI密码连接成功但是APP提示未注册。然后反编译安卓APP搜索关键字定位到checkLicense方法阅读核心代码发现该方法创建socket连接至asi air pro然后根据其返回的json报文判断系统是否已激活。
## 获取系统root权限
通过ssh-keygen生成公钥并通过diskgenius等软件拷贝到sshkey目录然后通电开机即可ssh到asi air pro系统然后修改root密码。获取root权限后我们就可以为所欲为了。
## 安装tcpdump
由于之前已经发现是通过json报文判断是否已经激活系统因此决定通过tcpdump软件抓包然后用IDA反编译修改二进制文件达到认证成功的目的。通过`apt install tcpdump`命令安装tcpdump软件抓包发现系统默认dns配置有问题将dns配置fix后安装tcpdump并抓包(使用wireshark分析数据包)确定好认证过程然后根据相关关键字去IDA中找到对应的位置。
> tcpdump tcp port 4700 -s 0 -vvv -X
### 破解1
第一次尝试破解使用IDA直接修改判断方法将判断是否激活的逻辑改为恒为true因此可以直接返回已激活此时APP可以正常连接功能正常使用。但是这种方式有个问题一旦系统升级、二进制文件被更新激活失效需要重新分析、修改二进制文件。于是有了破解2.
### 破解2
将判断系统是否激活的代码反编译为C语言代码发现其逻辑是读取根目录下的配置文件然后其逻辑大致为func(cpu_serial_number,passwd) == license如果为true则视为已激活。但是其实这里已经将加密算法泄露只需把function使用熟悉的语言重写即可生成对应的license因此通过这种方法可以完美破解ASIAIR即便我们更换了树莓派4B主板或者升级系统也完全不会影响激活状态因为认证流程和正版ASIAIR完全一致。代码已经备份到我的私人gitlab服务器中。
## 总结
至此已经完美破解ASIAIR系统接下来就是对于其如何结合indiserver工作的进行分析以便后续可以自己开发类似系统。