我们一起来看一下这道逆向题吧!
1.检查一下是几位的程序,并查看是否有壳。
看图可以知道它是64位的程序,并没有壳,可以放心反汇编啦!
2.让我们来看一下它的伪C代码:
这题的代码也是浅显易懂呀,主要就是输入一个Flag,再将这个Flag进行处理,处理后将得到的字符串与程序中已有的字符串进行比较,一样的话就输出"you are right!"啦!这题就顺理成章的解出来了.
3.既然知道了它的逻辑,我们把它逆着推回去就好了,已知字符串--->反向处理--->我们需要的Flag,这时候就需要我们细细品味这段处理过程了,我们需要逆着理解一下
分析知:它只是简单的字符替换,我们只需要逆着替换回去就好啦!
4.exp:
`#include <stdio.h>
#include <string.h>
int main() {
char str[15] = "{34sy_r3v3rs3}";
int i = 0;
for (int i = 0; i < 14; i++) {
if (str[i] == 51) {
str[i] = 101;
}
if ( str[i] == 52 )
str[i] = 97;
}
puts(str);
return 0;
}`
5.运行程序就可以得到flag了