CodeEngn basic #10
by St1tch----------------------------------------------------------------------------------------------------------------------------
시작 부분이 PUSHAD이다.
레지스터의 모든 값을 스택에 넣고 시작하는걸 보니 패킹이 되어있는거 같다.
ASPack로 패킹이 되어있는걸 확인 할 수 있었다.
따라서 첫 그림에서 PUSHAD를 하고 esp의 값에 하드웨어브레이크를 잡았다.
그리고 실행 시켜보면
다시 POPAD로 레지스터를 원래대로 돌리는 부분으로 온다.
여기서 445834를 스택에 넣고 그 주소로 리턴한다.
따라서 이 부분이 OEP가 된다.
가보면 제대로 명령어가 안뜬다.
OllyDump로 OEP를 수정한 후 exe파일을 만들어준다.
그리고 리빌딩을 해주는 프로그램을 이용해서 리빌딩을 한 후 다시 열어본다.
이제 패치한 프로그램이 제대로 나온다.
그러면 이제 분기하는 부분을 찾아야 하는데 스트링 목록에 보면 그럴듯한 문자열들이 있다.
Registered 어쩌고 하는 스트링 부분으로 오면 위에 분기하는 부분이 바로 있다.
마저 문제를 풀어보면
네임 길이가 5글자가 넘어야하고
분기문 앞의 함수가 Serial값이 맞는지 확인하는 함수이고
그앞의 함수가 입력한 name에 맞는 Serial을 만드는 함수이다. 따로 이 함수는 분석하지 않았고 레지스터 값의 변화를 통해 알수있었다.
완성된 cm4.dat파일
인증성공한 모습.
블로그의 정보
튜기's blogg(st1tch)
St1tch