2016-11-09 14 views
1

나는 python 스크립트 (단지 메시지 상자)를 작성하고 pyInstaller를 사용하여 실행 가능하게 만듭니다. PowerShell 스크립트 Invoke-ReflectivePEInjection.ps1을 사용하여 해당 exe 파일을 반사 적으로로드하려고하지만 powershell에서 오류가 발생했습니다 (PE 파일은 ASLR을 지원하지 않습니다)exe ​​파일의 ASLR을 활성화하는 방법

파이썬 스크립트에서 ASLR 호환 EXE 파일을 만들 수있는 방법이 있습니까?

답변

1

PE 파일 설정을 변경하는 데 사용할 수있는 editbin이라는 도구가 있습니다. 귀하의 경우 /DYNAMICBASE/HIGHENTROPYVA이 적용되는 것으로 보입니다. 실행 파일을 만든 후에 해당 도구를 사용하십시오.

+0

감사합니다 .. 여전히 [링크] (https://imgur.com/a/QFRLk) – john

+0

@ 존 충돌한다 : 당신은 확신 그것은 64 비트/32 비트 문제가 아니에요? –

+0

32 비트 Windows 8.1을 사용하고 있습니다. linux file 유틸리티를 사용하여 두 번 확인했습니다. "msgbox.exe : PE32 실행 가능 (콘솔) MS Windows 용"Intel 80386 (외부 PDB에서 벗겨짐) " – john

0

그러므로 모든 절대 메모리 참조가 파손됩니다 How do I determine if an EXE (or DLL) participate in ASLR, i.e. is relocatable?

ASLR이 자료 주소가 무작위 의미를 참조하십시오. 즉, 컴파일러와 링커가 기본 주소가 0x04000000이고 0x0400102F에 대한 절대 메모리 참조가 있다고 가정하지만 모듈이 실제로 0x05000000에로드되면 0x01000000을 0x0400102F를 참조하는 컴퓨터 코드에서 하드 코드 된 절대 주소에 추가해야합니다 이제 0x0400102F를 참조합니다. 이 코드 픽스 업은 기본 재배치라고하며, 실행 파일이로드 될 때 Windows 로더에 의해 수행됩니다. 장소는 논리적으로 읽을 수있는 경우에만 실행 파일에 포함됩니다.

파일 헤더의 특성 필드에 설정된 IMAGE_FILE_RELOCS_STRIPPED (0x0001) 비트 플래그가 설정된 경우이 실행 파일에는 재배치가 없으므로 헤더의 기본 주소 이외에는 배치 할 수 없습니다. 따라서 ASLR을 활성화하면 이 실행 파일은 메모리 참조가 올바르지 않기 때문에 중단됩니다. 또한로드 타임 재배치가 필요없이 메모리에 배치 된 위치에서 올바르게 실행되는 위치 독립적 코드를 작성할 수 있습니다. 내가 EDITBIN하지만 PowerShell을 사용하여 이러한 작업 및/NXCOMPAT 플래그를 모두 설정 한 회신에 대한