# 🐉 HackerSim v3.0 —— 安装与说明

## 📦 文件清单

| 文件 | 说明 |
|------|------|
| `黑客模拟.apk` | **已用 `hacker_hamster` 签名**的 Release 包，可直接安装 |
| `黑客模拟-完整源码.zip` | 完整工程，Android Studio 可直接打开编译 |

---

## 🔏 签名信息（已按要求改为 hacker_hamster）

| 项目 | 值 |
|------|-----|
| **签名 DN** | `CN=hacker_hamster, OU=Game, O=hacker_hamster, L=Beijing, ST=Beijing, C=CN` |
| 密钥库文件 | `hacker_hamster.jks`（在源码 zip 根目录） |
| 密钥库密码 | `hacker_hamster` |
| 密钥别名 | `hacker_hamster` |
| 密钥密码 | `hacker_hamster` |
| 密钥算法 | RSA 2048 |
| 有效期 | 10000 天 |
| **证书 SHA-256 指纹** | `0bbc9a0dfe63c9480bf8ac5d2471d6864903969737721aea5e1f249b2d15f77b` |
| **证书 SHA-1 指纹** | 见下方"查看命令"自行获取 |

自己查看证书指纹：
```bash
keytool -list -v -keystore hacker_hamster.jks -storepass hacker_hamster | grep SHA
```

> ⚠️ **重要**：以后更新这个 App **必须用同一个 `hacker_hamster.jks` 签名**，否则无法覆盖安装。
> 如果你手机上已装过之前用旧密钥（`hackersim-release.jks`）签名的版本，**需要先卸载旧版**才能装这个。

---

## 📲 安装方法

### 手机直接装
1. 把 `黑客模拟.apk` 传到手机
2. 点击安装，提示"未知来源"时选**允许**
3. 桌面出现「**黑客模拟器**」图标

### ADB
```bash
adb install 黑客模拟.apk
```

---

## 📋 应用信息

| 项目 | 值 |
|------|-----|
| 应用显示名 | 黑客模拟器 |
| 包名 | `com.example.hackersim` |
| versionCode / versionName | 1 / 3.0 |
| minSdk / targetSdk | 21（Android 5.0+） / 34 |
| 体积 | 2.8 MB |
| 权限 | 悬浮窗、前台服务、通知 —— **无 INTERNET 权限，完全离线** |

---

## 🎮 玩法速查

### 万能密码（最快通关）
主终端输入：
```
1' OR '1'='1
```
触发 SQL 注入模拟动画 → 直接通关 → 解锁全部 5 关。

### 进入关卡
通关后**双击**底部按钮 → 弹出关卡菜单。

| 关卡 | 玩法 | 通关答案 |
|-----|------|---------|
| **LEVEL 1** | 终端登录 | `1' OR '1'='1` |
| **LEVEL 2** | 解密文件 | 凯撒偏移 7：`SljrBkyxunv` → `LuckyDragon` |
| **LEVEL 3** | 端口扫描 | 端口 `7749`，认证码 `DRGN-7749` |
| **LEVEL 4** | 日志分析 | `7H3_DR4G0N_5L33P5` |
| **LEVEL 5** | ROOT 提权 | `DRGN-7749-S3CR3T-7-7H3_DR4G0N_5L33P5` |

### 密码生成器（正常模式）
**长按**底部按钮打开。
算法：`SHA-256(日期 yyyyMMdd + "DRAGON_2026_X7K9")` → 18 位，同一天密码固定不变。

---

## 🛠 源码说明

### 编译环境（沙箱已验证通过）
- JDK 17 / Gradle 8.2 / AGP 8.2.0
- compileSdk 34、targetSdk 34、minSdk 21
- 构建命令：`./gradlew assembleRelease`

### 原项目修复清单（共 8 处，否则无法编译）

| # | 问题 | 修复 |
|---|------|------|
| 1 | **`SoundUtil.java` 编译失败** | 原代码用了 `android.media.AudioSystem`（系统隐藏 API，公开 SDK 不存在）。已改为 `AudioManager.playSoundEffect(FX_KEY_CLICK)` + 震动反馈 |
| 2 | 缺应用图标 | 生成了 5 档密度的 `>_` 终端主题图标 |
| 3 | `local.properties` 无效路径 | 原为 `/fake/path/to/sdk` |
| 4 | 无 Release 签名配置 | 已加入 `signingConfigs.release` |
| 5 | 缺 Gradle Wrapper | 已生成 `gradlew` |
| 6 | 缺 Android 13+ 通知权限 | 补 `POST_NOTIFICATIONS` |
| 7 | 构建脚本兼容性 | 关闭资源收缩 / 非传递 R 类 |
| 8 | 依赖下载慢 | 配置阿里云、腾讯云 Maven 镜像 |

此外还修复了一个**损坏的全局 `~/.gradle/init.gradle`**（URL 缺引号 + `mavelCentral` 拼写错误），它会导致所有 Gradle 构建直接启动失败。

### 安全核对
- ✅ **无 `INTERNET` 权限** —— 确认完全离线
- ✅ 无真实渗透/越权/窃取，全部为本地模拟动画
- ✅ 签名校验通过（v1 + v2 方案）

---

## ⚠️ 已知小问题

`FloatingPetService`（桌面宠物）声明为前台服务，但代码未创建对应通知。
Android 12+ 直接启动会抛 `ForegroundServiceDidNotStartInTimeException` 崩溃。
**不影响 5 个关卡和密码生成器。**

修复方法 —— 在 `windowManager.addView(...)` 之前加：
```java
Notification n = new Notification.Builder(this, "pet")
        .setContentTitle("HackerSim").setContentText("桌面宠物运行中")
        .setSmallIcon(android.R.drawable.ic_menu_info_details).build();
startForeground(1001, n);
```

---

## 📄 License
MIT —— 随便玩，别干坏事。
