Ghidra + IDA는 문자열을 감지 할 수 없지만 Radare2는

Jan 15 2021

리버스 엔지니어링을 처음 접했고 간단한 CrackMe로 Ghidra, IDA (프리웨어) 및 Radare2를 사용해 봤습니다. 문제는 Ghidra와 IDA 모두 문자열을 감지 할 수없는 반면 Radare2 (Cutter GUI 사용)는 이름을 알아낼 수 있다는 것입니다. 모든 3에 대해 기본 분석을 사용했습니다. 누락 된 것이 있습니까? 'strings'명령조차도 실제로 im이 찾고있는 문자열을 찾을 수 있기 때문입니다.

기 드라 :

IDA :

Radare2 (절단기) :

답변

6 R4444 Jan 15 2021 at 22:05

문자열의 정확한 길이를 모르겠습니다. 그러나 여기서 주목할 사항은 다음과 같습니다.

  1. Ghidra와 IDA는 올바른 유형을 복구하기 위해 문자열 크기에 대한 최소 한계를 가지고 있습니다 (ghidra에는 한계가 있거나 하한이 5 임).
  2. 이는 잘못된 긍정 또는 충돌 유형을 피하기 위해 필요합니다. 포인터를 문자열로 표시하지 않고 올바른 유형을 복구하십시오. 참고로이 그림을 확인하십시오. Ghidra 자동 분석을 사용하여 생성되었습니다.

Ghidra에서는 분석 섹션에서이 제한 (최소 4 개)을 변경할 수 있습니다.

  1. Strings명령은 최소 크기 4의 인쇄 가능한 문자를 출력합니다 (또한 ghidra 또는 Ida와 같은 정교한 유형 복구 알고리즘을 사용하지 않음). 나는 당신이 길이가 5보다 작은 문자열을 가지고 있다고 믿고 내 추측은 정확하려면 4이어야한다고 생각합니다.
  2. 문자열은 일반적으로 .rodata섹션 에서 정의됩니다 . DAT_xxxx를 두 번 클릭하면 해당 문자열이 정의 된 위치로 이동합니다. 여기에서 Ghidra 또는 IDA에 의해 묶인 연속 바이트가 표시됩니다 (이미지 1 참조). 그러나 유형은 "문자열"로 해석되지 않습니다.
  3. Ghidra에서 DAT_xxxx 레이블의 데이터 유형을 변경하여이를 수정하는 빠른 방법 : 마우스 오른쪽 버튼 클릭-> 데이터-> 데이터 유형 선택-> 문자열 선택

재 참조 :

  • 여기 내 질문을 참조하십시오- https://github.com/NationalSecurityAgency/ghidra/issues/2274
  • 문자열 설명서- https://linux.die.net/man/1/strings
  • ida pro- IDA가 문자열 참조를 보게하려면 어떻게해야합니까?