2010-01-29 4 views
6

운영체제의 Loader (실행 프로그램 로더가 아닌 부트 로더)를 대체 할 수 있는지 궁금합니다. (Windows가 저의 선택입니다). 사용할 수있는 제 3 자 로더가 기본 설정을 패치 할 수 있습니까?OS의 로더를 대체 할 수 있습니까? 로더에 대한 제어권을 얻는 방법은 없나요?

OS 로더에서 제어 할 수있는 방법이 있습니까? 내 말은, 내가하는 일이 나에게 보여지기를 바랄 뿐이다. 내가이 일을하려는 이유 당신이 저를 요구하는 경우에

, For learning purposes.

+1

부트 로더 또는 실행 로더? –

+0

'executable loader' – claws

답변

2

각 답변 & 개의 의견은 유용한 정보를 제공하고 있기 때문에. 방금 컴파일했습니다. 대답은 모두 &입니다.

이 로더 운영 시스템 (실행 프로그램 로더되지 부트 로더를) (Windows가 내 선택) 교체 가능하다면 난 그냥 궁금 해서요. 아니, 윈도우 프로세스 생성과의 ntdll에서 사용자 모드 로더 (PsCreateProcess 직접 방법 ntdll지도하고 모듈을 해결하고 프로세스를 설정을 완료 할 수 있도록로 이동합니다) 함께 연결되어

, 당신은 할 수 없습니다 그것을 대체하십시오.

그러나 프로세스의 형식과 로딩을 설명하는 리소스가 있습니다. 여기

