[Dreamhack]rev-basic-1 write-up

최윤지·2024년 11월 4일

Reverse Engineering

목록 보기
6/7

rev-basic-1

문제 파일 다운로드 후 실행

IDA 실행


사용자의 입력에 따라 'Wrong' 또는 'Correct'가 출력된다고 유추

문자열 조회


'Input : '과 'Wrong' 그리고 'Correct' 문자열 확인


'Correct' 문자열이 사용되는 함수 확인 => main

함수 분석

main

main 함수 디컴파일

sub_1400013E0 함수를 호출하여 'Input : '을 출력
-> sub_140001440 함수를 호출하여 사용자에게 입력 받은 값을 v4에 저장
-> sub_140001000 함수를 호출하여 반환값에 따라 'Correct' 또는 'Wrong' 출력

sub_1400013E0



sub_1400013E0 함수에서 호출한 sub_1400012B0 함수를 살펴보면 vfprintf 함수를 호출
=> printf 함수로 추측 => 함수 이름 printf로 변경

sub_140001440



sub_140001440 함수에서 호출한 sub_140001300 함수를 살펴보면 vfscanf 함수를 호출
=> scanf 함수로 추측 => 함수 이름 scanf로 변경

sub_140001000


1Byte 단위로 값 비교
값이 주어진 숫자와 다르면 0을 반환
값이 주어진 숫자와 같고 마지막에 a1[21]의 값이 0이면 1을 반환
주어진 숫자를 아스키코드로 변환하면 'Compar3_the_ch4ract3r'
=> 입력된 값이 'Compar3_the_ch4ract3r'과 같으면 1을 반환

확인

0개의 댓글