GaGe

어셈블리어 1, 2 본문

SISS (2017-2018)/어셈블리어

어셈블리어 1, 2

Sorrel 2018. 7. 2. 17:17

어셈블리어 스터디는 유튜브 강의를 보면서 진행하기로 했습니다.




어셈블리어 : 기계어를 일정한 규칙에 따라 문자에 대응 시킨 것이다. 기계어는 CPU의 명령어를 숫자로 표현한 것이다. 또, CPU의 명령어는 CPU제조 회사에사 일정한 규칙을 두고 절한다.

즉, 어셈블리어는 CPU와 직접 대화할 수 있는 언어라고 할 수 있다.


내가 생각하기에는 파이썬과 C언어 같은 언어보다 조금 더 기계적이다라고 느꼈다.



어셈블리어는 masm, nasn 과 같은 프로그램을 사용할 수도 있지만 이 강좌에서는 디버깅을 통해 어셈블리어를 배울 것이기 때문에 ollydbug를 사용한다.

이 점은 윈도우 리버싱을 할 때의 프로그램과 같아서 추가적으로 설치하지는 않았다.



기본적으로 알고 있는 명령어와 피연산자의 개념.
이 부분은 쉽게 넘어가기로 한다.



ollydbug를 켜면 나오는 화면이다.
왼쪽 상단은 명령어와 피연산자가 쓰이는 부분 즉, 어셈블리어가 있는 화면이다.
오른쪽 상단은 레지스터가 있는 부분이다. 레지스터는 아래에서 더 자세하게 설명하겠다.
왼쪽 하단은 주소값을 볼 수 있고 오른쪽 하단은 스택이 쌓이는 부분이다.



어셈블리어 쪽을 두번 클릭하면 직접 명령어를 넣을 수 있다.

mov eav,1

명령어와 피연산자 사이에는 띄어쓰기로 구분하고 피연산자들 사이에는 ,로 구분한다.

mov의 뜻은 eav라는 곳에 1을 넣는다라는 의미가 있다고 간단히 설명했다.


이렇게 assemble을 클릭하면 화면에 코드가 뜬다.



레지스터라 함은 CPU에 있는 임시저장공간인데, CPU가 연산을 할 때 중간과정의 결과들을 저장하는 용도로 쓰인다.



예를 들면, 4×5÷2를 계산한다고 하면 먼저 4×5를 하는데 4×5의 결과값을 잠시 레지스터에 저장한 다음, CPU가 그 결과값을 갖고 다시 ÷2를 하는 것이다.



위 버튼이나 F8의 step over을 누르면 해당 줄의 명령어가 처리된다.



오른쪽 eax스택에 1이 저장된 것을 알 수 있다.



다시 원래대로 돌아가려면 왼쪽 위 restart 버틍나 ctrl+f2를 누르면 된다.
Comments