Step 1. CrackMe 10.exe를 실행하였습니다
.Step 2. 테스트 값으로 "11111111111111111111111" 값을 입력 후 Check하였습니다.
Step 3. 키 값이 다를 시 오류 메시지를 확인하였습니다.
Step 4. 오류 메시지 내의 "Wrong C0d3 !!!" 문자열을 검색하였습니다.
Step 5. 그래프의 맨 위쪽에 브레이크포인트를 걸고 실행 시 브레이크포인트에 안걸리고 CrackMe 10.exe가 종료되는 것을 확인하였습니다.
Step 6. 원인을 파악하기 위해 최초 시작 함수의 맨 위쪽 부분에 브레이크포인트를 걸고 실행하였습니다.
Step 7. 실행 후 분기 부분에서 ExitProcess함수가 존재하는 그래프로 이동하는 것을 확인하였습니다.
Step 8. JNZ은 ZF 값 관련 명령어이므로 0을 1로 변조 하였습니다.
Step 9. ZF 값 변조 시 다른 그래프로 이동한 것을 확인하였습니다.
Step 10. CrackMe 10.exe의 입력 값에 "11111111111111111" 값을 입력 후 Check하였습니다.
Step 11. 첫번째로 설정한 브레이크포인트 쪽으로 접근에 성공하였습니다.
Step 12. 분기부분에서 오류 메시지 그래프 쪽으로 진행되는 것을 확인하였습니다.
Step 13. ZF 값을 0에서 1로 변조 하였습니다. (JNZ는 ZF 값 관련 명령어)
Step 14. 해당 분기 부분에서 eax값과 ebx값을 비교하는 CMP명령어를 확인하였습니다.
Step 15. eax와 ebx의 값들을 확인하기 위해서 해당 부분으로 들어갔습니다. (eax <- ecx, ebx < -edx)
Step 16. EDX에서 31h(1) 값을 확인하였습니다. (테스트 입력 값)
Step 17. ECX에서 키 값을 확인하였습니다.
Step 18. 아스키 코드 표를 참고해서 변환 결과 키 값을 확인할 수 있었습니다.
Step 19. 확인한 키 값을 입력 후 Check하였습니다.
Step 20. 해당 키 값이 정답인 것을 확인하였습니다.
'공부 > 리버싱문제' 카테고리의 다른 글
[abex' crackme] crackme5 문제 (0) | 2023.08.12 |
---|---|
[abex' crackme] crackeme3 문제 (0) | 2023.08.11 |