int __fastcall main(int argc, const char **argv, const char **envp)
{
_BYTE inputbyte[23]; // [rsp+0h] [rbp-50h] BYREF
char v5; // [rsp+17h] [rbp-39h]
int v6; // [rsp+2Ch] [rbp-24h]
FILE *output; // [rsp+30h] [rbp-20h]
FILE *input; // [rsp+38h] [rbp-18h]
int j; // [rsp+44h] [rbp-Ch]
int i; // [rsp+48h] [rbp-8h]
char v11; // [rsp+4Fh] [rbp-1h]
input = fopen("flag.txt", "r");
output = fopen("rev_this", "a");
if ( !input )
puts("No flag found, please make sure this is run on the server");
if ( !output )
puts("please run this on the server");
v6 = fread(inputbyte, 0x18u, 1u, input);
if ( v6 <= 0 )
exit(0);
for ( i = 0; i <= 7; ++i )
{
v11 = inputbyte[i];
fputc(v11, output);
}
for ( j = 8; j <= 22; ++j )
{
v11 = inputbyte[j];
if ( (j & 1) != 0 )
v11 -= 2;
else
v11 += 5;
fputc(v11, output);
}
v11 = v5;
fputc(v5, output);
fclose(output);
return fclose(input);
}
1~8글자까지는 inputbyte 그대로
9~23글자까지는
j가 짝수일 때 v11+=5
j가 홀수일 때 v11-=2
이걸 리버싱하는 코드를 짜면 되겠군

일단 rev_this 하면 위와 같다.
revthis="picoCTF{w1{1wq85jc=2i0<}"
flag=""
for i in range(0,8):
flag+=revthis[i]
for i in range(8, 23):
char = revthis[i]
if(i % 2 != 0):
flag = flag + chr(ord(char) + 2)
else:
flag = flag + chr(ord(char) - 5)
print(flag)
print(flag)
닫는 괄호 추가해서 solve