물마중
[리버스_0x02] 함께 공부하는 Reversing_3 본문
편집자: 엔시스(sis@sis.pe.kr)
출 처: 보안인닷컴 팀 블로그[http://boanin.tistory.com]
2. tools and target
스스로 해결해 보는 것이 리버싱을 익히는데 가장 좋은 방법일 것이다.
3. the use of plugins
이 플러그인을 실행하고 나면, 프로그램 하단에 11개의 알려진 함수가 존재한다고 분석결과를 알려준다.
The CreateFile function creates, opens, or truncates a file, pipe, communications resource, disk device, or console. It returns a handle that can be used to access the object. It can also open and return a handle to a directory.
1번 문제를 풀었던 기억을 되살려 보면, 이 부분에서 에러 메시지가 뜬다는 것을 알 수 있다.
The ReadFile function reads data from a file, starting at the position indicated by the file pointer. After the read operation has been completed, the file pointer is adjusted by the number of bytes actually read, unless the file handle is created with the overlapped attribute. If the file handle is created for overlapped input and output (I/O), the application must adjust the position of the file pointer after the read operation.
BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // address of buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // address of number of bytes read
LPOVERLAPPED lpOverlapped // address of structure for data
);
- TEST A, B- A와 B를 &(ampersand) 연산을 수행하되, 그 결과를 저장하지는 않는다.- 대신에 Flag만 변화시킨다.- 연산후의 결과값이 0일 경우, ZF(Zero Flag)가 1로 설정되고, 그렇지 않다면 0으로 설정된다.
ex) EBX = 0011010100110101xor 00110101-------------00000000
-
모든 값은 16진수를 의미한다.
-
그러므로, 10h == 16d 이며,
-
[....]는 일종의 pointer를 의미하며, 주소값이 가지고 있는 실제 값을 말한다.
-
그러므로, ReadFile로 읽어들인 숫자가 16개 보다 작으면 실패 메시지로 간다.
ESI 레지스터는 주로 반복문에서 counter를 제어하는데 쓰인다.for(i=0; i<n; i++) 에서 변수 i의 역할을 한다고 생각하면 쉽게 이해할 수 있을 것이다.
그러나 esi는 시작할 때 xor연산으로 초기화 시켜놓았기 때문에 0이다.
그러므로 G가 모두 8개가 있어야 한다는 사실을 쉽게 유추해 볼 수 있다!
[KeyFile.dat]GGGGGGGG00000000
5. testing the keyfile
1. 바이트를 얼마나 읽나?
-
16d(== 10h) bytes
-
이 말은 곧, KeyFile에 16개의 문자가 들어가 있어야 함을 나타낸다.
2. 몇개의 G를 찾나?
-
8개
6. conclusing
이제 프로그램을 실행해도 더이상 실패 메시지가 뜨지 않는 것을 확인 할 수 있다.
이번장을 학습하면서 라이센스를 요구하는 프로그램들을 어떻게 크랙하는지 간단한 예제를 통해 학습할 수 있었다. 하지만, 이 것을 보고 나쁜 생각을 하는 분들이 없기를 바라며 이번 강의를 마친다.
'Reverse Engineering > Reversing 이론 설명' 카테고리의 다른 글
[리버스_0x05] Reverse Engineering을 위한 준비운동 (0) | 2011.01.18 |
---|---|
[리버스_0x04] 함께 공부하는 Reversing_5 (0) | 2011.01.18 |
[리버스_0x03] 함께 공부하는 Reversing_4 (0) | 2011.01.12 |
[리버스_0x01] 함께 공부하는 Reversing_2 (0) | 2011.01.12 |
[리버스_0x00] 함께 공부하는 Reversing_1 (0) | 2011.01.12 |