본문 바로가기

모의해킹/리버싱

키 생성기(키젠) 만들기 : 레나 챌린지(Level17)

728x90

• 정적 분석

MASM32는 어셈블리어로 짜진 프로그램인 거 같다.

 

• 분석 시작

임의의 값을 입력을 했을 때, 나오는 메시지이다. 

메시지가 출력하는 상태에서 일시정지를 눌러준 다음 콜스택을 확인해 보면 MessageBox가 있는 걸 볼 수 있다.

 

MessageBox에 위치에 가서 어디에서 호출이 되었는지 확인을 위해 Find references  > Selected command에 들어간다.

모든 곳에 브레이크 포인트를 걸어주고 다시 실행을 해준다.

브레이크 포인트에 걸리는 걸 확인할 수 있다.

해당 위치에서 조금 올려보면 줄이 묶여있는 애가 keygen이라고 볼 수 있다. 키를 확인하는 루프이다.

 

브레이크 포인트를 걸고 다시 실행을 시키면 해당 위치에 브레이크가 걸린다.

레지스터를 보면 우리가 넣은 데이터가 하나씩 꺼내오는 걸 볼 수 있다.

 

첫 번째 루프를 돌았을 때 나오는 ESI 값은 6F66 값이다.

파이썬 스크립트를 작성해 ESI 값을 구한다. HEX값으로 되어있기에 28518 값을 계산을 했을 때와 비교를 해서 같으면 코드를 잘 짰다는 얘기다.

 

keygen을 만들기 위해 JNZ일 때 가리키는 위치를 빈 공간으로 바뀌 준다.

401390 주소로 변경을 해준다.

 

401390 데이터에는 403138 주소에 ESI 값을 넣고 401353으로 점프를 해준다.

 

밑에 주소인 403486 부분에 keygen인 403138 값을 넣어주고 실행을 시켜준다.(사진에서는 다른 부분에 넣었음,,,)

ESI에서 나온 데이터가 나온다 이 값이 우리가 원하는 키이다.

하지만 해당 문자열은 복사가 되지 않는다....

 

그래서 비교구문에서 ESI 값을 보면 6A248이 나오는 걸 보인다.

이걸 아스키 값인 48 A26을 찾으면 해당 값을 복사할 수 있다.(리틀엔디안방식으로 넣었기 때문에 6A248 이로 보이는 것이다)

이툴을 사용하면 되지만,,, 지금 오류 때문에 사용을 못 하고 있다,,,,

하여튼 해당 아스키 값을 찾아 복사해서 키를 입력을 하면 문제가 풀린다.