My Study/CrackMe

CrackMe(Crack me by hackereh@!)



Crack me by hackereh@!.exe


크랙미를 실행해보자.



아무거나 입력하고 체크를 해보자.



그랬더니 틀렸다고 나온다. 이번에도 All referenced text string 을 보자. 



문자열들이 보이는데 성공했다는 문자열까지 보인다. 이동해보자.


그럼 아래와 같이 보이는데 위로 올려보자.




위로 올리다보면 아래와 같이 AND 연산을 한 뒤 일치하지 않으면 점프를 하여 실패했다는 메세지로 간다.



위로 더 올려보자.



여기를 보면 입력한 텍스트를 볼 수 있다. 더 위로 올려보자.



그러면 입력한 문자열 길이 검사를 한 뒤 아무것도 입력하지 않으면 점프를 하여 실패 조건문으로 넘어간다.




위의 사진의 함수는 실행을 하여 처음 실행 했을 시에 뜨는 창이 뜬다.


이제 문제 풀이로 넘어가보자.



 아마 이 부분에서 점프를 하지 않고 계속 지나오면 웬지 성공했다는 메세지를 띄울 수 있을 것이다. 그리고 마지막에 비교를 하는데 AND 연산 하는 숫자만큼 비교를 한다. 이것이 글자수로 추정이 된다. 그럼 또 알아야할 것이 무엇이 있을까? 


assembly 보려면 여기를 클릭하세요.


 그것은 JNZ 점프문이 어떤 조건일 때 점프를 하는가 이다.  JNZ 점프는 ZF 가 1로 셋팅 됬을 때 점프를  하지 않고 지나친다. 

 그럼 AND는 언제 ZF 를 1로 셋팅할까? 그것은 AND 로 연산한 결과값이 0일 때 ZF 가 1로 셋팅이 된다.


  이제 연산을 해보자. 0xAD 가 0이 될 때 0xAD 가 NOT으로 연산했을 시에 0으로 셋팅이 될것이다. 



연산을 간단히 하려면 계산기에서 프로그래밍 모드로 들어가 NOT 연산을 하면 아래와 같이 설정이 된다. 그럼 Hex 값이 52로 나온다. 이 값은 아스키 코드표로 'R' 이 나온다.



이런 식으로 계속 계산하면 나올 것이다. 그러다 마지막에 5FC5가 나오는데 이것을 계산기에서 연산하여 뒤에서 8비트만큼만 보면 된다.


그럼 6글자가 나올 것인데 이것을 넣으면




이렇게 끝난다. 



'My Study > CrackMe' 카테고리의 다른 글

CrackMe(Crack me by hackereh@!)  (0) 2015.05.26
CrakMe(Check your serial)  (0) 2015.05.25
CrackMe(abex'5th crackme)  (0) 2015.05.24
CrackMe(abex'4th crackme)  (0) 2015.05.24
CrackMe (abex's 2nd crackme)  (0) 2015.05.24
CrackMe(RegisterMe)  (0) 2015.05.21

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.