일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- AWS
- jdbc programming
- 리눅스공부
- 데이터베이스프로그래밍
- sql
- 트랜잭션
- DB
- TDD
- 리눅스
- 개발방법론
- 시스템프로그래밍
- 명령어
- 데브옵스
- 클라우드
- EC2
- 자바
- 개발자
- CS
- 오라클
- dbms
- Database
- 공부
- 개발공부
- 클라우드네이티브
- 데이터베이스
- 쿼리최적화
- JDBC
- 서버
- 쿼리
- 컴퓨터
- Today
- Total
개발 블로그
[스무디] 어셈블리어 강의 29~32강 정리 본문
29강~30강 반복문 jecxz, loop, rotate
Loop 명령어: ecx가 0이 아닐 때 반복, ecx 값이 자동으로 1 감소
Loop [주소](반복할 부분)
LOOPE( LOOZ )-> zf=1이고 ecx가 0이 아닐 때 반복, 체크를 두 가지 해야할 때 사용
rotate 연산 -> shift 연산의 연장
-rotate에서는 밀려난 값을 최하위 혹은 최상위 비트에 넣음
ex) 0111 -> 1110
- left: 최상위 비트가 최하위 비트로 들어감
-right: 최하위 비트가 최상위 비트로 들어감
ror [r / m8] [1 / imm8 / cl]
rol
*1이 오는 경우는 기계어로 2바이트이고 임시값이 오면 4바이트임
*오버플로우 비트는 최상위 비트와 그 옆 비트가 다를 때 세팅됨
rcl:: 최상위 비트가 CF로 가고 CF가 최하위 비트로 감
*일반 로테이트 연산과 rcl 둘 다 캐리플래그를 사용하지만 rol에서는 최상위 비트가 CF를 덮어쓰고 그 값이 최하위 비트로 들어간다면 rcl에서는 CF 값을 최하위 비트로 추가함
rcr: 캐리 플래그 값이 최상위 비트로 들어가고 최하위 비트 값이 CF로 들어감
즉, ror과 rol에서 캐리 플래그는 그저 도구로만 사용됨
31강 not, neg
not 연산 -> 비트를 반전시켜줌
0은 1로 1은 0으로 반전
not r/m
negative -> 부호가 있는 정수에 대한 연산, 양수를 음수로 음수를 양수로 바꿈
not을 해준 후 1을 더함
neg r/m
32. call, ret
*스택: LIFO 구조
프로그램에서 함수 호출 시 사용
1. EIP에서 기계어 읽어옴(다음 실행할 명령어 주소)
2. 읽어온 바이트수 만큼 EIP값 증가
3. 기계어 실행
call : 함수 호출 시 사용
->스택에 다음 실행 주소가 들어감, 죽 EIP 값을 스택에 push
*esp: 데이터를 넣을 때마다 4씩 감소
ex) call 주소
ret: 함수 실행을 마치고 원래 있던 주소로 돌아감
> pop 후 EIP에 넣음
'해킹 및 보안 > 리버싱' 카테고리의 다른 글
[스무디] 어셈블리어 강의 정리 (18~22강) (0) | 2022.11.10 |
---|---|
[스무디]어셈블리어 강의 13~17강 정리 (0) | 2022.10.13 |
[스무디] 어셈블리어 강의 8~12강 정리 (0) | 2022.10.06 |
[스무디] 어셈블리어 강의4~7강 정리 (0) | 2022.10.02 |
[ 스무디 ] 어셈블리어 강의 1~ 3강 정리 (1) | 2022.10.02 |