서버 및 어셈블리어 관련 설정
서버 관련 설정
본인의 서버 / 에 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) |