
문제가 요구하는건 rev-basic-2랑 비슷한거 같다.
일단 이번엔 ida를 이용을 해서 풀어볼려고 한다.

ida는 파일 자체에 디컴파일 기능이 있다

Input 문자열을 출력하고 > 사용자로부터 입력을 받아서 v4에 저장
입력값을 함수에 넣고 맞고 틀린지 결과가 나온다.
일단 sub_7FF77D761000 주소로 들어가보자

주소를 따라 가보니 7FF77D763000이라는 배열이 존재하고 이 부분을 HexView로 확인해보면 문자열값이 나온다.

디컴파일한 검증 함수를 보면
int i;
for (i = 0; i < 24; ++i) {
if ( byte_140003000[i] != (i ^ input[i]) + 2 * i )
return 0;
}
return 1;
입력값은 24바이트여야 함.
각 문자는 아래 수식을 만족해야 함:
byte_140003000[i] == (입력[i] ^ i) + 2 * i
→ 이걸 역으로 풀면:
입력[i] = (byte_140003000[i] - 2 * i) ^ i
그래서 이걸 푸는 계산을 파이썬으로 하면

이렇게 flag가 출력된다.