* 思路一,改程序,让程序算好的code保存到内存里(这方面不是我太菜,感觉比较费时间,所以本人并没有这么实现
* 思路二,读代码,编写一段代码,将加密的字符串还原(这方面我感觉适合我)
二话不多说,上反编译的图
IDA.png (87.12 KB, 下载次数: 0)
下载附件
2024-2-17 10:54 上传
首先程序第一个关键信息是判长度必需是39,第二个关键信息是取表dword_43F000中的数据,进行右移两位,然后与我们的code进行比较
那我们来跟一下table中的字符,双击dword_43F000,下图即为表中的原始数据
43f000.png (51.91 KB, 下载次数: 0)
下载附件
2024-2-17 10:59 上传
由于是4字节的数据,我们需要整理一下,看着就比较清晰了,dword_43f000右键点array
array.png (35.08 KB, 下载次数: 0)
下载附件
2024-2-17 11:02 上传
默认即可,点OK,就是我们要的数据了
Array4byte.png (25.22 KB, 下载次数: 0)
下载附件
2024-2-17 11:04 上传
我们把表中的数据copy出来,自己写个代码将数据都右移两位,就是我们要的code了
我的代码如下:
···cpp
include
include
include
include
int main(int argc, char *argv[]) {
std::ifstream fread;
fread.open("code.txt", std::ios::in);
if (fread.is_open()) {
char rdata[512];
while (fread.getline(rdata, sizeof(rdata))) {
std::string data(rdata);
int val = std::stoi(data, nullptr, 16);
val >>= 2;
printf("%c", val);
}
std::cout
以下是我的运行结果,bingo
bingo.png (70.45 KB, 下载次数: 0)
下载附件
2024-2-17 11:12 上传