docs: create private/asiaircrack/crack

This commit is contained in:
Administrator 2021-09-07 00:58:04 +08:00 committed by GRabbit
parent e77a673b9c
commit ed48f11a15

View File

@ -0,0 +1,24 @@
---
title: 逆向过程
description:
published: true
date: 2021-09-06T16:58:02.272Z
tags: crack
editor: markdown
dateCreated: 2021-09-06T16:58:02.272Z
---
# 逆向过程记录
## 通电开机
接上节买入树莓派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工作的进行分析以便后续可以自己开发类似系统。