# 너무 쉬운문제는 풀기만하고 기억에 남는 문제만 작성합니다.
문제: Password는 무엇인가
1. 파일 실행시 Username, Password를 입력해야 하며 틀리면 에러 문구가 나온다.

2. Tracing을 하다보면 Username을 비교하는 로직이 나온다. ecx 포인터 값과 0x6E(n) 을 1byte 비교한다.
하지만 이상한 부분이 ecx값 안에는 0x00(null)값이다.

3. 다음 분기로 진행하기 위해 ecx 값과 같은 0x00으로 변경 해준다.

4. sete bl 어셈블리는 ZF 1 이면 bl 값을 1로 변경해준다. 차후 분기문에서 영향을 준다. cmp 어셈블리 명령에서 Password 부분을 매칭을 하게 되는데 기존 dump에 저장되어 있는 0x88228F(8921743) 값과 비교한다.

5. 입력했던 값은 decimal 123이며 hex로는 7B가 된다.

6. 마지막 Username에 대한 매칭을 한번 더 이루어진다. 글쓴이는 name으로 입력을 했는데 DonaldDuck과 비교한다.

7. 정상적으로 로직을 통과하게 되면 이전에 sete bl으로 설정했두었던 bl 값을 test연산을 통해 분기를 나눈다.
최종적으로 Username에서 맨 앞 1byte는 null 이여야 하며 Username은 DonaldDuck이고 Password는 8921743이다.


'Crack' 카테고리의 다른 글
로스트아크 오토핫키 프로그램 crack (3) | 2021.07.20 |
---|---|
CodeEngn Advance RCE L08 (0) | 2021.04.09 |
CodeEngn Advance RCE L02 (0) | 2021.04.05 |