정보보안/리버싱 입문

리버싱시작하기(2)

b1ackhand 2022. 2. 22. 15:42

abex' crackme 2번 예제를 이어서 공부해본다.

 

아무알파벳을 입력해보니 오류창이 뜬다.

 

마찬가지로 ollydbg에서 이를 열고 실행해 보았다.

 

ollydbg에서는 문자열에 따라서 검색하는 기능이 존재한다.

 

아마 저부분이 정답일 때 나오는 키워드 인것같다.

 

하지만 보면 다른 주소에도 같은 키워드가 존재한다.

이를 따라가보면 한곳은 정의하고 한곳은 사용하는 부분이다.

 

필요한 부분에서 breakpoint를 걸어서 자세한 정보를 확인 할 수 있다.

다음과같이 breakpoint를 걸고 동작시키면서 분석해볼 것이다.

 

ESP -> 현재 스택의 위치

EIP -> 다음 작동 명령어 주소 위치

EBP-0E4에 ERROR 문자열이 저장된 004023D0를 

0040237C로 변경하면

 

다음과같이 저장되 있는 문자열이 바꿀수 있다.

하지만 이상한 점이 보인다.

004023D0로 쓰는 주소를 위에 입력창에서보면 뒤집어서 입력한다.

 

이는 빅엔디안, 리틀엔디안의 차이 때문이다.

 

위와같은 방식으로 메모리값을 직접 수정해서 사용할 수 있다.

 

분기점을 찾아 디버깅하다보면

아래 JZ 부분에서 정답인지 아닌지가 분기가된다.

더 위쪽에서 breakpoint를 잡고 한줄씩 보다보면

다음과같이 입력한코드는 1234인데 저장된 C5C6C7C8 문자열을 확인할 수 있다.

 

이를 입력하면 정답이 나온다..

 

왜 이거의 답이 이렇게 되는지는 논리적으로 잘 이해가 안되긴하다.

'정보보안 > 리버싱 입문' 카테고리의 다른 글

리버싱의 어려운 문제들  (0) 2022.03.04
리버싱, 좀 더 깊숙이  (0) 2022.03.01
리버싱에 익숙해지기  (0) 2022.02.25
리버싱 시작하기(1)  (0) 2022.02.21
리버싱을 위한 기초 지식  (0) 2022.02.15