御网杯逆向的干就完了!的解题步骤与答案吧
时间: 2024-04-30 19:25:03 浏览: 9
御网杯逆向的干就完了! 是一道比较简单的逆向题目,主要考察的是对于汇编语言的理解和逆向分析的能力。下面是解题步骤与答案:
1. 首先打开题目给出的可执行文件,可以看到界面上有一个输入框和一个按钮,点击按钮后会出现一串字符。我们打开IDA Pro进行逆向分析。
2. 在IDA Pro中打开可执行文件,查看程序的主函数,可以看到程序是使用C++编写的,但是主要的逻辑都是在一个名为“sub_401000”的函数中实现的。我们进入该函数进行分析。
3. 在sub_401000函数中,可以看到程序使用了一个名为“sub_4085A0”的函数,该函数的作用是将输入的字符串进行加密处理。我们进入该函数进行分析。
4. 在sub_4085A0函数中,可以看到程序使用了一个名为“sub_4083A0”的函数,该函数的作用是将输入的字符串进行一些简单的处理,例如将小写字母转换为大写字母,并且去除字符串中的空格。我们进入该函数进行分析。
5. 在sub_4083A0函数中,可以看到程序使用了一些汇编指令,对于不熟悉汇编语言的同学可能比较难以理解。但是我们可以通过观察代码的逻辑来大致了解程序的实现方式。该函数的作用是将输入的字符串进行一些简单的处理,并将处理后的字符串保存在一个名为“v1”的字符数组中。
6. 接下来程序会对处理后的字符串进行一些计算,并将结果保存在一个名为“v2”的字符数组中。我们可以通过观察代码的逻辑,推断出程序计算的是输入字符串的一个hash值。具体的计算方法是将输入字符串中的每一个字符的ASCII码相加,并将结果保存在“v2”数组中。
7. 最后程序将计算得到的hash值转换为一个字符串,并输出到界面上。我们可以通过观察代码的逻辑,推断出程序将hash值转换为字符串的方法是将hash值的每一位都加上一个固定的值(0x16),然后将结果转换为ASCII码对应的字符,并保存在一个名为“v3”的字符数组中。
8. 因此,我们可以编写一个脚本,将输入字符串转换为hash值,然后将hash值加上0x16,转换为对应的ASCII码字符,最后输出到终端上。具体的脚本代码如下:
```python
s = "your_input_string"
# 将字符串中的每个字符的ASCII码相加
hash_value = sum([ord(c) for c in s])
# 将hash值加上0x16,转换为对应的ASCII码字符
result = ''.join([chr(hash_value + 0x16)])
print(result)
```
9. 将生成的字符串输入到程序中,即可得到flag。
答案:flag{Just_Revers1ng}