는 아주 오래된하지만 여전히 매트 Pietrek이로 매트 Pietrek이 (MSDN 매거진 2002 년 2 월)
  • Part II. An In-Depth Look into the Win32 Portable Executable File Format (기준

    1. Part I. An In-Depth Look into the Win32 Portable Executable File Format PE 파일 (EXE + DLL)에 대한 MSDN 문서를 UPTODATE 당신이 내가 사용할 수 있습니다

    MSDN 매거진 2002 년 7 월) 주어진 실행 파일을 시작하는 앱을 작성하기위한 정보.

    Linux 및 elf 형식에 관심이 있다면 google에서 필요한 모든 것을 찾을 수 있습니다.

    OS 로더를 제어 할 수있는 방법이 있습니까? 내 말은, 내가하고있는 일이 (나 자신과 모든 단계)에게 보이기를 바란다.

    윈도우에, 당신은 로더 스냅을 활성화하여 직장에서 로더에 약간의 가시성을 얻을 수 있습니다. (Windows 용 디버깅 도구의 일부)을 사용하면됩니다. 좋은 참조 http://www.osronline.com/DDKx/ddtools/gflags_4n77.htm이 있습니다. Show Loader Snaps를 활성화하면 디버거 (WinDBG)에서 응용 프로그램을 시작하여 로더 추적 메시지를 볼 수 있습니다.

    이런 종류의 게임을하고 싶다면 리눅스는 이 가장 좋습니다.

    로더는 커널의 일부입니다.하지만 모든 커널 소스에 액세스 할 수 있기 때문에 마음껏 실행할 수 있습니다.

    다양한 바이너리 형식의 로더는 Linux 소스의 fs/binfmt_*.c입니다 (fs/binfmt_elf.c은 ELF 형식의 실행 파일에 사용되는 로더입니다. 대다수).

    동적 로더 /lib{,64}/ld-linux.so.2은 동적으로 링크 된 바이너리에도 사용됩니다. binfmt_elf.c의 코드에서 참조되는 "인터프리터"의 예입니다.

    리눅스에는 실행 가능한 파일 형식이 있으므로, 표준 프로그램 (ELF, 쉘 스크립트, binfmt_misc)이 아닌 실행 파일로 자체 커스텀 작업을 수행 할 추가 프로그램 로더를 추가 할 수 있습니다.

    binfmt_misc 모듈을 사용하면 사용자 공간에 실행 프로그램의 사용자 정의 로더를 작성할 수 있습니다. 이것은 일반적으로 자바, CLR 실행 파일 같은 비 고유 네이티브 바이너리 또는 해석 된 바이너리를 실행하는 데 사용됩니다.

    반면에 ELF 로더를 다른 것으로 바꾸려면 커널에서 직접 binfmt 모듈을 만들 수 있습니다 . 예를 들어 fs/binfmt_*을보십시오. ELF 로더 자체가 있습니다.

  • 5

    아니, 프로세스 생성과의 ntdll에서 사용자 모드 로더 (PsCreateProcess 직접 방법 ntdll지도하고 수 있도록으로 이동합니다 함께 연결되어 모듈 해결을 마친 후 프로세스 설정),이를 대체 할 수 없습니다.

    +0

    [API 후킹] (http://www.codeproject.com/Articles/2082/API-hooking-revealed)을 통해 좋지는 않지만 적어도 가능하지는 않습니까?) 또는 유사한 저레벨 차단 기술? – rubenvb

    3

    당신이 이런 종류의 일을하고 싶다면 리눅스가 가야합니다.

    로더는 커널의 일부이지만 모든 커널 소스에 액세스 할 수 있으므로 마음 속의 콘텐츠에 맞출 수 있습니다.

    +1

    실제로 Linux의 로더는 /lib{,64}/ld-linux.so.2입니다. –

    +3

    다양한 바이너리 형식의 로더는 리눅스 소스의'fs/binfmt _ *. c'에 있습니다 ('fs/binfmt_elf.c'는 ELF 형식의 실행 파일에 사용되는 로더입니다 - 대다수). Ignacio가 지적한 동적 로더'ld-linux.so.2'는 동적으로 링크 된 바이너리에도 사용됩니다 - binfmt_elf.c에있는 코드에 의해 참조 된 "인터프리터"의 예입니다. – caf

    1

    아니요, OS 로더를 바꿀 수는 없지만 프로세스의 형식과 로딩을 설명하는 리소스가 있습니다.

    다음은 주어진 실행 파일을 시작하는 응용 프로그램을 작성하는이 정보를 사용할 수 있습니다 http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

    PE 파일 (EXE + DLL)에 관한 아주 오래된하지만 여전히을 최신 상태 MSDN 문서입니다.

    Linux 및 elf 형식에 관심이 있다면 google에서 필요한 모든 것을 찾을 수 있습니다.

    2

    리눅스에는 실행 가능한 파일 형식이 있으므로, 표준 프로그램 (ELF, 쉘 스크립트, binfmt_misc)이 아닌 실행 파일로 자체 커스텀 작업을 수행 할 추가 프로그램 로더를 추가 할 수 있습니다.

    binfmt_misc 모듈을 사용하면 사용자 공간에 실행 프로그램의 사용자 정의 로더를 작성할 수 있습니다. 이것은 일반적으로 비 네이티브 바이너리 또는 자바와 같은 해석 바이너리를 실행하는 데 사용됩니다, CLR 실행 등이 직접 다른 사람이 binfmt 모듈을 만들 수 있습니다 뭔가와 ELF 로더를 교체 를 원한다면 한편

    커널. 예를 보려면 fs/binfmt_ *를보십시오. ELF 로더 자체가 있습니다.

    1

    OS 로더에서 제어 할 수있는 방법이 있습니까?내 말은, 내가하는 일이 나에게 보여지기를 바랄 뿐이다.

    Windows에서는 Loader Snaps를 활성화하여 작업 중 로더에 대한 가시성을 확보 할 수 있습니다. gflags.exe (Windows 용 디버깅 도구의 일부)를 사용하여이 작업을 수행 할 수 있습니다. 멋진 gflags.exe 참조 here이 있습니다. Show Loader Snaps를 활성화하면 디버거 (WinDBG)에서 응용 프로그램을 시작하여 로더 추적 메시지를 볼 수 있습니다.