rev-basic-3 풀이
2021. 10. 28. 16:26ㆍDreamhack Wargame
728x90
sub_1400011B0(), sub_140001210() 함수들은 별로 중요하지 않은 함수이기 때문에 분석은 넘어가겠습니다.
sub_140001000() 함수를 보면 for문을 24번 돌려서 xor 연산을 하고 있는 걸 알 수 있습니다.
byte_140003000에 뭐가 있는지 확인해보겠습니다.
16진수들이 쭉 나열되어있습니다.
저 수들을 연산하는 것 같은데, sub_140001000() 함수의 return값이 1일 때 Correct가 되므로 if문에 나온 조건식을 역연산하여 코드를 짜고 돌리면 FLAG가 나올 것 같습니다.
코드는 C++로 작성해보겠습니다.
#include<cstdio>
#include<iostream>
using namespace std;
char arr[24]={0x49,0x60,0x67,0x74,0x63,0x67,0x42,0x66,0x80,0x78,0x69,0x69,0x7B,0x99,0x6D,0x88,0x68,0x94,0x9F,0x8D,0x4D,0xA5,0x9D,0x45};
char flag[24];
int main(){
for(int i=0;i<24;i++){
flag[i]=i^(arr[i]-2*i);
}
for(int i=0;i<24;i++){
cout<<flag[i];
}
}
728x90
'Dreamhack Wargame' 카테고리의 다른 글
rev-basic-5 풀이 (0) | 2021.11.03 |
---|---|
rev-basic-4 풀이 (0) | 2021.10.29 |
rev-basic-2 풀이 (0) | 2021.10.28 |
devtools-sources 풀이 (0) | 2021.09.05 |
php-1 풀이 (0) | 2021.09.05 |