본문 바로가기
반응형

어셈블리어9

[리버싱] 레지스터에 대해 알아보자 레지스터란? CPU 내부에 존재하는 작은 고속의 메모리이다. 레지스터의 종류 위 레지스터들은 범용레지스터, 인덱스레지스터, 포인터레지스터라고 한다. 32비트 환경에서는 첫 글자가 E(Extended)로 시작한다. 64비트 환경에서는 첫 글자가 R(Register)로 시작하고 32비트의 레지스터를 포함한다. 범용 레지스터 AX(Accumulator) : 연산에 사용 BX(Base) : 메모리 주소 지정 시 사용 CX(Counter) : 반복과 같은 상황에 사용 DX(Data) : EAX와 함께 연산, 부호확장 인덱스 레지스터 SI(Source) : 메모리를 이동 및 비교 시 해당 주소 DI(Destination) : 메모리 이동 및 비교 시 목적지 주소 포인터 레지스터 IP(Instruction) : 다음.. 2017. 8. 23.
[리버싱] 어셈블리어 명령어 어셈블리어 명령어 push : 스택에 저장pop : 스택 가장 상위에 있는 값을 꺼내서 저장mov : 메모리나 레지스터 값을 옮길 때 사용lea : 주소값을 옮길 때 사용inc : 1 증가dec : 1 감소add : 레지스터나 메모리의 값을 덧셈할 때 쓰임sub : 레지스터나 메모리의 값을 뺄셈할 때 쓰임call : 프로시져를 호출한다.※ 프로시져 : 어떤 행동을 수행하기 위한 일련의 작업 순서 (함수라고 생각하면 될 듯)ret : 호출했던 바로 다음 지점으로 이동cmp : 레지스터와 레지스터 값을 비교nop : 아무 동작도 하지 않는다(No Operation)jmp : 특정한 곳으로 분기 unsigned jump(=)je : jump equaljne : jump not equaljz : jump zer.. 2017. 8. 22.
[리버싱] 어셈블리어에 대해 알아보자 어셈블리어(Assembly language)란? - 기계어와 1대1 대응되는 컴퓨터 프로그램의 저급 언어. 어셈블러(Assember)란? - 어셈블리어로 작성된 소스 코드를 기계어로 변환하는 프로그램. 어셈블리어 구조CPU는 2진수로 모든 것을 처리하는데 어셈블리 명령어들도 2진수로 되어 있다. 하지만 2진수로 된 것은 알아보기가 힘들어 mov, add와 같은 형태로 변환하여 보여진다. mov %eax %ebx는 C언어로 보면 ebx = eax의 경우와 같다. eax에 저장된 값을 ebx에 할당한다. 어셈블리어 문법 (Intel vs AT&T) Intel 방식 - 가독성이 뛰어남. - 윈도우 환경에서 구동. - 오퍼랜드 위치 : mov dest, source - 메모리 오퍼랜드 : mov [eax], [.. 2017. 8. 21.
반응형