[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를 통하여 구문을 보고 해석하는 연습을 연속으로 진행했다
그래도 처음 강의를 들을 때보다 이해하는 속도가 전보다는 나아졌다고 생각한다
아직 함수가 어떤 역할을 하는지 잘 알지는 못하지만
강의 내용을 들으며 이해하려고 노력하고 있다