Search

if_hard.exe 분석

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

if_hard.exe 분석

전체 직역

어셈블리어 해석

1.
scanf()로 입력을 받은 후 EBP-8에 저장
2.
if 문으로 비교하며 false 일 경우 else if 문으로 조건식 재진행
3.
250과 비교하는 부분에서 250보다 크고 711보다 큰 2가지 조건이 모두 참일때 printf()가 출력이 되며 각 조건별로 점프하는 구간이 다르기 때문에 else if 문 안에 if 문을 삽입하여 구현
4.
573 보다 크고 575보다 작을 때 “oh how can find”를 얻을 수 있지만 574라는 숫자는 제시되어 있지 않으므로 else 문으로 구현
5.
250 조건문에서 false 일때 점프되어 별도 조건이 없으므로 else 문으로 구현

실행 확인

C언어 코드 구현

#include <stdio.h> int main(void) { printf("숫자를 입력하시오(1~1000) : "); int num; scanf("%d", &num); if (num < 10) { printf("Not here~"); } else if (num > 912) { printf("no no"); } else if (num == 200) { printf("try again"); } else if (num > 250) { if (num > 750) { printf("nop!"); } else if (num < 573) { printf("you missed it"); } else if (num > 575) { printf("almost there"); } else { printf("oh how can find?"); } } else { printf("more harder"); } return 0; }
C
복사