저는 Aleph One's awesome introduction to smashing the stack을 따르고 있습니다.하지만 저는 그가 가지고있는 예제 프로그램 중 하나를 실행하는 데 어려움을 겪었습니다. 문제는 라인 jmp 0x2a
을 컴파일하고 분해하면 정확한 라인이 생성되는 반면, 알레프 코드에서는 jmp 0x800015f <main+47>
으로 변환된다는 것입니다. 어떻게하면 gcc가 절대적인 것이 아닌 상대적으로 점프하도록 만들 수 있습니까 (이것은 내가 생각하는 것입니다).어셈블리에서 상대 점프를 수행하는 방법은 무엇입니까?
2
A
답변
1
문제는 0x2a
입니다. 절대 주소처럼 보이지만 원하는 것은 상대 주소입니다.
목적지에 라벨을 지정하고 점프하면 다음과 같이 수행 할 수 있습니다. 어셈블러는 대부분 상대 시간 점프를 생성하는 것을 선호합니다. 또는 상대 주소를 사용하십시오. 대부분의 어셈블러는 .+0x2a
과 비슷한 것을 허용합니다. 여기서 .
은 현재 명령어 포인터를 나타내는 기호입니다. 일부는 $
을 대신 사용합니다.
관련 문제
- 1. 로컬 어셈블리에서 XmlnsDefinition 작업을 수행하는 방법은 무엇입니까?
- 2. DOS에서 상대 경로 역방향을 수행하는 방법은 무엇입니까?
- 3. 앵커의 점프를 삭제하는 방법은 무엇입니까?
- 4. 어셈블리에서 수행하는 작업
- 5. 네트워크 게임에서 위치 점프를 방지하는 방법은 무엇입니까?
- 6. XNA 게임에서 스프라이트 점프를 만드는 방법은 무엇입니까?
- 7. .NET 어셈블리에서 디렉토리 구조를 저장하는 방법은 무엇입니까?
- 8. 조건부 점프가 8086 어셈블리에서 벗어났습니다
- 9. 어셈블리에서 DWord를 인쇄하는 방법은 무엇입니까?
- 10. 어셈블리에서 문자열을 비교하는 방법은 무엇입니까?
- 11. x86 어셈블리에서 탭 언론을 잡는 방법은 무엇입니까?
- 12. 어셈블리에서 음수를 하나로 사용하는 방법은 무엇입니까?
- 13. Apache에서이를 수행하는 방법은 무엇입니까?
- 14. 아키텍처를 수행하는 방법은 무엇입니까?
- 15. UIScrollView에서이를 수행하는 방법은 무엇입니까?
- 16. listview에서 수행하는 방법은 무엇입니까?
- 17. 데이터베이스에서이를 수행하는 방법은 무엇입니까?
- 18. 상대 시간을 파싱하는 방법은 무엇입니까?
- 19. 상대 날짜를 확인하는 방법은 무엇입니까?
- 20. 어셈블리에서 제네릭 형식을 추출하는 방법은 무엇입니까?
- 21. 어셈블리에서 참조하는 어셈블리를 찾는 방법은 무엇입니까?
- 22. 어셈블리에서 웃는 얼굴 문자를 인쇄하는 방법은 무엇입니까?
- 23. ARM 어셈블리에서 배열을 올바르게 작성하는 방법은 무엇입니까?
- 24. 특정 어셈블리에서 네임 스페이스를 참조하는 방법은 무엇입니까?
- 25. 전역 변수를 어셈블리에서 '멀리'로 정의하는 방법은 무엇입니까?
- 26. 어셈블리에서 -128에서 127 범위를 벗어나는 방법은 무엇입니까?
- 27. x86 어셈블리에서 어레이를 증가시키는 방법은 무엇입니까?
- 28. 파일 이름을 사용하여 어셈블리에서 usercontrols를로드하는 방법은 무엇입니까?
- 29. .NET 어셈블리에서 이진 파일을 검색하는 방법은 무엇입니까?
- 30. Silverlight 어셈블리에서 모든 리소스를로드하는 방법은 무엇입니까?
'. + 0x2a'가 완벽하게 작동했습니다. 정말 고마워요! – Xantos