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 |