정보보안/Lena's Reversing Tutorial

Lena's Reversing Tutorial 2

b1ackhand 2019. 1. 4. 20:47

2019.01.04.


decimal number system - 우리가 일반적으로 쓰는 10진법 

ex)

6312 = 6*1000+3*100+1*10+2


binary system - 이진법

ex)

12 = 1100(2) = 1*8+1*4


Hexadecimal Number - 16진법


1-9까지는 10진법을 따르고 10-16까지는 a,b,c,d,e,f를 사용한다

ex)

23 = 17(16) = 1*16+7




다뤄볼 자료는 reversing tutorial 1 에서 만져봤던 것이었다.

1에서는 어셈블리어를 수정해서 목적지로 도달하는 방법이었으면

이번에는 더 세부적으로 코드를 이해하고 원하는 방식을 만족시켜 해결하는 방법이었다.



먼저 저번과 같이 createFile 함수를 자세히 알아보기로 했다.




F8로 진행시켜보면

위 함수를 실행하고 나서 EAX에 반환값을 가지고 비교해서 -1이면 프로세스가 끝난다.


Filename = "Keyfile.dat"를 찾는 것을 알수 있다.





메모장을 이용하여 프로그램이 원하는 파일을 만들어 주고 실행해 주었다.



keyfile.dat만으로는 부족한가 보다.



더 아래로 내려가다보면 ReadFile이 있다.




파일을 읽어내는 함수 인것같다.



ReadFile이후로

XOR EBX,EBX    XOR ESI,ESI

EBX와 ESI를 0으로 초기화 시켜준다


그리고 CMP DWORD PTR DS:[402173], 10 파일이 저장된곳이 402173이다

파일을 읽고 0x10=>17 (16진법을 10으로 바꿔준다면) 

17개를 넘지않는지 비교한다.

이보다 작으면 실패하는곳으로 보낸다.


MOV AL, BYTE PTR DS:[EBX+40211A]

읽은 값을 AL에 저장한다.


CMP AL, 47

AL을 HEX 47과 비교한다 유니코드로 변환하자면 47은 G


47과 같으면 ESI,EBI를 증가시키고

아닐경우 EBI를 증가시킨다.


CMP ESI,8

8과 비교해서 점프시킨다.


위의 내용을 봤을때 G를 8개이상 넣고 16글자 이상이 되야한다는것이다.









고찰: 어셈블리어에 대해 더 자세히 알고 한 문제를 푸는 다양한 방법을 익힘

'정보보안 > Lena's Reversing Tutorial' 카테고리의 다른 글

Lena's Reversing Tutorial 6  (0) 2022.09.12
Lena's Reversing Tutorial 5  (0) 2022.08.16
Lena's Reversing Tutorial 4  (0) 2022.08.15
Lena's Reversing Tutorial 3  (0) 2019.01.07
Lena's Reversing Tutorial 1  (0) 2019.01.03