gdb2 리버싱#1 - add, sub 명령어 배우기! • 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 2021. 3. 2. 리버싱#1 - gdb 명령어 사용하는 방법! - 먼저 작성 코드 확인 - gdb a.out 실행 - disassemble = disas 명령어 실행 여기서 % = AT&T 방식의 경우 레지스터를 %형식으로 사용 인텔 방식을 사용할 경우에는 표현 방식을 변경 해 주어야 한다. run으로 프로그램을 시작해보면, Segmentation fault 에러 발생!! 그래서 Breakpoint를 만들어 주어야한다! 0x08048060 첫 번째 줄에 breakpoint가 걸렸다! tip - breakpoint 할 때 b main+7 하면 오류!! 위치를 지정할 시! *main+7 이렇게 해야 한다! 현재 지금 프로그램의 문맥의 위치가 화살표로 표시되어있다! 아직 저 push 명령어 실행 전! 현재 문맥에서의 register의 값들이 다 나오게 된다! eip - .. 2021. 3. 1. 이전 1 다음 728x90 반응형