Kilkat

프로그램 시리얼 해킹1(코드엔진 basic3) 본문

Security/reverse engineering

프로그램 시리얼 해킹1(코드엔진 basic3)

KimKwangWoon 2017. 12. 25. 16:55

목표: 시리얼값 찾는 가장 기본적인 방법 알기, CMP와 CALL의 역활 알기


사용 프로그램: ollydbg110

문제: 코드엔진 03basic.exe

컴퓨터 환경: 윈도우10 64bit


우선 시리얼 값을 찾아내는데 단서가 될만한 것들을 알아내기 위해 프로그램을 실행시켜 줍니다.


첫번째 사진에서 확인을 눌러주시면 이런 프로그램이 실행이 됩니다. 그래서 Regcode라는 곳에 아무 값이나 넣고 Registrieren이라는 박스를 눌렀습니다.

틀린값을 넣었더니 시리얼값을 찾는데 단서가 될만한 PASSWORT FALSCH ! (Error! Das Passwort ist falsch!) 라는 메세지박스가 출력이 되는걸 확인할수 있었습니다. 단서를 찾았으니 이제 ollydbg를 실행시켜 줍니다.

프로그램을 연후 F9(실행)를 눌러주세요

F9(실행)를 누른후 오른쪽 마우스-Search for-All referenced text strings 를 눌러주시면 이 프로그램에서 사용된 모든 문자들을 확인할수 

있습니다.

All referenced text strings 화면에서 조금만 내려 보시면 아까 틀린값을 넣었을때 뱉어냈던 오류 메세지를 확인할수 있고 다른 여러 메세지들도

발견하실수 있습니다.

여기서 UNICODE 부분에 시리얼 값으로 추측되는 "2G83G35Hs2" 라는 녀석도 있고 그 바로 아랫줄에 "Danke, das Passwort ist richtig !"라는

녀석도 있습니다. 그리고 Error! 라는 문자도 있습니다. "2G83G35Hs2" 이녀석을 더블클릭해주세요.

그럼 이런창이 나오는걸 확인할수 있는데 아까 봤던 "2G83G35Hs2" 이녀석과 "Danke, das Passwort ist richtig !" 이녀석도 보이네요 여기서

저는 "2G83G35Hs2"이 값이 추측에서 확신으로 바뀌었습니다. 그 이유는 004028C2이 줄을 보니 CALL로 vbaStrCmp라는 녀석을 호출해오는 

것을 알수 있습니다. 여기서 Cmp는 두개의 값을 비교하는 어셈블리어 명령어 입니다. 예를 들어 Cmp EAX, 1 이라고 되어있다면

EAX의 값이랑 1이랑 비교를 하라는 명령입니다. 그래서  004028C2의 줄이 바로 윗줄의 UNICODE "2G83G35Hs2"와 입력받은 값과 비교하라는

명령이므로 2G83G35Hs2 이게 basic3의 시리얼값 즉 정답이 되게 됩니다.












Comments