비번: tuts4you
우선 파일을 실행해보면
요런게 뜬다.
대충 해석하면 이 프로그램을 더 사용하려면 라이센스를 구입하라는 것 같다.
x64 dbg로 열어주고 코드를 읽다보면
CreateFileA가 눈에 띈다.
CreateFileA이란?
https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-createfilea
CreateFileA에 어떤 인자들이 마구마구 전달이 되는데, 뭔지는 모르니 일단
CreateFileA에 브레이크 포인트를 걸어준뒤 프로그램을 실행해줍니다.
여기서 CreateFileA는 파일을 생성한다는 뜻이 아니라, 파일이 있다면 열겠다는 뜻입니다.
F8을 눌러주면 eax에 FFFFFFFF가 전달됩니다. ( -1이랑 같다.)
그 뒤 F8을 눌러주면 jne reverseme.40109A 가 있는데 ZF를 0으로 바꿔주면 점프해서 갈 수 있습니다.
쭉 가다보면 ReadFile이 있는데 F8을 눌러주면 eax값이 0으로 바뀝니다.
그리고 밑에 test 코드에서 eax와 eax를 서로 비교해서 0인지 확인합니다.
eax값이 0이기 때문에 ZF는 1이 됩니다.
밑 코드에 jne를 따라가야 해서 ZF를 0으로 변경해주고 F8을 눌러줍니다.
이제 여기 코드를 해석해서 풀어야 합니다.
다른분들 풀이를 보면 코드를 해석하시고 keyfile을 만드셔서 풀어내시던데
저는 그런건 못하고.. 그냥 디버거 기능으로 풀었습니다.
해당 부분에 우클릭 -> 여기에 새로운 원점 생성을 눌러주고 F8을 누르시면..
요기에 도착하게 됩니다. F8 쭉쭉 눌러주면
끝!
제가 풀어보기론 Lena 듀토리얼은 3가지 방법으로 풀 수 있더군요.
1. 디버거 기능을 활용해서 원점 생성하기
2. 디버거 기능을 활용해서 해당 점프 코드를 프로그램 맨위에 넣기
3. 키 파일 생성하기
여러 방법이 있으니 모두 해보면 좋을 것 같네요 :)
'악성코드 분석' 카테고리의 다른 글
[리버싱] crackme0x00a WRITE UP (0) | 2018.10.27 |
---|---|
1.5 리버싱 기초 - C 문법과 어셈블리어 (2) | 2018.08.25 |
1. 리버싱 기초(2) (3) | 2018.08.25 |
1. 리버싱 기초 (2) | 2018.08.19 |