Security&Hacking/리버싱

Lena Reversing - tutorial02

Dior2ky 2020. 2. 23. 20:40
반응형

Lena Reversing tutorial 02

lena reversing 튜토리얼 두번째이다. 

이번 튜토리얼의 파일은 첫번째 튜토리얼과 내용이 같다. 

이번 튜토리얼의 목적은 이전과 같이 성공 메세지를 띄우는 것이 아닌

파일에서 요구하는 키 파일을 생성하는 것이다. 

파일을 열어보면 이전과 내용이 같다는 것을 알 수 있다. 

CreateFileA에서 Keyfile.dat 파일을 필요로 하고 있으니 해당 파일을 아무 값이나 넣어서 생성해 주었다. 

그 다음 Ollydbg에 올려 F9를 눌러 실행하니 다음과 같이 나왔다. 

keyfile은 인식했으나 유효하지 않은 것으로 보인다. 

F8을 눌러가며 진행하니 402173의 메모리주소와 16진수 10을 비교하고 있다. 

그래서 402173의 메모리 주소를 가보았다. 

402173의 메모리 주소의 값에는 1의 값이 있는 것이 보인다. 아무래도 keyfile에 써 넣은 'a' 한글자의 길이인 것 같다. 

그래서 길이를 16진수 10, 10진수로는 16이기 때문에 16글자 길이의 문자열로 바꾸어 주었다. 

그 다음 확인 해 보니 해당 값이 16진수 10으로 바뀐 것을 볼 수 있다. 

 

F8을 눌러 진행하니 다음과 같은 명령어들이 나온다. 

비교와 분기문들이 얽혀 있는 것으로 보아 keyfile의 내용을 검증하는 것으로 보인다. 

앞서 004010F7은 올바르지 않을 때 출력되는 창이 뜨도록 하는 분기이고 

00401205는 올바른 성공 메시지가 뜨도록 하는 분기이다. 

 

맨 처음  명령어는 40211A와 EBX를 더하고 있다. 40211A로 가니 그곳에는 keyfile에 넣어주었던 값이 있다. 

이 값들과 처음엔 0을 비교한다. 여기서 0은 숫자 0이 아닌 널 값인지를 확인한다. 

널값이라면 004010D3번지로 이동하게 되고 ESI가 아직 8이 되지 않아 오류 메시지가 출력된다. 

첫글자 a가 들어있기 때문에 다음 비교를 하게 된다. 47과 비교를 하게 되고 아스키코드를 찾아보니 대문자 G였다. 

G와 같지 않으면 분기되어 ESI가 증가하지 않는다. 

문자가 G라면 ESI와 EBX가 둘 다 증가하고 G가 아니라면 EBX만 증가하여 다음 문자를 확인하도록 한다. 

따라서 길이가 16이고 끝나서 널 값이 나타나기 전까지 G 라는 문자가 8번 나와야 keyfile을 만족시키는 것으로 판단된다. 

 

G 값을 섞어서 확인하였다. 

실행해보면 성공 메시지가 출력된다. 

끝.

반응형

'Security&Hacking > 리버싱' 카테고리의 다른 글

Lena Reversing - tutorial 03_2  (0) 2020.02.24
Lena Reversing - tutorial 03_1  (0) 2020.02.24
Lena Reversing - tutorial01  (0) 2020.02.23
Crackme5  (0) 2020.01.28
Crackme4  (0) 2020.01.28