Lena Reversing - tutorial 01
리버싱을 공부하기에 좋은 튜토리얼이다.
총 1강부터 40강으로 구성되어 있으며
파일 다운로드와 강의는 다음의 주소에서 다운로드 가능하다.
(다운로드 : https://forum.tuts4you.com/files/file/1307-lenas-reversing-for-newbies/)
그럼 첫번째 튜토리얼을 시작해보자.
다운받은 파일에는 강의파일도 포함되어 있다.
강의를 보면서 풀어도 좋으나 처음엔 무작정 시도해보자
파일은 reverseMe.exe 파일이다.
Ollydbg로 파일을 열어보았다.
F9 버튼을 눌러 그냥 실행해보니 다음과 같은 창이 뜬다.
새로운 라이센스를 구입하라는 창이 뜬다.
그럼 이제 다시 control + F2를 눌러 다시 실행시키고 F8을 눌러가며 확인해보자
진행하다보면 다음과 같이 CreateaFileA가 나온다.
CreateFileA는 FileName에 적혀있는 이름의 파일을 검색하고 만약 해당 파일이 없다면 오류를 반환한다.
우리는 해당 파일이 없으니 오류가 날 것이고 -1이 반환된다.
반환된 -1은 EAX에 있고 이것을 -1과 비교한다.
그러면 Z 플래그는 1이 되고 JNZ 를 통해 해당 주소로 이동하지 못하고 그냥 넘어가게 된다.
그러므로 JNZ를 무조건 분기하게 되는 JMP로 바꾸어 주었다.
바꾸어준뒤 F8을 통해 진행하면 이번엔 ReadFile이 나오게 된다.
ReadFile도 파일을 읽지 못하면 오류를 반환하게 된다.
마찬가지로 해당 파일이 없으니 오류가 발생하고 Z 플래그는 1로 바뀌고 JNZ의 분기문을 지나치게 된다.
이번에도 JNZ를 JMP로 바꾸어 주었다.
그 다음은 다음과 같이 나온다.
403273의 메모리 주소의 값과 16진수 10을 비교하여 JL을 통해 분기하고 있다.
이전과 같이 JMP로 바꿔준다면 분기하는 주소가 오류를 출력하는 곳으로 되어있기 때문에 다른 방법을 사용해야 한다.
물론 이번 튜토리얼은 내용이 많지 않아 내리다보면 성공했을 때의 주소를 금방 알 수 있지만
text String을 이용하였다.
오른쪽마우스를 눌러 Search for -> All referenced text strings 를 눌러 보자
그럼 해당 프로그램에서 쓰이는 text 문자열들을 볼 수 있다.
이전에 보았던 오류창의 text도 볼 수 있고 마지막엔 성공한 것으로 보이는 문자열이 있다.
더블클릭하면 해당 위치로 이동할 수 있다.
성공했을때의 창을 띄우는 부분의 주소는 00401205이다.
물론 JL의 한 줄을 JMP SHORT 00401205로 바꾸어 주어도 된다.
그렇지만 아래쪽에 동일한 명령이 004010D8 주소에 있으니 그쪽으로 가보자
JMP SHORT 004010D8로 바꾸어주었다.
이제 F8을 눌러 계속 진행하다보니 성공 메세지가 출력되었다.
끝.
'Security&Hacking > 리버싱' 카테고리의 다른 글
Lena Reversing - tutorial 03_1 (0) | 2020.02.24 |
---|---|
Lena Reversing - tutorial02 (0) | 2020.02.23 |
Crackme5 (0) | 2020.01.28 |
Crackme4 (0) | 2020.01.28 |
Crackme3 (0) | 2020.01.28 |