wonder
정보보안 스터디 - 19주차 3일 - LENA reversing (level 10, 11) 본문
level 10



지금 처음에 register 오류창이 뜨고
register 코드를 모르기 때문에 크랙을 하여 우회하거나 확실한 코드를 분석을 통해 알아내야합니다.
많은 프로그램들이 CMP비교를 통해 문자열key를 넣어두고 맞는지 확인하는 것 같습니다.
일단 이 정보들을 수집해두고요

NuMega SmartCheck 를 이용해 오픈 후 플레이 버튼을 누릅니다.
시작하자마자 팝업창이 출력되면서 쭉 진행하면
추가로 이벤트가 뜹니다.

할 수있는 이벤트는 실행시켜서 다 열어준 다음

이벤트 메세지 박스를 확인해보면 각자 메세지 박스로 떴던 내용을 확인할 수 있습니다.

VB Decompiler Lite 11 를 실행하여 오픈 후
해당 Form의 이벤트들을 클릭해보면 어셈블리 처리 내용이 뜹니다.
C17, 18 부분은 함수 프롤로그네요.


Get rid of all ~ 을 검색해보면
MOV 로 해당 메세지를 EBP-7에 대입하는 것을 확인합니다.
즉 팝업창 출력을 처리하는 함수의 시작입니다.

올리디버거로 함수 프롤로그 주소로 이동하여 확인하고
실행하다보면 문자열을 EBP-7에 대입하는 것도 확인할 수 있습니다.
이 팝업창은 아예 출력되지 않게 하기 위해서 프롤로그 부분을 RETN으로 변경하여 함수가 바로 종료되도록 합니다.

Name (label) in current module 로 vbaStrCmp 함수를 검색합니다.
CMP처럼 값들을 비교할 때 사용하는 함수입니다.
idata 섹션에 있습니다.
BP on every reference할 시 총 3개의 BP가 지정됩니다.

실행될 때 아무거나 입력하고 register me 버튼을 클릭하면

BP 까지 오게됩니다.
이 때 비교하는 함수까지 BP를 걸어두었기 때문에
등록키로 보이는 문자열을 쉽게 찾을 수 있었습니다.

level 11



Select는 가입된 유저만 사용가능하고
패스워드도 확실한 패스워드여야 가입가능합니다.
그리고 프로그램 타이틀창에 (unregistered) 가 원래 떴었기 때문에
문자열을 찾아서 주소로 이동합니다.

보면 AL이 0인지 TEST 비교하고 맞을 시에는 점프해서 비회원 유저로 뜨지만
아닐경우에는 회원 유저로 뜹니다.
그래서 AL값을 수정해줘야합니다.
레지스터창이나 메모리 창에서 esp +4위치 값을 확인해보면 AL값이 00인것을 확인할 수 있습니다.

MOV 명려어 전에 누가 호출했는지 확인합니다.

두 주소로 모두 가서 분석합니다.

두 곳에 모두 BP를 걸고 실행하면 처음 BP에 도달합니다.
이 때 EAX값을 push 하는 데 그 위의 CALL함수를 분석합니다.

XOR AL,AL로 0으로 처리해버리기 때문에
이걸 NOP로 없애도 되지만 MOV AL,1로 1로 설정해도됩니다.

그러면 기능사용이 가능합니다.
애초에 처음부터 registered 된 유저인지 확인하고 다른기능들을 허락해주는 구조였습니다.

'Security > 리버싱' 카테고리의 다른 글
정보보안 스터디 - 19주차 6일 - 드롭퍼, 파일리스 악성코드 (+보완) (2) | 2023.02.22 |
---|---|
정보보안 스터디 - 19주차 5일 - 악성코드의 종류, 분석 과정 (0) | 2023.02.20 |
정보보안 스터디 - 19주차 2일 - LENA reversing (level 8, 9) (0) | 2023.02.19 |
정보보안 스터디 - 19주차 1일 - 프로그램 기능적 크랙 (0) | 2023.02.17 |
정보보안 스터디 - 18주차 7일 - unpakcing 방법 종류 (0) | 2023.02.16 |