f2 bp 브레이크 포인트 설정
f7 코드 한 줄 실행(call의 경우에는 함수 진입)
f8 코드 한 줄 실행(call그냥 지나침)
f9 프로그램 실행
ctrl + g 주소 이동
-, + 이전, 다음 주소로 이동
enter 분기문에서 target 주소로 이동
space 어셈블리 코드 수정
문자열 참조 - 이 위치가 참조하는 문자열 위치를 찾아냄
0040100B: 55 - push ebp > EBP 레지스터의 값을 스택에 push (함수의 시작에서 호출자의 bp 보존하는데 사용)
0040100C: 8BEC - mov ebp, esp > ESP 값을 EBP 레지스터로 이동( 새로운 스택 프레임의 베이스 포인터를 설정)
0040100E: 53 - push ebx > ebx 레지스터의 값을 스택에 push(함수가 ebx를 수정하기 전 원래의 값을 보존하기 위해 사용)
0040100F: 56 - push esi > ebi 레지스터의 값을 스택에 푸시 (주로 데이터를 처리할 때 인덱스 레지스터로 사용)
00401016: E8 79010000 - call 00401194 >주소의 함수를 호출
nop 없는 문자열
nop에서 space로 편집하기
ctrl e -> hax데이터 편집 (여러개도 가능)
ctrl + G 어셈블리 이동 (주소값, 레지스터 이름 들어감)
시작값으로 돌아갈때
시작점에서 enter 후 ; + enter 주석을 추가함
여기에 eip 설정
-강제로 eip 옮겨서 진행 > 강제로 알고리즘 확인 권장 하지는 않음
실습
-아쉽네요 메세지를 훌륭하게 변조했군요 로 출력하게
sleep 함수
push 를 0으로 변경 / sleep 을 nop 처리를 함 /