Reverse Engineering DAY_010 Crackme2.exe, Crackme3.exe, 어셈블리 변조하기, 어셈블리 코드 분석, assembly code 분석, 레지스터, Register, 어셈블리어 명령어, Reversing Engineering, 리버싱 엔지니어링 기초

2024. 2. 27. 22:37Information Security 정보보안/Reverse Engineering 리버스 엔지니어링

728x90

배울내용:

Crackme2.exe

Crackme3.exe

어셈블리 변조하기 

어셈블리 코드 분석

assembly code 분석

레지스터

Register 

어셈블리어 명령어 

Reversing Engineering 

리버싱 엔지니어링 기초

 

 

 

 

 

Crackme02.exe 파일 분석하기 

 

 

Crack02.exe 파일을 실행하면 이렇게 로그인 창이 뜬다

 

 

 

About 을 눌렀을떄 아래 이벤트가 발생한다

 

 

 

 

 

 

로그인을 시도했을때는 최소 4 자리를 쓰라고한다 

 

 

물론 4자리를 넣으면 serial이 틀리다고 뜨면서 안된다 

 

이번시간에 이를 분석해서 뚫어보고 분석해 볼 것이다

 

 

 

[미션]
>프로그램의 실행이 성공했을 경우 메세지 박스 1) 캡션 , 2) 텍스트 수정후 파일로 저장
1) 캡션 : Mission Clear
2) 텍스트 : Yea, this serial is right.!

 

 

이런 미션이 주어졌다고 하자 

한번 변조해보자 

 

 

먼저 성공과 실패 문구를 확인해보자 

확인하는 방법은 이전 시간에 방법을 배웠다 아래의 링크로가서 보면된다 

 

https://sarimus.tistory.com/92

 

Reverse Engineering DAY_009 어셈블리 변조하기, Helloworld.exe 분석, Crackme1.exe, 어셈블리 코드 분석, assembl

배울내용: 어셈블리 변조하기 Helloworld.exe 분석 Crackme1.exe 어셈블리 코드 분석 assembly code 분석 레지스터 Register 어셈블리어 명령어 Reversing Engineering 리버싱 엔지니어링 기초 아래는 OllyDBG 로 분석

sarimus.tistory.com

 

 

 

 

 

 

 

 

이걸 더블 클릭해서 성공과 실패의 메세지가 어떻게 가는지 볼수가있다 

먼저 성공을 보면

 

 

 

JE (Jump if Equal) 만약 조건이 맞으면 00403408 로 가는데 00403408   로 한번가보면 

 

 

 

 

실패 메세지가 뛰워주게 된다는 걸알수있다

만약 저거를 변조해서 JMP 로 성공값으로 보내주면 된다

 

 

 

이렇게 변조해서 다시 실행해보자 

 

 

 

 

 

그러면 위와같이 성공한 메세지가 뜨게 된다 

 

 

 

그런데 우리가 원하는 Serial 을 알고싶은데 Serial 값은 어떻게 찾을까?

 

우선 아까 JMP 했던 부분에 F2 로 Break point 를 걸어주고 

 

 

아이디와 Serial을 1234 로 입력한뒤에 로그인해보면

원래맞는 serial를 비교를 해볼건데 그값이 Stack 에 저장될것이다 

 

 

 

 

그래서 보니 1234 이외에 95969798 라는걸 알수있다

아마 95969798 은 Serial 같다는 느낌이 많이든다 

 

 

그리고 다시 

 

 

이렇게 넣어준뒤에 Check 누르면

 

 

이렇게 성공하는것도 보인다 

Crackme02.exe 를 성공적으로 성공메세지를 뛰운다 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Crackme03.exe

 

 

 

 

이걸 그냥 실행시

 

이런 창이나오고 확인을 누르게 되면 

 

 

 

이렇게 file을 못찾는 걸 알수있다. 

 

 

 

 

 

getFileSize 로 파일을 불러오고 

 

이파일을 크기를 비교해서 맞으면 아래로 가고 welldone 또는 the found file is not a valid keyfile.... 이 둘중다시 선택, 

 

만약에 크기가 틀리면 hmmmm , I can't find the file! 이게 출력이 되는것같다 

 

 

 

그리고 제일 중요한게 어떤파일을 여는지이다 

 

 

 

빨간줄을 보면 abex.l2c 라는 파일이 12 (HEX) (18 bytes) 가 되면 아마 될것같다 

그러면 text 파일을 만들어서 영문자 18개 (18bytes)를 넣어서 저장해준다

 

 

 

이걸 작성하고 이름을 abex.l2c 로 저장해준다 

 

 

 

그리고 Crack02.exe 파일이 있는곳에 abex.l2c 를 옮겨주고 실행해보자 

 

 

 

 

 

 

그러면 이와같이 성공한다 

만약 글씨가 17개나 19 개더라도 18bytes(12 (HEX)) 가 아니라서 실패한다 

 

 

 

728x90