본문 바로가기
리버싱

리버싱 13

by 윤라경 2024. 8. 27.

[2024.08.27]

 

 

 

오늘 실습 시작은 crackme7으로 진행한다

7도 역시 시리얼 넘버를 입력하는 창이 나타난다

 

 

아무것도 모르는 상태에서 시리얼 넘버를 알 수는 없기 때문에

Strings과 함수를 찾아봐야 된다

현재의 경우 함수를 출력하는 곳에서 CmpEq와 CmpMe 두 개를 발견했다

 

 

그 외의 나머지 것들은 참고할 것이 없었기 때문에 넘어갔다

 

 

아까의 Cmp의 두 번째 함수로 이동 후 실행시켜 test와 1234를 입력한다

 

 

그런 다음 실행시키게 되면

 

 

아래의 스택에서 내가 입력한 값과 그 아래에 바로 UMICODE로 시리얼 넘버로 추정되는 값이 확인된다

 

 

그렇기 때문에 다시 새로고침 후 test와 41504641의 값을 넣고

 

 

이번에는 첫 번째 Cmp 함수에서 시작해 본다

 

 

Registered가 나오면서 해당 test를 등록할 수 있게 되었다

해당 화면이 나타났기 때문에 UMICODE로 나와 있던 41504641이 시리얼 넘버였던 것을 알 수 있다 

 

 

이번에는 crackme8을 연습해 보려고 한다

마찬가지로 파일을 열었을 때 시리얼 넘버를 입력하는 화면이 나타난다

 

 

아무것도 없이 엔터만 누르게 되면 아니라는 경고 메시지가 나온다

 

 

Strings을 확인했을 때 성공 메시지가 나오는 걸 확인했기 때문에

성공 메시지가 나오는 부분으로 이동해서 확인해 본다

 

 

구문을 확인했을 때 답이 나오지 않았는데,

같은 강의를 듣는 수강생분들께서 정답을 올려 주셔서 확인해 봤다

이외에도 BDH@0(와 PaH@:!가 있다

 

 

비교를 6이랑 하니까 최소 여섯 자리를 넣어야 된다

현재 화면에서의 값은 8비트로 보면 된다

 

A D

1010 1101

0101 0010  <-- 52=(R)

--------------------------

0000 0000

 

9A

1001 1010

0110 0101  <-- 65=(e)

--------------------------

0000 0000

 

97

1001 0111

0110 1000  <-- 68=(h)

-------------------------

0000 0000

 

BF

1011 1111

0100 0000  <-- 40(@)

-------------------------

0000 0000

 

C5

1100 0101

0011 1010  <-- 3a(:)

-------------------------

0000 0000

 

D6

1101 0110

0010 1001  <-- 29())

-------------------------

0000 0000

 

> Reh@:)

 

고로 Reh@:)가 시리얼 넘버가 된다

나머지는 임의로 만들 수도 있기 때문에 연습을 통해 찾아보는 것도 좋다

 

 

 

강의 소감

오늘도 ollydbg를 통하여 구문을 보고 해석하는 연습을 연속으로 진행했다

그래도 처음 강의를 들을 때보다 이해하는 속도가 전보다는 나아졌다고 생각한다

아직 함수가 어떤 역할을 하는지 잘 알지는 못하지만

강의 내용을 들으며 이해하려고 노력하고 있다

'리버싱' 카테고리의 다른 글

리버싱 15  (0) 2024.08.30
리버싱 14  (0) 2024.08.29
리버싱 12  (0) 2024.08.26
리버싱 11  (0) 2024.08.26
리버싱 10  (0) 2024.08.23