목록SISS (2017-2018) (69)
알맹이방
이번 5단원에서는 메모리를 사용하는 방법에 대해 알아보자. 기본적으로 알아야 할 개념은 하나의 메모리 주소에는 한 바이트를 표현할 수 있다는 점이다. 어셈블리어로 표현하는 방법은 []안에 주소값을 넣는 것이다. 주소값의 숫자는 16진수이며, 해당하는 메모리의 공간을 가리키게 된다. 올리디버그의 왼쪽 아래 공간이 메모리를 나타내는 부분이다. 왼쪽의 Address가 메모리 주소, 오른쪽 Hex dump 부분이 데이터 부분이다. 운영체제가 그 많은 메모리 중에 너 이부분 써라. 해서 우리가 메모리를 사용할 수 있는 부분을 보여주는 것이다. 메모리에 값을 넣는 방법은 명령어 창에서 mov [402000(메모리 주소)], al 이렇게 하면 되는데 이 명령어의 의미는 al에 있는 값을 메모리 402000번지에 넣어..
메인보드이다. 메모리는 CPU에 가까울수록 빠르다고 할 수 있다. 메모리의 특성을 비교해보자면, 용량 : CPU(레지스터,캐시)HDD 용량과 속도는 반대라는 것이다. 예를 들어서 가게에서 두부 2000원을 샀다고 하자, 샀다는 것을 기억하는 것 = 레지스터 기록해놓은 종이, 영수증 = 램 영수증을 모아두는 가계부 = HDD 구조상 SSD를 써도 RAM이 훨씬 빠르다고 한다. CPU의 메모리 구조를 보자. 전기신호가 있으면 1이고 없다면 0이라고 하자. 전구로 비유해서 이렇게 끊어졌다고 하면 0이다. 전구 2개를 이용해서 1과 0을 동시에 표현해 2비트를 표현할 수 있다. CPU로 표현하면 전기신호가 세면 1, 약하면 0으로 한다. 전구를 8개를 한번에 연결한다면 8비트가 되는 것이다. 8비트의 메모리 1..
레지스터와 레지스트리는 비슷한 단어이지만 다른 저장공간이므로 각별히 주의하자. 레지스트리 : 윈도우에서 시스템의 다양한 설정값들을 저장하기 위한 저장 공간 레지스터 : CPU 내에 있는 가장 빠른 저장 공간 앞에 글에서 했던 것처럼 전체를 다시 시작할 수도 있지만 특정 부분에서 다시 시작할 수도 있는데 그 때는 그 특정 부분을 클릭하고 좌클릭해서 new origin here (ctrl+*)을 누르면 된다. 앞에 글에서는 eax라는 레지스터 공간에 값을 저장한다라고 설명했지만 정확히 말하자면 덮어쓰기의 개념으로 설명된다. 이 점은 C언어에서의 변수의 기초 개념으로 많이 다루었기 때문에 자세한 건 생략한다. 명령어를 mov eax,0 mov ecx, 1 mov ebx, 2 mov edx, 3 으로 하고 실행..
어셈블리어 스터디는 유튜브 강의를 보면서 진행하기로 했습니다. 어셈블리어 : 기계어를 일정한 규칙에 따라 문자에 대응 시킨 것이다. 기계어는 CPU의 명령어를 숫자로 표현한 것이다. 또, CPU의 명령어는 CPU제조 회사에사 일정한 규칙을 두고 절한다. 즉, 어셈블리어는 CPU와 직접 대화할 수 있는 언어라고 할 수 있다. 내가 생각하기에는 파이썬과 C언어 같은 언어보다 조금 더 기계적이다라고 느꼈다. 어셈블리어는 masm, nasn 과 같은 프로그램을 사용할 수도 있지만 이 강좌에서는 디버깅을 통해 어셈블리어를 배울 것이기 때문에 ollydbug를 사용한다. 이 점은 윈도우 리버싱을 할 때의 프로그램과 같아서 추가적으로 설치하지는 않았다. 기본적으로 알고 있는 명령어와 피연산자의 개념. 이 부분은 쉽게..