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 |