rev-basic-4 풀이

2021. 10. 29. 23:15Dreamhack Wargame

728x90

문제 제목
문제 정보
main()
sub_140001000()
byte_140003000

sub_140001000() 함수의 return값에 따라서 Correct, Wrong가 결정되므로 함수 안에 들어있는 for문을 분석하겠습니다.

그리고 for문을 돌리는 횟수가 0x1C(10진수로 28)인데, byte_140003000에 들어있는 16진수가 기준인 듯합니다.

 

if문에 들어있는 수식에 해당되지 않는다면 Correct가 나오게 됩니다.

 

[if문에 들어있는 수식]

(arr[i]<<4)&0xf0 | arr[i]>>4

 

이제 이 수식을 기반으로 C++ 코드를 짜 보겠습니다.

별다른 역연산은 필요하지 않을 듯합니다.

 

#include<cstdio>
#include<iostream>
using namespace std;

unsigned char arr[28]={0x24,0x27,0x13,0xC6,0xC6,0x13,0x16,0xE6,0x47,0xF5,0x26,0x96,0x47,0xF5,0x46,0x27,0x13,0x26,0x26,0xC6,0x56,0xF5,0xC3,0xC3,0xF5,0xE3,0xE3,0x00};

int main(){
	for(int i=0;i<28;i++){
		printf("%c",((arr[i]<<4)&0xf0 | arr[i]>>4));
	}
}

FLAG 획득 완료
문제 풀이 성공

728x90

'Dreamhack Wargame' 카테고리의 다른 글

rev-basic-6 풀이  (0) 2021.11.03
rev-basic-5 풀이  (0) 2021.11.03
rev-basic-3 풀이  (0) 2021.10.28
rev-basic-2 풀이  (0) 2021.10.28
devtools-sources 풀이  (0) 2021.09.05