Linux 사용자 공간 프로세스에서 Vsyscall 페이지의 주소는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2403728

  •  18-09-2019
  •  | 
  •  

문제

본인의 용도로 vsyscall 페이지의 주소를 얻고 싶습니다. 여기에는 두 가지 아이디어 만 있습니다. 컴파일러를 변경 하여이 정보를 __start 또는 read/proc/[pid]/맵에 제공 한 후 알려진 위치 에이 정보를 저장하십시오. 느리기 때문에 읽고 싶지 않아요. 또한 컴파일러 수정을 원하지 않습니다. 누구든지 대안이 있습니까? 내가 알아야 할 상징이 있습니까?

그 시점에서 나는이 기능을이 작품의 일부로 개발 한 모듈에서 IOCTL 호출에 적용하고 싶은 유혹을 받고 있습니다!

도움이 되었습니까?

해결책

여기 어둠 속에서 찌르는 것입니다.

프로세스 스택이 시작된 주소로 결정할 수 있다면 제공된 매개 변수를 찾을 수 있습니다. __start. 그런 다음 초기 스택 포인터에서 해당 오프셋으로 설정된 적절한 유형의 포인터를 통해 매개 변수에 액세스 할 수 있습니다.

기사에 따르면 Hyouck "Hawk"Kim에 의해 Linux에서 Main ()가 실행되는 방법, 처음 몇 가지 지침 __start 전화하기 전에 초기 인수를 결정 론적으로 작성합니다. __libc_start_main.

분명히 이와 같은 모든 접근 방식은 플랫폼 별이며 __start 변경되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top