728x90
• r/m32 - 피연산자 크기 속성이 32비트인 명령어에 사용하는 더블워드 범용 레지스터
• ADD: 더하기 / SUB: 빼기
> 목적지는 r/m32 또는 레지스터
> 출발지는 r/m32 또는 레지스터 또는 상수값
> 출발지와 목적지가 모두 r/m32일 수는 없음 [메모리 <-> 메모리 불가능]
> OF, SF, ZF, AF, PF, CF에 영향
> c언어에서 int a // 선언!! -> 그럼 sub esp, 8 // 이런식으로 4byte의 공간을 만들어준다!
-- 해당 코드의 순서도 --
- 1-
0
1
2 0 <- eax
3
4
- 2 -
0
1
2 0 <- eax, esp // 여기서 esp - 8 <- eax
3 0
4 0 < - esp
그 다음 각각의 위치에 숫자를 넣어주는 / eax-4 는 한칸 아래를 의미한다!
그럼 실제 프로그램을 돌리면서 실행!
명령 한 줄 실행하면 eax, esp가 같은 곳을 가르키는 것을 알 수 있다.
한 줄 더 실행하면
한 줄 더 실행하면 1이 들어간 것을 확인할 수 있다.
==
더하기, 곱셉, 나누기 도 비슷한 논리이다!!
- > 추가적으로 공부 필요!
728x90
반응형
'Reverse engineering > 리버싱 분석 강의 정리' 카테고리의 다른 글
리버싱#1 - lea 명령어! mov 명령어와 차이는? (0) | 2021.03.02 |
---|---|
리버싱#1 - mov 명령어 배우기 (0) | 2021.03.01 |
리버싱#1 - segmentation fault 에러 해결하기! (0) | 2021.03.01 |
리버싱#1 - gdb 명령어 사용하는 방법! (0) | 2021.03.01 |
리버싱#1 NASM(넷와이드 어셈블러) 사용법 (0) | 2021.02.25 |
댓글