ELF 실행 파일(Linux)을 PE.exe(Windows)로 변환

ELF 실행 파일(Linux)을 PE.exe(Windows)로 변환

나는 기계어 파일을 사용하는 초보자입니다!!!

ELF(Linux)로 얻은 기계어 실행 파일을 Windows용 exe 파일에 사용해야 합니다. 'objconv'를 시도했지만 형식에서는 '-fPE'를 사용하도록 제안했지만 이를 사용하면 명령줄에 '오류 2004 알 수 없는 명령줄' 및 '오류 2103은 입력 파일을 읽을 수 없습니다'라는 메시지가 나타납니다. Linus와 Windows 플랫폼 사이에 약간의 비호환성이 있는 것 같습니다.

답변1

기본 개체 코드는 플랫폼 간에 동일할 수 있지만 중요하지 않은 기본 응용 프로그램은 Windows와 Linux 간에 바이너리 호환될 수 없습니다.

변환하려는 Linux 실행 파일이 동적으로 링크되어 있는 경우 Windows에 존재하지 않는 라이브러리가 있어야 합니다( ldd /path/to/programLinux 시스템에서 실행하여 이 라이브러리 목록을 볼 수 있음).

모든 라이브러리를 PE 실행 가능 형식으로 변환하거나 정적으로 링크한 경우에도 시스템은NT 커널그리고리눅스 커널완전히 다릅니다. 그들 사이에는 직접적인 일대일 대응이 없습니다.

가장 좋은 방법은 가능하다면 원본 애플리케이션의 소스 코드를 찾는 것입니다. 프로그램이 이식 가능한 방식으로 작성된 경우 Windows와 Linux 모두에서 컴파일될 수 있습니다. 시스템 호출이 두 플랫폼 간에 동일하지 않더라도 C 라이브러리 구현의 하위 집합에는 표준화된 동작이 있습니다.

답변2

이것은 거의 확실히 작동하지 않을 것입니다. Linux와 Windows는 서로 잘 어울리지 않습니다. "변환"하려는 응용 프로그램은 Windows용 소스에서 다시 빌드해야 합니다(Windows 관련 패치가 필요함). 운 좋게도 실행하려는 응용 프로그램에는 이미 Windows 포트가 있습니다.

답변3

아마도 당신은 이것을 읽어야 할 것입니다 https://github.com/microsoft/ebpf-for-windows/blob/main/docs/NativeCodeGeneration.md

관련 정보