Search

Time attack.exe 분석

카테고리
[실습] 리버스 엔지니어링
상태
완료
게시일
2024/04/19
태그
리버싱

Time attack.exe Printing flag 획득

프로그램 구성

WINMM.timeSetEvent 를 사용하여 타이머 설정

입력되는 파라미더 = (1388, 0, 00E11000, 0, 0, ECX(0))
각 파라미터 별 의미
1388 = 다음 이벤트가 발생하기까지의 시간 (밀리초)
0 = 해상도(정확도)
00E11000 = 콜백함수 (타이머 이벤트 발생 시 호출, 여기서는 타임아웃이 출력됨)
0 = 콜백함수에 전달될 사용자 지정 데이터 (콜백함수에 추가정보 전달)
0 = 이벤트 타입, (0이면 한번만, 1이면 반복)

해당 함수 해석

5초 마다 00E11000 호출해라 (반복은 없으니 1번만 호출됨)
1.
CALL 00E11170 Time attack 1 이랑 “====” 출력해주는 함수
2.
CALL 00E11140
여기서 표시한 부분의 함수를 벗어나지 못해서 Done Creating key로 넘어가지 못함
내부로 들어오면 해당 루프를 탈출하지 못한다
EBP - 4 의 값과 DEADBEEF 가 일치하지 않아서 탈출을 못한다
루프를 돌리면 EBP - 4의 값이 1씩 증가하지만 5초안에 일치되기엔 값의 차이가 너무 크다
루프를 탈출하기 위해 CMP EAX, EAX 진행 EAX 안의 값이 뭐든 탈출은 가능하니 넣어본다
해당 루프를 탈출하면서 플래그 획득,,

flag 확인

flag : KISEC{Y0u_arE_s0_Fast}