목록리버싱 (16)
안 쓰던 블로그
프로그램을 실행하면 CD롬을 채우라고 하고 확인을 누르면 실패 메시지가 뜬다 올리디버거에서 문자열을 찾아본다 바로 나왔다 해당 주소로 이동한다 보통 이런 성공/실패 선택지는 분기문 기준으로 나뉘기 때문에 그 주변만 가면 다 확인 가능하다 cmp eax, esi: eax, esi를 비교해서 je: 두 값이 같으면 점프 근데 eax, esi값이 다르기 때문에 점프 안 하고 바로 아래로 진행되어 실패 메시지 박스를 출력했었다 실행 흐름을 바꿀 수 있는 방법 je를 jne로 바꿔서 같지 않으면 점프로 수정 보기->파일패치 로 .exe확장자로 뽑는다
주요 레지스터 EAX: 산술, 논리연산. 함수 반환값 저장 EDX: 곱셈, 나눗셈 연산. EAX레지스터랑 함께 사용 ECX: 반복 명령어 사용시 반복 카운터로 사용되는 값 저장 ESP: 스택 프레임에서 스택 가장 끝 지점 주소 저장. Push, Pop명령에 따라 4바이트씩 이동 EBP: 스택프레임의 스택 시작 지점 주소 저장. 스택 프레임 소멸되기 전까지 값 변화 없다 주요 어셈블리 명령어 MOV: 시작지에서 목적지로 데이터 복사 (대입) PUSH: 스택에 값을 넣는다 (ESP의 값이 4만큼 줄어들고 새로운 값 들어감) POP: ESP레지스터가 가리키고 있는 위치의 스택 공간에서 4바이트만큼을 피연산자에 복사 후 ESP레지스터값+4한다 CALL: 함수 호출 시 사용(호출 후 반환된 값은 EAX에 저장) ..