본문 바로가기
정보보안/리버싱

리버싱) abexcm3.exe - abex crackme

by _miiiiiin_zzang_ 2021. 5. 31.

https://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/Detect-It-Easy.shtml#download

 

Download Detect It Easy 3.01

Download Detect It Easy - An easy to use piece of software that can come in handy to any programmer who is looking to analyze a file, determine its type and packer

www.softpedia.com

DIE - Detect It Easy

Detect  It Easy : PE 구조 보여줌, 프로그램을 개발한 언어와 패킹 여부도 확인 가능, 파일을 직접 수정 가능

프로그램 분석 전 가장 먼저 알아야 하는 것은 어떤 언어로 개발되었고 패킹 되었는지 알아보는 것이 중요

 

abexcm3.exe 시작 전 DIE 다운로드 받아놓기

abexcm3.exe
0.01MB


이번 파일은 일련번호를 담은 파일을 생성하는 문제

1. 어떤 이름의 파일을 생성해야하는지 알아내는 것

2. 생성판 파일을 규칙에 맞도록 변경하는 것

 

함수 호출 규약 : 함수를 호출할때 인자를 전달하는 방식이나 함수 실행이 끝나고 스택을 정리하는 방식에 대한 약속

- cdecl : 인자가 오른쪽에서 왼쪽으로 순서대로 스택으로 전달, 함수가 종료될 때 호출자가 피호출자의 스택 프레임을 정리

- stdcall : 인자가 올느쪽에서 왼쪽으로 순서대로 스택으로 전달, 함수가 종료될 때 피호출자 스스로 스택 프레임 정리

- fastcall : 인자가 오른쪽에서 왼쪽으로 순서대로 레지스터를 사용해서 전달. 레지스터 사용하기 때문에 스택을 정리할 필요가 없음

 

프로그램 구조 분석

프로그램에서 확인되는 오류 메시지 확인 가능

CreateFileA 명령어가 있는 것을 보니 여기가 시작 지점

실행 결과는 EAX에 담김

GetFileSize 명령어로 파일 크기를 확인함

결과값은 EAX 레지스터에 저장하고 파일 크기가 12(12는 16진수, 10진수로는 18)인지 확인함

 

프로그램 주석 부분을 보면 filename은 abex.l2c인 것을 확인 가능

abexcm3.exe 파일이 있는 폴더에 같은 이름으로 파일을 하나 생성하기

내용은 10바이트 값을 채워서 입력 후 저장한 다음

파일 유효성을 검증하는 부분에서 브레이크포인트 설정 후 실행

브레이크포인트 바로 앞까지 실행된 것 확인 가능

현재 레지스터 값

EAX 값에 십진수 10이 들어간 것을 확인 가능

abex.12c 크기를 18바이트로 해서 다시 실행한다면 cmp eax, 12 명령어에 의해 참이 됨

사이즈 변경 후 다시 실행 시 브레이크포인트에서 레지스터 값 확인 시 12인 것을 확인 가능

성공 메시지 확인!

댓글