abcdef
CodeEngn Basic - (5) 본문
다운을 받습니다. 실행을 시켜봅니다.
이번 문제는 등록키를 찾아내는 것입니다.
PUSHAD가 있는 것을 보아하니 UPX패킹이 되어있는 것 같습니다.
EXEINFO PE로 열어봅니다.
밑에 보듯이 UPX로 패킹이 되어있습니다.
UPX패커로 풀어봅니다.
풀었으면 올리디버거로 다시 파일을 엽니다.
열었으면 아까의 에러문구를 찾기 위해
오른쪽마우스 – search for – all referenced text strings
를 해줍니다.
찾으면 들어가봅니다.
보아하니 저 JNZ(Zero Flag가 0일 때 점프)가 나올 문구를 결정하는 코드인 것 같습니다. 하지만 위에 코드에는 비교코드가 없습니다. 함수를 call하고 있습니다. 아마도 위에 함수가 결정을 하는데 저흰 wrong문구가 뜨므로 저 함수에서 Zero Flag를 0으로 만드는 것 같습니다. (시리얼 키는 대충 아무거나 적어주십시오)
함수 안으로 들어가봅니다. (F7)
들어가서 보면 CMP를 해주고 JE(두 값이 같다면)로 점프를 할지 않 할지 결정합니다. EAX와 EDX를 비교하는데 저희는 시리얼 키에 12345를 입력했는데 Registered User와 비교를 한다면 저희는 위에 칸에는 Registered User를 넣어야 제로 플레그가 0이 되는 걸 알 수 있습니다. Registered User를 넣고 다시 실행시켜보면 JNZ가 실행되지 않습니다. 그 밑 명령문들을 볼 수 있습니다.
그럼 그 밑에도 JNZ가 하나 더 있습니다. 아까 전과 마찬가지로 위에 CALL해주는 함수로 들어갑니다.
아까 전과 거의 똑 같은 코드들이 나왔습니다. 이번에도 EAX와 EDX를 비교합니다. EAX는 아까 전 저희가 두번째 칸에 넣은 키입니다. GFX-754-IER-954로 다시 넣어주고 다시 실행시켜봅니다.
그럼 JNZ가 실행이 되지 않으면서 성공 창이 뜨게 됩니다.
결국 정리하자면 키는
이렇게 됩니다.
'IT 독학 > CodeEngn' 카테고리의 다른 글
CodeEngn Basic - (7) (0) | 2018.08.11 |
---|---|
CodeEngn Basic - (6) (0) | 2018.08.11 |
CodeEngn Basic - (4) (0) | 2018.08.11 |
CodeEngn Basic - (3) (0) | 2018.08.11 |
CodeEngn Basic - (2) (0) | 2018.08.11 |