서버 및 어셈블리어 관련 설정

서버 관련 설정

본인의 서버 / 에 st(IP) 로된 폴더를 만들고 chmod 777 st(IP)로 권한 부여 해준 후 backup.sh 작성

#!/bin/sh
set $(date)
fname="backup-home$1$2$3.tar.gz"
tar cvzf /st(IP)/$fname /home
    

rsync.sh 작성

#!/bin/sh
rsync -avz --exclude-from=/etc/rsync_exclude.lst /st(IP) 192.168.0.94::backup
    

.sh 파일에 777로 권한 부여 후 ./로 실행

어셈블리어 레지스터 설명

EAX: 사칙연산 등 산술 연산에 자동으로 사용되며, 함수의 반환 값을 처리할 때도 사용됩니다.

EBX: 간접 번지 지정에 사용됩니다. 산수, 변수를 저장합니다.

ECX: 반복(Loop)에서 반복 Count 역할을 수행합니다.

EDX: EAX를 보조하는 역할을 합니다. 예를 들어 나누기를 진행할 경우 몫은 EAX에 나머지는 EDX에 저장됩니다.

ESI: 복사나 비교를 할 경우 출발지 주소를 저장하는 레지스터입니다.

EDI: 복사나 비교를 할 경우 목적지 주소를 저장하는 레지스터입니다.

EIP: 다음에 실행할 명령어의 주소를 가지고 있는 레지스터입니다. 현재 실행하고 있는 명령어가 종료되면 이 레지스터에 있는 명령어를 실행하게 됩니다.

ESP: Stack Pointer의 가장 최근에 저장된 공간의 주소를 저장하는 레지스터입니다.

EBP: Stack Pointer의 기준점(바닥 부분)을 저장하는 레지스터입니다.

자주 사용하는 어셈블리어 명령어

명령어 설명 용도
push push eax eax의 값을 스택에 저장 (스택 조작)
pop pop eax 스택 가장 상위에 있는 값을 꺼내서 eax에 저장 (스택 조작)
mov mov eax, ebx 메모리나 레지스터의 값을 옮길 때 사용 (데이터 이동)
inc inc eax eax의 값을 1 증가시킨다 (++), 데이터 조작
dec dec eax eax의 값을 1 감소시킨다 (--), 데이터 조작
add add eax, ebx 덧셈할 때 사용 (논리, 연산)
sub sub eax, ebx 뺄셈할 때 사용 (논리, 연산)
call call proc 프로시저를 호출한다 (프로시저)
ret ret 호출했던 바로 다음 지점으로 이동 (프로시저)
cmp cmp eax, ebx 두 값 비교 (비교)
jmp jmp proc 특정한 곳으로 분기 (분기)
int int $0x80 OS에 할당된 인터럽트 영역을 system call (인터럽트)
nop nop 아무 동작도 하지 않는다 (No Operation)

어셈블리어 명령어 분류

Data Transfer (데이터 전송)

명령어 설명
MOV 데이터 이동 (전송)
PUSH 오퍼랜드의 내용에 스택을 쌓는다
POP 스택으로부터 값을 뽑아낸다
XCHG 첫번째 오퍼랜드와 두번째 오퍼랜드 교환
IN 오퍼랜드로 지시된 포트로부터 AX에 데이터 입력
OUT 오퍼랜드가 지시한 포트로 AX의 데이터 출력
XLAT BX:AL이 지시한 데이블의 내용을 AL로 로드
LEA 메모리의 오프셋값을 레지스터로 로드
LDS REG←(MEM), DS←(MEM+2)
LES REG←(MEM), ES←(MEM+2)