no image
crackme#5
abex' crackme5.exe 파일을 먼저 실행시키면 위와 같은 창을 볼 수 있다. Check 버튼을 누르면 위와 같은 Error 창이 뜬다. 이뮤니티 디버거를 통해 확인 그대로 실행하면 DialogBoxParamA 함수에서 처음에 본 실행 결과를 띄워주고, serial 값이 다르면 그대로 종료한다. EAX가 0이면 Well done 메시지 창으로 점프하지만 EAX는 1이기 때문에 JE SHORT 00401117를 JNE SHORT 00401117으로 수정하고 진행했더니 위와 같은 결과를 확인할 수 있었다. 하지만 시리얼넘버를 찾아야 하기 때문에 다른 방법으로 시도했다. 위에서 확인한 바와 같이 EAX 값이 0이면 Well done 메시지를 출력하는 부분으로 점프한다. EAX 값을 확인하기 위해 00..
2024.03.28
no image
crackme#4
실행화면이다. Serial 번호를 입력해야 하고, Registered 버튼을 클릭해야 하는데 비활성화되어 있다. crackme#4의 EP 부분이다. Search for로 문자열을 찾아봤다. 아마 성공했을 때 출력되는 메시지 문자열인 것 같다. 사용된 함수들을 확인했다. 시리얼 값을 입력받을 때, 입력받은 값이 시리얼 값과 같은지 비교하려면 strcmp 함수가 사용되었을 것 같아 0040230D로 들어갔다. 0040230D에 BP를 걸고 F9로 실행하면 시리얼키를 입력할 수 있는 실행창이 뜨고 아무 값이나 먼저 입력했다. 그러면 위와 같이 ECX에 2155560이라는 숫자를 확인할 수 있다. 이 숫자를 입력받은 값과 비교하는 것이다. 실행파일을 다시 실행하고 2155560을 입력하면 Registered 버..
2024.03.28
no image
crackme#3
CreateFileA 함수 파일 또는 I/O 디바이스를 만들거나 엽니다. 가장 일반적으로 사용되는 I/O 디바이스는 파일, 파일 스트림, 디렉터리, 물리적 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 통신 리소스, 메일 슬롯 및 파이프입니다. 함수는 파일 또는 디바이스 및 지정된 플래그 및 특성에 따라 다양한 형식의 I/O에 대한 파일 또는 디바이스에 액세스 하는 데 사용할 수 있는 핸들을 반환합니다. GetFileSize 함수 지정된 파일의 크기(바이트)를 검색합니다. 실행하면 위와 같은 메시지창을 확인할 수 있다. CreateFileA Mode = OPEN_EXISTING(파일이 존재할 경우에만 파일을 연다, 존재하지 않을 경우 에러 발생) Access = GENERIC_READ(읽기 권한) Fil..
2024.03.28
no image
crackme#1
MessageBoxA는 총 3개이다. 실행했을 때 메시지 창은 2개를 볼 수 있는데, 이 실행 결과가 두 번째 MessageBoxA(Error 메시지 창)가 아닌 세 번째 MessageBoxA(OK 창)로 뜨게 하면 성공하는 문제이다. EAX가 3으로 바뀌었다. 3은 하드디스크를 의미하며, EAX는 반환값을 저장한다. 원래대로 그냥 실행하게 되면 EAX = 1, ESI = 3으로 값이 다르기 때문에 점프하지 않고 그대로 진행한다. JE SHORT 0040103D 같으면 jump하는 것이 아니라 그냥 jump하도록 위와같이 코드를 수정한다. JNE 또는 INC DEC를 수정하는 방법도 존재하며, JE를 JNE로 바꿔서 EAX와 ESI의 값이 다를 때 점프하도록 수정한 것이다.
2024.03.28
Little Endian
보호되어 있는 글입니다.
2024.03.28
Prev 1 Next
반응형