Dreamhack

리버싱 07 - rev-basic-1

kchabin 2022. 7. 12. 18:06

IDA에서 찾아준 main 함수

IDA에서는 비주얼 스튜디오로 프로그램이 컴파일 되었을 때 어떻게 진입점에서 main 함수를 호출하는지 알고 있기 때문에 바로 main 함수를 찾을 수 있음.

main 함수 디컴파일

_arct_iob_func() 함수를 이용해서 stdout 파일 스트림을 가져와 sub_1400012B0 함수를 전달함. 

vfprintf 함수의 파일 스트림이 stdout이기 때문에 sub_1400013E0 함수가 printf 함수임을 알 수 있음. 단축키 n으로 함수 이름을 printf로 바꿈.

분석한 함수가 어떤 함수인지 알아냈으면 이름을 바꾸는 게 코드 분석하기 간편함. 

sub_140001440 함수가 scanf 함수임을 알 수 있음. 

sub_140001300 함수 내부를 보면 _stdio_common_vfscanf 함수가 보이기 때문임. main으로 돌아가서 sub_140001440 함수 이름을 scanf로 바꿔줌.

a1은 우리가 입력한 문자열임. 문자열의 각 인덱스를 비교해서 정해진 숫자와 다르다면 0을 리턴하고 마지막 조건인 입력값의 21번째 인덱스가 0이라면 1을 리턴함.

단축키 r을 누르면 숫자가 문자로 변환됨.

 숫자를 전부 문자로 바꾸면 Compar3_the_ch4ract3r 가 나옴.

입력해서 correct가 나오는 것 확인. 해당 문제의 플래그가 Compar3_the_ch4ract3r 라는 것을 알 수 있음.

'Dreamhack' 카테고리의 다른 글

리버싱 09 - 혼자 실습  (0) 2022.07.12
리버싱 08 - Patch  (0) 2022.07.12
리버싱 06 - rev-basic-0  (0) 2022.07.12
리버싱 05 - x86 Assembly  (0) 2022.07.12
리버싱 04 - Windows Memory Layout  (0) 2022.07.10