简单注册器
还是想查壳 发现这是apx文件 放入JEB里进行反编译
在JEB里使用快捷键Tab 可以反编译 转化成java语言 我们在搜索一下字符串flag 得到了下面这一串字符串 这里他对这串字符串进行了一系列的加密算法
img src="C:\Users\22069\Pictures\Screenshots\屏幕截图 2024-12-01 105358.png" alt="屏幕截图 2024-12-01 105358" style="zoom:50%;" />
我们可以写一个python和C语言的解密脚本
def decrypt():
# 初始化字符数组
arr_c = list("dd2940c04462b4dd7c450528835cca15")
# 步骤 1: 修改索引 2 的值
arr_c[2] = chr(ord(arr_c[2]) + ord(arr_c[3]) - 50)
# 步骤 2: 修改索引 4 的值
arr_c[4] = chr(ord(arr_c[2]) + ord(arr_c[5]) - 0x30)
# 步骤 3: 修改索引 30 的值
arr_c[30] = chr(ord(arr_c[31]) + ord(arr_c[9]) - 0x30)
# 步骤 4: 修改索引 14 的值
arr_c[14] = chr(ord(arr_c[27]) + ord(arr_c[28]) - 97)
# 步骤 5: 镜像翻转数组前16位和后16位
for i in range(16):
arr_c[31 - i], arr_c[i] = arr_c[i], arr_c[31 - i]
# 输出结果
return "flag{" + "".join(arr_c) + "}"
# 解密并输出结果
print(decrypt())
#include <stdio.h>
#include <string.h>
void decrypt() {
// 初始化字符数组
char arr_c[] = "dd2940c04462b4dd7c450528835cca15";
int len = strlen(arr_c);
// 步骤 1: 修改索引 2 的值
arr_c[2] = (char)(arr_c[2] + arr_c[3] - 50);
// 步骤 2: 修改索引 4 的值
arr_c[4] = (char)(arr_c[2] + arr_c[5] - 0x30);
// 步骤 3: 修改索引 30 的值
arr_c[30] = (char)(arr_c[31] + arr_c[9] - 0x30);
// 步骤 4: 修改索引 14 的值
arr_c[14] = (char)(arr_c[27] + arr_c[28] - 97);
// 步骤 5: 镜像翻转数组前16位和后16位
for (int i = 0; i < 16; ++i) {
char temp = arr_c[31 - i];
arr_c[31 - i] = arr_c[i];
arr_c[i] = temp;
}
// 输出结果
printf("flag{%s}\n", arr_c);
}
int main() {
decrypt();
return 0;
}
然后就得到了flag{59acc538825054c7de4b26440c0999dd}