Skip to content

Commit

Permalink
开发 CRCSN v5.0.0 (#4)
Browse files Browse the repository at this point in the history
* feat: 修改退出函数名称

* feat: release 编译禁用断言

* feat: 将所有 'TheCursor' 替换为 'Cursor'

* feat: 修改窗口尺寸

* feat: 清理代码

* docs: 更新下载源

* feat: 清理代码

* feat: 修改调试配置

* feat: 优化启动提示

* feat: 修改函数名

* feat: 添加 Cmd

* revert: 回退窗口大小的更改

* style: 清理代码

* refactor: 清理代码

* build: 修改编译的二进制文件名称

* rm: 移除分支显示

* style: 优化代码书写

* change: 修改个别标识符

* rm: 移除 "移除"

* change: 修改命名空间

* build: 修改标签名

* chore: 修改调试的二进制文件

* feat: 添加评估副本提示

* change: 修改 head.hpp 为 ld.hpp

* docs: 修改下载链接 (暂不可用)

* docs: 修改大小写

* docs: 跟进最新开发副本

* fix: 修复标题乱码

* docs: 移除多余标点

* change: 修改 CMd 路径

* chore: 禁用调试优化

* change: 定义类 Menu 时将构造对象 UI

* build: 重构 Makefile, 添加清理功能

* change: 修改启动文件

* rm: 移除非管理员权限下的 "破解" 选项.

* docs: 跟进开发版

* change: 在 void 函数后加上 return

* docs: 更新文档

* change: 修改函数

* change: 将函数定义改为 C++ 20 引入的方式

* change: 修改版本号

* docs: 将所有软件专有名词的字体改为斜体

* rm: 移除所有返回值为 void 的函数末尾的无用 return 语句

* fix: 默认初始化 Opt

* fix: 修复数据类型不符

* change: 修改窗口不透明度

* refactor: 重构 launcher

* docs: 修改启动参数部分

* change: 修改缓存变量

* change: 添加 .gitkeep 说明

* refactor: 优化规则初始化

* change: 修改部分标识符的命名

* change: 调整变量声明未知

* change: 修改破解/恢复基本函数

* change: 修改函数

* change: 修改头文件

* change: 优化判断语句兼容性

* docs: 更新文档

* change: 修改版本号

* change: 修改变量定义位置

* fix: 修复启动错误

* change: 加一个空格

* change: 修改窗口大小

* change: 修改命令函参数错误提示

* change: 修改静态分析配置

* change: 修改调试配置

* fix: 修复部分系统不兼容的问题

* docs: 更新描述

* docs: 修复几处描述谬误

* refactor: 修改类型标识符大小写

* rm: 移除最后一行的 exit

* change: 修改变量名

* change: 修改函数传参

* docs: 添加帮助信息

* change: 默认窗口大小

* docs: 更新下载链接

* chore: 修改工作区配置

* chore: 清空提示内容

* chore: 调整顺序

* refactor: 将所有宏定义改为全大写+下划线分割的方式, 将部分不等于操作改为异或

* refactor: 修改文件名

* fix: 修改字符集和退出 cmd 后的输出没有即使清除

* change: 抛弃分支区分, 改为使用 start 命令启动, 屏蔽字符集更改输出

* change: 跳过检测 /command 参数 (launcher.cmd 需要)

* change: 重命名 logo.png, 并移至 img 下

* build: 给二进制文件添加图标

* docs: 修改下载信息

* chore: 将所有 cpp 代码文件移入 src

* build: 修改 cpp 文件路径

* refactor: 合并 Crack 和 Recovery 的 Base 函数为 OpBase 函数

* chore: 修改伪文件

* rm: 移除多余分号

* docs: 修改鸣谢

* build: 修改编译文件路径

* change: 修改启动路径

* chore: 添加 .gitkeep

* chore: 调整顺序

* chore: 修改调试配置

* rm: 移除 bin/x86_64/.gitkeep

* build: 优化创建目录

* build: 优化创建目录

* build: 优化创建目录

* build: 优化创建目录

* build: 优化创建目录

* fix: 类型不符

* change: 使用 typedef 修改部分数据类型名称

* rm: 移除退出码

* change: 修改标题

* change: 窗口控件设置变量名称

* change: 修改依赖项

* build: 合并 clean_std 与 clean_full

* chore: 添加换行

* build: 指定 favicon.ico 架构, 移除创建 .gitkeep

* change: 标题缩进

* change: 移除结构体名

* build: 添加检测 src 下所有文件

* build: 检测构建生成目录

* build: 修改变量名

* build: 修复重复构建

* fix: 标题缩进不协调

* fix: 提示文本错误

* change: 函数 OpBase 为 OpCore

* change: Exit() 函数调用改成宏定义

* change: 回退自定义类型

* rm: 不需要的宏定义

* feat: 启动提示 (在 Microsoft Defender 执行云扫描时防止用户以为软件卡死了)

* style

* fix: 类型不正确

* change: OpBase 函数模式说明字符

* docs: update

* style

* chore: 修改编译命令

* build: 添加 -C 选项

* fix: 遗漏使用宏定义

* chore: 修改调试配置

* feat: 添加宽松视图

* style

* style: 提升可读性

* fix: 错误的命令参数意外生效

* change: 命令行参数报错提示

* refactor: 标识符名

* change: 提示文本

* change: 默认改为紧凑视图

* docs: update

* refactor: 标识符名

* chore: 修改调试配置

* build: update

* revert: 命令行参数报错

* build: 修改标识符名

* style

* style

* build: clean

* refactor: 修改临时变量名

* change: 文件名

* ci: update

* revert: 等式判断

* change: 命名空间 CRCSN 改名为 Pvt (即 Private)

* refactor: 等于/不等于判断

* perf: 改 std::string 为 const char*

* change: 版本号

* style

* change: 使用自定义数据类型别名

* perf: 移除 sleepTime 变量

* change: 使用 const char* 的自定义别名 cstr

* style

* change: 变量名

* change: 禁用评估副本

* change: 临时变量的变量名

* perf: 优化无参数时的性能

* change: 选项错误存储变量名称

* docs: update

* style

* fix: 与 launcher.cmd 书写顺序不一致

* docs: update

* change: 修改参数报错

* docs: update

* docs: update

* perf: 优化头文件引用

* style

* change: 私有函数库命名空间

* docs: fix

* fix: 检测到错误命令行参数后没能及时终止

* change: 临时变量名称

* change: output

* change: 回退发行版类别

* fix

* style

* docs: update

* feat: 添加通道机制

* style

* docs: update

* fix: 再次从 conhost 启动软件并附加参数 -Wc 后, 窗口仍未锁定状态

* fix: 在线程分离前切换前端窗口导致置顶窗口发生异常

* change: 锁定窗口不再禁用最小化窗口控件

* change: 切换通道

* build

* refactor

* change: 通道名大小写

* change: 通道名

* change: 通道名

* style

* revert

* style

* refactor: 将暴露在外的函数移入类 CUI, 访问权限为 protected.

* refactor: 命名空间名

* fix: 通道错误

* docs: 完善说明

* docs: fixed

* refactor: 临时变量标识符名

* feat: 退出按钮高亮为红色

* style

* refactor: 退出按钮高亮改为使用宏定义

* change: 退出按钮默认颜色

* change: 退出按钮高亮颜色

* change: output

* change: tips

* refactor

* refactor: 移除不需要的文本运算符

* change: 分支名

* change: 浅色颜色的宏定义名改为后置 PALE

* docs: revert

* docs: fix

* build: update clean

* docs: fix

* chore: changed

* style

* change: 允许修改窗口大小的参数

* docs: update

* refactor: 部分宏定义名

* change: output

* change: 通道名大小写

* change: 头文件名

* refactor: 缓存变量名称

* build: refactor

* docs: update link

* docs: fix

* refactor: 类和结构体的构造函数使用统一初始化

* refactor: 私有模块头文件名称

* revert: 私有模块头文件名称

* refactor: 私有模块命名空间名

* change: 自定义通道显示大小写

* refactor: 参数错误标识符

* refactor

* change: 窗口透明度

* docs: update

* refactor: 将 _exit 移入私有模块内

* docs: fix

* fix: 退出后窗口缩放控件仍被禁用

* change: 通道

* build: fix
  • Loading branch information
MaxLHy0424 authored Aug 25, 2024
1 parent cd81ed1 commit e599e1d
Show file tree
Hide file tree
Showing 18 changed files with 614 additions and 363 deletions.
31 changes: 17 additions & 14 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
{
"configurations": [
"configurations":[
{
"name": "Win32",
"includePath": [
"name":"Win32",
"includePath":[
"${workspaceFolder}\\*"
],
"defines": [
"defines":[
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\Software\\MSYS2\\ucrt64\\bin\\g++.exe",
"compilerArgs": [
"compilerPath":"C:\\Software\\MSYS2\\ucrt64\\bin\\g++.exe",
"compilerArgs":[
"-fexec-charset=GBK",
"-lm",
"-Wall",
"-Wextra",
"-DNDEBUG",
"-static",
"-Ofast",
"-Os"
"-Os",
"-flto"
],
"intelliSenseMode": "windows-gcc-x64",
"cStandard": "c23",
"cppStandard": "gnu++23",
"mergeConfigurations": false,
"configurationProvider": "ms-vscode.makefile-tools"
"intelliSenseMode":"windows-gcc-x64",
"cStandard":"c23",
"cppStandard":"gnu++23",
"mergeConfigurations":false,
"configurationProvider":"ms-vscode.makefile-tools"
}
],
"version": 4
"version":4
}
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
"name":"Debug",
"type":"cppdbg",
"request":"launch",
"program":"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
"program":"${workspaceRoot}\\bin\\__debug__.exe",
"args":[],
"stopAtEntry":false,
"cwd":"${fileDirname}",
"cwd":"${workspaceRoot}",
"environment":[],
"externalConsole":true,
"internalConsoleOptions":"neverOpen",
Expand Down
12 changes: 8 additions & 4 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@
"type":"shell",
"command":"g++",
"args":[
"\"${file}\"",
"src/main.cpp",
"-C",
"-fexec-charset=GBK",
"-std=gnu++23",
"-Wall",
"-Wextra",
"-g",
"-pipe",
"-m64",
"-O0",
"-g3",
"-o",
"\"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe\"",
"bin/__debug__.exe",
],
"group":{
"kind":"build",
Expand All @@ -30,7 +34,7 @@
"label":"run",
"type":"shell",
"dependsOn":"build",
"command":"${fileDirname}\\bin\\${fileBasenameNoExtension}.exe",
"command":"${workspaceRoot}/bin/__debug__.exe",
"group":{
"kind":"test",
"isDefault":true
Expand Down
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024 MaxLHy0424
Copyright (c) 2023 MaxLHy0424

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.
23 changes: 21 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,21 @@
main:
g++ main.cpp -fexec-charset=GBK -std=gnu++23 -Wall -Wextra -static -Ofast -Os -flto -o .\bin\main.exe
msys2 = C:\\Software\\MSYS2
argv = -fexec-charset=GBK -C -std=gnu++23 -Wall -Wextra -pipe -m64 -DNDEBUG -static -Ofast -Os -flto -o
build: bin/x86_64/main-msvcrt.exe bin/x86_64/main-ucrt.exe
bin/x86_64:
$(msys2)\\usr\\bin\\mkdir.exe bin/x86_64 -p
bin: bin/x86_64
neededFile = src/main.cpp bin/favicon.o
bin/x86_64/main-msvcrt.exe: $(neededFile) src/*.hpp bin
$(msys2)\\mingw64\\bin\\g++.exe $(neededFile) $(argv) $@
bin/x86_64/main-ucrt.exe: $(neededFile) src/*.hpp bin
$(msys2)\\ucrt64\\bin\\g++.exe $(neededFile) $(argv) $@
bin/favicon.o: favicon.rc img/favicon.ico bin
$(msys2)\\usr\\bin\\windres.exe -i $< -o $@ -F pe-x86-64
clean_std:
$(msys2)\\usr\\bin\\rm.exe -rf\
bin/__debug__.exe\
bin/favicon.o
clean_full: clean_std
$(msys2)\\usr\\bin\\rm.exe -rf\
bin/x86_64
.PHONY: build clean_std clean_full
144 changes: 98 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,141 @@
![logo](logo.png)\
![logo](img/title.png)\
**Computer Room Control Software Nemesis: 轻松破解机房控制.**\
©️ 2024 MaxLHy0424, All Rights Reserved.
©️ 2023 MaxLHy0424. All Rights Reserved.

[下载最新发行版 (v4.10.7).](https://github.com/MaxLHy0424/CRCSN/releases/download/v4.10.7/CRCSN_v4-10-7_x64.7z)
# 获取

# 使用方法
**最新发行版: v5.0.0.**\
**[更新日志](https://github.com/MaxLHy0424/CRCSN/releases/tag/v5.0.0) | [直链下载](https://github.com/MaxLHy0424/CRCSN/releases/download/v5.0.0/CRCSN-v5.0.0.7z)**

**CRCSN 涉及到修改注册表等操作, 使用时建议关闭防病毒软件. 若 CRCSN 被报为恶意软件, 请添加排除项.**
或者:

> 仅为最新发行版编写, 其他版本可能有所不同.
- [GitHub Repository Release](https://github.com/MaxLHy0424/CRCSN/releases);
- [中国大陆云盘镜像站点 (不含预发行版)](https://www.123pan.com/s/UzthTd-MkTRh.html).

## 0 启动
# 使用指南

一般情况下, 运行`launcher.cmd`即可启动 CRCSN.
**由于 CRCSN 存在敏感操作, 使用时建议关闭防病毒软件. 若 CRCSN 被报为恶意软件, 请添加排除项.**

> [!NOTE]
> 适用于 v5.0.0.
## 1 启动

一般情况下, 运行 `launcher.cmd` 即可启动 CRCSN.

如果默认的启动方式不满足您的需求, 可以根据下文修改.

### 0.1 强制以管理员限运行
### 1.1 修改软件 Runtime

找到:
```Batch
: MSHTA VBScript:CreateObject("Shell.Application").ShellExecute("%~S0","GoTo:RunAs","","RunAs",1)(Window.Close) & GoTo:EOF

```dos
set runtime=msvcrt
```

将开头的`: `去掉即可. 再运行启动脚本, 将会启用该项.
软件支持的 Runtime 如下:

如需禁用, 将`: `加回去头即可.
- `msvcrt` (默认): 开发工具链为 *MSYS2* `mingw-w64-x86_64-toolchain`, Runtime 为老旧的 *Microsoft Visual C Runtime*, 支持大部分 Windows OS.
- `ucrt` (推荐): 开发工具链为 *MSYS2* `mingw-w64-ucrt-x86_64-toolchain`, Runtime 为新式的 *Universal C Runtime*, 支持 Windows 10 以上的 Windows OS (部分 Windows OS 在安装最新补丁后支持运行).

### 0.2 修改等待时间
根据上述内容, 选择需要版本的对应字符串替换即可.

### 1.2 窗口操作

> [!IMPORTANT]
> 此命令行参数区分大小写.
找到:
```Batch
TimeOut /NoBreak /T 2

```dos
set argv=
```
修改最后的数字 (单位: 秒), 禁用可改为`0`.

### 0.3 修改控制台颜色
窗口操作的主参数为 `-W`, 附加参数如下:

> 此项参数区分大小写.
- `f`: 置顶窗口并每间隔 100ms 将窗口设为焦点.
- `s`: 允许缩放和最大化窗口 (可能导致意外行为);
- `a`: 将窗口不透明度设为 80% (仅支持新版控制台);

找到倒数第二行, 在末尾加上`-color=`, 并在后面添加参数 (详见`Color`命令帮助), 例如:
```Batch
.\bin\main.exe -color=3
不可以仅使用主参数, 附加参数的顺序不影响应用效果.

使用示例:

```dos
set argv=-Wa
```

```dos
set argv=-Wfas
```

### 0.4 窗口置顶
### 1.3 疏松视图

> 此项参数区分大小写.
> [!IMPORTANT]
> 此命令行参数区分大小写.
软件默认使用紧凑视图.

找到:

找到倒数第二行. 如需启用, 请在末尾加上`-Wp`, 见下:
```Batch
.\bin\main.exe -Wp
```dos
set argv=
```

如需禁用, 将`-Wp`删去即可.
添加参数 `--sparse-view`, 变成:

## 1 破解
```dos
set argv=--sparse-view
```

输入`1`, 回车, 根据需要破解的控制软件输入对应的字符, 回车, 输入`y`(不区分大小写), 回车, 开始破解.
即可使用宽松视图.

## 2 恢复
> [!NOTE]
> 可以和[上一节](#12-窗口操作)中的参数一同使用, 两者顺序可以调换. 例如:
>
> ```dos
> set argv=--sparse-view -Wfa
> ```
输入`2`, 回车, 根据需要恢复的控制软件输入对应的字符, 回车, 输入`y`(不区分大小写), 回车, 开始恢复.
### 1.4 深度自定义
# 常见问题
启动脚本属于 Windows 命令脚本, 可以根据需要自行修改.
## 1 运行软件时控制台总是输出 "命令提示符已被管理员禁用", 无法正常使用.
## 2 功能使用及说明
可以运行注册表编辑器, 定位到`HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System`下, 看看有没有一个叫`DisableCMD`的值, 有的话就删掉, 再试试.
### 2.1 软件信息
## 2 软件无法在 32 位 Windows 系统中使用.
位于软件窗口顶部往下几行, 从上到下, 依次显示: 软件名称, 软件版本, 仓库链接, 版权信息.
由于开发中使用的一些头文件无法在 MinGW GNU GCC 下编译, 所以暂不提供 32 位发行版.
### 2.2 快捷操作
## 3 破解后一些软件运行时提示 "找不到文件" 之类的错误, 而运行的软件并没有损坏.
位于 "软件信息" 区域下方. 通过鼠标点击按钮 `> 退出` 可以直接退出软件, 点击 `> 命令提示符` 可以在当前软件窗口内打开命令提示符.
> [!TIP]
> 启动命令提示符后, 可以使用命令 `mode con cols=行数 lines=列数` 调整窗口大小. 退出后将会重置.
在不影响软件正常运行的情况下, 可以给软件文件修改一个名称, 再试试. 或者打开注册表编辑器, 定位到`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\`, 找到和要运行的软件的文件名称相同的项, 删除即可.
### 2.3 破解 & 恢复
# 贡献代码
位于 "快捷操作" 区域下方. 如果 `[ 破 解 ]` 和 `[ 恢 复 ]` 下输出的文本为 `(i) 需要管理员权限.`, 请以管理员权限重新启动软件.
确认以管理员权限启动后, 使用鼠标在 `[ 破 解 ]` 下点击需要破解的控制软件, 以禁用破解. 如需恢复, 可以在 `[ 恢 复 ]` 下点击需要恢复的控制软件, 即可恢复控制.
# 常见问题
## 1 软件无法非 x86_64 架构的 Windows OS 中使用.
受限于开发工具链, 构建出的二进制文件架构仅支持 x86_64 架构.
## 2 运行软件时控制台总是输出 "命令提示符已被管理员禁用", 无法正常使用.
可以运行注册表编辑器, 定位到 `HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System` 下, 看看有没有一个叫 `DisableCMD` 的值, 有的话就删掉, 再试试.
## 3 破解后一些软件运行时提示 "找不到文件" 之类的错误, 而运行的软件并没有损坏.
**欢迎各位贡献代码!** 所有贡献者将会在下方列出, 以示感谢. 但务必遵守以下规则:
- 提交代码请创建拉取请求, 不要直接提交;
- 修改`README.md`时, 注意语句通顺, 不要有错误内容;
- 提交的代码的风格请与项目保持统一, 尽可能提升运行效率, 同时可通过最新 MinGW-w64 GNU GCC (MSYS2: mingw-w64-ucrt-x86_64-toolchain) 编译, 并且不附带警告.
在不影响软件正常运行的情况下, 可以给软件文件修改一个名称, 再试试. 或者打开注册表编辑器, 定位到 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\`, 找到和要运行的软件的文件名称相同的项, 删除即可.
## 贡献者
# 鸣谢
- [MaxLHy0424 (Mingxu Ye)](https://github.com/MaxLHy0424)
- Bilibili 用户 [lateworker_晚工](https://space.bilibili.com/39337803) 提供界面代码 (详见[此处](https://www.bilibili.com/video/BV1X14y1n7S4/), 软件有修改之处);
- Bilibili 用户 [痕继痕迹](https://space.bilibili.com/39337803) 指导软件界面设计;
- GitHub 用户 [Zhu-Xinrong (Kendall)](https://github.com/Zhu-Xinrong) 指导软件图标设计.
1 change: 0 additions & 1 deletion bin/.gitkeep
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
# 编译后的二进制文件在这里
30 changes: 0 additions & 30 deletions extern.hpp

This file was deleted.

1 change: 1 addition & 0 deletions favicon.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0 ICON "img/favicon.ico"
Binary file added img/favicon.ico
Binary file not shown.
Binary file added img/title.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit e599e1d

Please sign in to comment.