외로운 Nova의 작업실

리버싱 입문 - 7(rena 17강) 본문

Computer App Penetesting/Reversing

리버싱 입문 - 7(rena 17강)

Nova_ 2022. 12. 19. 15:24

안녕하세요. 이번시간에는 리버싱 입문책으로따라 rena 17강을 크랙해보도록 하겠습니다. 리버싱 입문의 글쓴이는 이 17강을 통해서 어셈블리어를 익히는 것을 중점으로 설명합니다. 하지만 저는 어셈블리어와 친하기때문에 따로 일련번호 생성 로직을 읽어내는 부분은 정리하지않겠습니다. 그저 리버싱을 통해 크랙해보도록 하겠습니다. 하지만 어셈블리어와 친해지는 것은 중요하다는 것을 잊지않을 것 입니다.

 

- 문제 인식

먼저 17강 파일을 실행시켜보도록 하겠습니다.

위에는 Nova, 아래는 1234를 넣어보고 check을 눌러보겠습니다.

디버거를 하드 드라이브에서 제거하라고 나오는 군요.. 하지만 이 문제는 일련번호에 관한 문제입니다. Nova를 가지고 일련번호를 프로그램 내부적으로 생성해내고 그것이 사용자가 입력한 일련번호와 맞는지 확인하는 프로그램입니다. 따라서 한번 일단 리버싱을 통해 일련번호를 알아내고 크랙까지 해보겠습니다.

 

- 리버싱

 

일단 로직을 생각해보면 일련번호를 생성하고 비교하고 분기문을 통해 아니다/맞다를 메시지박스로 알려줄 것 입니다. 이러한 부분을 찾기위해서 모든 함수 분석, F12를 통한 콜스택분석, 문자열을 통한 분석을 사용하게됩니다. 저는 아까 실패했다는 문자열을 보았기에 문자열을 통한 분석을 사용하겠습니다. 오른쪽 마우스클릭 - search for - all referenced string을 눌러보겠습니다.

이중 Error detected~ 부분을 누르고 enter로 code 부분으로 가보겠습니다.

해당 코드는 실패했다는 메시지 박스를 생성해내는 코드로 윗부분에 보게되면 JMP했던 이력이 있습니다. 이를 통해서 코드를 bp를 걸고 분석해보게되면

  • 004012FB : lstrlen 함수 실행
  • 00401309 ~ 00401334 : 일련번호 생성 코드
  • 00401336 : 일련번호와 실제 입력한 값을 비교하는 코드
  • 0040133C : 분기문
  • 0040133E : 성공했다는 메시지박스 시작점
  • 00401353 : 실패했다는 메시지박스 시작점

인것을 알 수 있습니다. 

 

- Crack

크랙은 분기문 부분 JNE를 JE로 바꿔 크랙해주겠습니다.

저장후에 실행해보겠습니다.

KeygenMe(cracked).exe
0.39MB

 

 

실제로 잘 되는 것을 확인할 수 있습니다.

Comments