반응형
이번 문제는 Name이 CodeEngn일 때, Serial을 원한다.
문제에는 bruteforce가 필요하다고 하지만, 코드 짜는것 없이 풀 수 있었다.
첫번째로 Die로 확인해보니 UPX로 패킹이 되어 있다.
언패커로 언패킹 해주고 디버거로 열어보면,
비교하는 구문을 찾았습니다. 저 두개가 같아야 Good Job이 출력 될 것 같다.
eax와 esi의 데이터를 알아보기 위해 브레이크 포인트를 걸고 확인했다.
serial에 12345를 입력 했을때 레지스터를 보면..
EAX는 3039 즉 10진수로 12345가 나온다. 이렇게 EAX는 serial에 입력한 값이 들어간다는 것을 알 수 있었다.
ESI를 129A1이라는 값이 들어 있는데 이것을 10진수로 확인해보면, 76193이 나온다.
Name = CodeEngn, Serial = 76193 이렇게 key가 나왔다.
ESI에 저런 값이 왜 들어갔는지 보면,
이런 암호화 방식을 통해 CodeEngn 문자열 을 암호화 하여 ESI에 넣었다.
EAX에는 입력한 값이 그대로 들어간 이유는 모르겠지만 숫자를 입력했을 때, 숫자가 그대로 eax에 저장되고,
문자열을 입력했을때 문자열과 관련없는 수가 eax에 저장되는 것을 봐서
아마 문자열과 숫자를 걸러주기 위한 함수가 아닐까 싶다.
bruteforce없이 풀 수 있는 문제였다.
반응형
'Reversing 문제 풀이 > CodeEngn.com_Basic (Clear)' 카테고리의 다른 글
codeengn-basic-L16 풀이 (0) | 2022.04.19 |
---|---|
codeengn-basic-L15 풀이 (0) | 2022.04.19 |
codeengn-basic-L13 풀이 (0) | 2022.04.06 |
codeengn-basic-L12 풀이 (0) | 2022.04.05 |
codeengn-basic-L11 풀이 (0) | 2022.04.02 |
최근댓글