어제부터 저는 Radare에 대한 분석을 수행하는 데 사용할 패키지를 다운로드하기 위해 ARMv8 32비트 패키지 저장소를 찾으려고 노력해 왔습니다. 저장소를 찾았습니다.아키텍처Linux그리고센토스하지만 불행하게도 이러한 패키지는 모두 aarch64(ARMv8-64bit)이며 Radare는 이를 분석하는 데 문제가 있습니다. 이 문제의 정확한 원인은 모르지만, 제 문제는 위에서 언급한 것과 같은 두 가지 ARMv8 32비트 변형에 대한 리포지토리를 찾고 싶다는 것입니다. 내가 찾았어테먹스32비트 ARM용 배포판이지만 안타깝게도 ARMv8이 아닌 ARMv7입니다.
일반적으로 내 질문은 다음과 같습니다.
- ARMv8 32비트용 패키지 저장소가 있습니까? 아니면 ARMv8은 64비트 전용인가요?
- 그러한 저장소를 찾는 일반적인 방법이 있습니까? (나도 위의 저장소를 찾는 데 큰 어려움을 겪었고 그러한 저장소를 찾는 방법을 아는 것이 정말 좋을 것입니다.)
- ARMv8을 언급할 때 일반적으로 aarch64를 의미합니까?
귀중한 시간을 내주셔서 진심으로 감사드립니다.
답변1
기술적으로 말하자면ARMv8Aarch64라는 64비트 아키텍처와 Aarch32라는 32비트 아키텍처로 구성됩니다. 일부 ARMv8 칩에는 32비트 아키텍처만 있습니다. 그러나 실제로 "ARMv8"은 일반적으로 Aarch64를 의미하는 데 사용됩니다. Aarch32는 ARMv7과 역호환되며 몇 가지 확장 기능이 추가되었습니다. 그래서 ARMv8에 최적화된 32비트 바이너리에 대한 수요가 많지 않은 것 같아요.
ARMv7에 없는 유일한 Aarch32 기능(이름을 지정할 필요가 없음)은 암호화 가속(AES, SHA-1, SHA-2 및 GCM용)이지만 내가 아는 한 그것은 내 관찰 편견이며 다른 사소한 확장이 있습니다. (아마도 새로운 SIMD 지침이 있을까요?) 또한 부동 소수점/SIMD 레지스터와 같은 ARMv7의 일부 선택적 기능은 Aarch32에 항상 존재했습니다.
실제로 armhf
바이너리(부동 소수점 및 SIMD가 있는 ARMv7용)는 Aarch32용입니다.
기존 바이너리를 분석하려면 해당 바이너리가 사용하는 모든 기능을 지원하는 도구가 필요합니다. 실제로 대부분의 32비트 arm 바이너리는 armhf 대상 세트의 명령만 사용합니다.
그건 그렇고, Unix 배포판을 고려하는 경우 실제로는 중요하지 않지만 컴파일러 플래그와 같은 도구에서 아키텍처 이름을 볼 때 나타날 수 있는 또 다른 널리 사용되는 부정확한 용어가 있습니다. ARMv7 및 ARMv8의 전체 이름은 "ARMv7-A" 및 "ARMv8-A"입니다. 접미사 "-A"는 MMU가 있는 "고급" 프로세서를 나타냅니다. 다른 프로세서에는 MMU가 없으므로 Unix 환경에서는 관련 Arm 프로세서만 해당됩니다. 그러나 MMU가 없지만 MPU가 있을 수 있는 Arm 아키텍처에는 R(실시간)과 M(마이크로 컨트롤러)이라는 두 가지 범주가 있습니다. 예를 들어 ARMv8-M은 32비트 아키텍처에 불과합니다.