一道很简单的逆向题,拿到程序以后,打开flag.enc文件:
感觉是个加密后的文件,然后把exe文件拖进IDA分析,F5拿到伪代码:
注意观察24行开始的代码,可以知道这里是读入文件中的每一个字符,然后根据ASCII码的大小来进行加密,直接根据加密规则编写解密程序:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[] = "jeihjiiklwjnk{ljj{kflghhj{ilk{k{kij{ihlgkfkhkwhhjgly";
int main() {
int len = strlen(s);
for(int i = 0; i < len; i++) {
//printf("%c ", s[i]);
if(s[i] >= 101 && s[i] <= 149) {
printf("%c", s[i] - 53);
}
if(s[i] <= 56 && s[i] >= 0) {
for(int j = 0; j < s[i]; j++) {
if(j + j % 11 == s[i]) {
printf("%c", j);
}
}
}
}
return 0;
}