2023年解题领红包之二

查看 80|回复 9
作者:nanaqilin   
首先说明一下,本人逆向方面菜的不行,写的不明白的地方,多多包含吧,第一次写也没有啥经验,希望管理多多指点本来想直接用OD来找到结果的,结果发现字符是一个一个进行计算出来再比较的,并且程序自己还没有保存计算好的字符串
* 思路一,改程序,让程序算好的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 上传

下载次数, 下载附件

nanaqilin
OP
  


漁滒 发表于 2024-2-17 11:20
现在就能发了吗?不是元宵之后才可以发吗?

我这是去年的,不是今年的,今年的比这个要简单
nanaqilin
OP
  

最后多出来一张图片,不知道咋回事,重新编缉也看不到最后的那张图片
sadffg   

这么难,我放弃还是非常明智的
漁滒   

现在就能发了吗?不是元宵之后才可以发吗?
nanaqilin
OP
  


sadffg 发表于 2024-2-17 11:19
这么难,我放弃还是非常明智的

今年的初级题还是挺简单的,你可以试一下
nanaqilin
OP
  


nanaqilin 发表于 2024-2-17 11:16
最后多出来一张图片,不知道咋回事,重新编缉也看不到最后的那张图片

图片附件里可以删掉
tezb666   


正己 发表于 2024-2-17 11:38
图片附件里可以删掉

OK啦,谢谢版主
YuYu798   

实惠啊,感谢分享!很有用
nanaqilin
OP
  

第一眼看到以为给今年的发出来了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部