1번 문제랑 같다.

대신 이번에는 Keyfile.dat를 만들어보자.

Keyfile.dat파일을 만들어 보자.

일단, 1234를 넣어두자.

쭉 내려가 보면 zero flag0이다.

그리고 EAX44가 있다.

readfile()함수에 첫 번째 인자(file handler)44라는 뜻

createfile() 함수는 일단 통과.

buffer의 주소 : 40211A

readfile()의 리턴 값은 읽어온 byte 수이다.

쭉 내려가 보자.

402173에 있는 값과 0x10을 비교하는지 보자.

4021734가 들어가 있다.

위 조건을 한번 보자.

1. 읽어온 byte수가 16보다 작으면 안 된다.

2. 8개의 'G'가 필요함

keyfile을 수정했다.

다시 실행해보자.

안전하게 4010D8로 왔다.

유튜브 재즐보프 - 레나튜토리얼 보고 풀었다.

'리버싱 > Lena Tutorial' 카테고리의 다른 글

Lena Tutorial 01  (0) 2021.10.31

CreateFileA()부터 보자.

자세히 보면 "Keyfile.dat"파일을 읽어온다.

주석을 걸어 놓은 곳(40107B)으로 이동해보면 zero-flag1로 변하는 것을 볼 수 있다.

zero flag
-산술 논리 연산의 결과가 0일 때에 1로 설정한다.

, createfile()함수에서 파일을 읽어 왔으면, zero flag0이 될 것이고, 파일을 읽지 못했다면 1이 된다.

플래그 값을 더블 클릭해보면 10으로 변한다.

 

1이면 어디로 가는지 보자.

실패다 !!

 

0이면 어디로 가는지 보자.

자.. ReadFile() 함수에 대해 알아보자.

데이터를 읽어와서 버퍼에 저장하는 함수다.

반환 값 : 성공 -> 0이 아닌 값, 실패 -> 0

위에서 읽어온 게 없으니 이번에도 zero flag0으로 바꿔주자

ReadFile함수에서 읽어온 바이트 수 가 0x10보다 작으면 4010F7(실패)로 이동한다.

F8로 한 칸 내려가 보자.

오른쪽에 보면 S(sign flag)1로 변했다.

이걸 0으로 바꿔주면 4010F7로 이동할 일은 없을 것 같다.

통과하고 쭉 내려가면

성공!!

 

이제 crack file을 만들어 보자.

처음 flag를 변경했던 곳이다.

JNZ-> JMP로 바꿨다.

두 번째 JNZJMP로 바꿨다.

그다음 JLnop로 바꿔줌

이렇게 바꿔주고 crack file을 만들어보자.

내가 수정한 코드들을 전부 드래그한 후, 우 클릭-> copy to executable -> selection을 누른다.

그러면 드래그한 창이 뜨고, save file을 눌러서 크랙 파일을 만든다.

 

유튜브 재즐보프님 레나튜토리얼 강좌보고 공부했다.

'리버싱 > Lena Tutorial' 카테고리의 다른 글

Lena Tutorial 02  (0) 2021.10.31

+ Recent posts