abex`2nd crackme-serial 추출
오랫만에 리버싱 포스팅을 하게되었습니다. 두달도 지난거 같아요 앞으로 리버싱위주로 많이 포스팅하겠습니다.
너무 오랫동안 안했어서 그른지 쉬운 crackme 문제도 삽질하면서 풀었습니다.
이 예제는 리버싱 핵심원리에 있던 파일인데 이번엔 혼자서 분석해 보았습니다.
예전 codeengn에서 많이 보던 문제 유형입니다. 아마 예상으로는 name의 입력값에서 어떤 연산을 거친후 serial을 생성하는 거 같아요. 한번 보겠습니다.
문자열 검색으로 실패시 띄어지는 Messagebox에서 나오는 문자열을 검색했더니 저 TEST 명령에서 분기하는 것을 알 수가있었습니다. 저 TEST 명령 실행 후 ZF 값을 바꾸어 주면 성공 메시지로 분기하는 것을 보실 수 있을 것입니다.
그렇다는건 TEST위의 함수 호출에 따라서 분기가 결정된다는 것입니다.
그래서 안으로 들어가서 탐색해 보았습니다.
cmp 함수가 보이네요 비쥬얼베이직에서 문자열을 서로 비교할 때 많이 쓰던 API함수 입니다.
더 들어가 보았습니다. 또 cmp함수가 보이네요. 들어가 보도록하겠습니다.
들어가서 F8로 조금 더 디버깅해보니 저 두개의 문자열이 나란히 뜨네요 아마 경험상 저게 serial일 것 같습니다. (123456789는 제가 입력한 serial입니다.)
성공!!!
다음 포스팅은 이 문제가 어떻게 serial을 생성하는지 serial을 생성하는 알고리즘을 분석해보도록 하겠습니다.
0 개의 댓글