SystemHacking/Assembly(15)
-
[3] 어셈블리 text section / mov / lea
[ 명령어 ] 1. MOV 할당 연산자와 비슷한 개념 mov r/m reg mov reg r/m mov r/m 상수 기본적인 형태 : mov dst, src ( src,dst 에 memory가 올 수 는 없다 ) 1-1> 레지스터에 데이터 저장하기 mov eax, 10 ; eax레지스터에 상수 10을 저장 1-2> 메모리에 데이터 저장하기 mov 크기 [레이블], 값 ; 레이블에 해당하는 주소안에 '크기' 만큼의 공간에 값을 저장 [ #vi operator.asm ] [ 코드 설명 ] extern printf section .data argv1: db '%d', 10, 00 test_1: dd 10 section .bss memory1: resd 1 section .text global main main..
2017.10.17 -
[2] 어셈블리 문자열 표현방식 / 데이터단위 / 레지스터 종류
NASM 이라는 어셈블러를 사용하도록 하겠습니다 NASM 에서는 한 개의 문자나 문자열 모두 ' ' 로 표현합니다 또한 문자와 문자를 , 를 사용해서 연결합니다 1> 'abcd' = 'ab' , 'cd' 2> 'Hello, World!!!' , 10 , 00 10과 00 은 무엇일까? 아스키 코드 10 => New Line ( Enter ) 아스키 코드 00 => NULL ( 문자열의 끝을 알림 ) * 어셈블러 기본 데이터의 단위 단위 크기 C NASM(문자로표현) byte 1 char b word 2 short w double word 4 int,long, float(32bit기준) d pointer(32bit기준) quad word 8 long long, double q ten byte 10 * 어셈..
2017.10.16 -
[1] 어셈블리 배경지식 / xxd, objdump 명령어 사용법
어셈블러를 하기 전에 알아두어야 하는 것은 ELF 라는 리눅스 실행파일 구조이다 리눅스에서 실행파일들을 ELF 라는 구조를 가지고 파일시그니쳐에 ELF 가 있다 ELF의 형식을 간단히 표현하자면 다음과 같다 [ ELF 구조 ] : 여러개의 섹션들로 나뉘어 진다 1> .text section 명령어가 들어가있는 섹션 - 실행코드가 존재하는 역역 - 읽기전용 - 실행가능한 메모리 영역 - 기계어 코드 ( 0 , 1 ) 이다 2> .rodata section - 읽기만 가능한 데이터이다 3> .data section -읽기,쓰기가 가능한 메모리 영역 - 초기값을 가지는 글로벌 변수 ex) 전역변수 4> .bss 섹션 - 읽기,쓰기가 가능한 메모리 영역 - 초기화 되지 않은 데이터 영역 - 초기값이 없는 글로벌..
2017.10.15