| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제 답
- codeengn basic 19
- break
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제
- java
- OEP
- 반복문
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제 답
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제풀이
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제풀이
- 리버싱
- codeengn basic 18
- codeengn basic 16
- codeengn 13
- codeengn basic 17
- CodeEngn
- 조건문
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제
- upx 언패킹 명령어
- codeengn advanced 3
- 프로그래밍 언어
- codeengn basic 15
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제 답
- StolenByte
- covetknowledge
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제풀이
- codeengn basic 20
- codeengn basic 14
- Reversing
- codeengn advanced 1
- Today
- Total
One's Knowledge
CodeEngn basic 20번 문제 풀이 본문
CodeEngn basic 20번
이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다)

패킹되어있지는 않다.

뭐 아무것도 없다.
문제를 보면 프로그램이 key파일을 읽어서 값이 맞으면 출력이 되는 것으로 예상된다.

코드를 보니 각종 api를 쓰는 것을 볼 수 있다.
한번 전체적인 구성도를 만들어 보았다.

요약하면 CRACKME3.KEY라는 파일을 찾고 그 파일의 바이트가 0x12인지 확인 후
각종 연산을 통해 DS:[4020F9]과 비교하여 값이 맞으면 성공화면이 나온다.
여기서 이제 buffer의 값이 어떻게 연산되었고, [4020F9]의 값이 무엇인지 알면 해결된다.

연산은 bl의 값이 0x41을 기준으로 buffer의 첫번째랑 하나씩 xor연산하는것을 볼수 있다.
연산하고 나서는 bl값도 1올려준다.
파이썬코드로 보면 다음과 같다.


나온값이 buffer랑 같은지 보자

똑같다.
이제 CodeEngn이라는 값이 저 결과값으로 나와야한다. CodeEngn!이 아니고 CodeEngn인 이유는 나중에 !는 알아서 붙는다.

여기서 추가된다. 그렇기에 CodeEngn이 나오면 된다.


찾았다.
이 값이 맞는지 다시 확인해보자.


test에 18자리를 넣은이유는 key파일이 18자리여야해서 넣었고,
CodeEngn하고 더 연산하지 않고 반복문을 빠져나와야해서 0x49를 result[8]에 넣었다.
bl이 1씩 증가하기에 result[8]에서 빠져나오려면 0x49를 넣어야한다. 그래야 al이 0이되고 빠져나올수 있다.
CodeEngn이 잘 나오기에 저렇게 key파일을 바꿔주면 된다.
참고로 DS_4020F9는 나중에 buffer 마지막 4자리랑 비교한다.

나머지는 00을 넣고 key파일의 마지막 4자리는 일단 아무거나 넣고 CodeEngn연산이 끝나고
DS:[4020F9]의 값을 확인하면 되겠다.

DS:[4020F9] 값은 7B 55 34 12이다. 저걸 key파일 마지막에 다시 넣자

자 이제 실행해보자.

성공!
답은 : 022D2721002820264900000000007B553412 이다.
'리버싱 > CodeEngn 문제풀이' 카테고리의 다른 글
| CodeEngn advanced 3번 문제 풀이 (0) | 2025.07.03 |
|---|---|
| CodeEngn advanced 1번 문제 풀이 (1) | 2025.07.02 |
| CodeEngn basic 19번 문제 풀이 (0) | 2025.06.23 |
| CodeEngn basic 18번 문제 풀이 (1) | 2025.06.20 |
| CodeEngn basic 17번 문제 풀이 (1) | 2025.06.13 |