Ghidra + IDA cant detect a string but Radare2 can

Jan 15 2021

Im new to reverse engineering, and ive trying Ghidra, IDA (Freeware) and Radare2 with a simple CrackMe, the problem is, both Ghidra and IDA couldnt detect a string while Radare2 (Using Cutter GUI) could figure out the name. I used default analysis for all 3. Is there something im missing ? because even the 'strings' command can actually find the string im looking for.

Ghidra:

IDA:

Radare2 (Cutter):

Yanıtlar

6 R4444 Jan 15 2021 at 22:05

I don't know the exact length of string. But, few things to note here are as follows:

  1. Ghidra and IDA has a minimum bound on size of string to recover correct type (ghidra has a limit - or lower bound of 5).
  2. Yanlış pozitiflerden veya çelişkili türlerden kaçınmak için bu gereklidir. Ve bir işaretçiyi dizge olarak işaretlemeden doğru türleri kurtarın. Referans için bu rakamı kontrol edin. Ghidra otomatik analizi kullanılarak oluşturulmuştur.

Ghidra'da bu limiti (minimum 4) analiz bölümünde değiştirebilirsiniz.

  1. Stringskomutu minimum 4 boyutunda yazdırılabilir karakterler üretir (ayrıca ghidra veya Ida gibi karmaşık tür kurtarma algoritmaları kullanmaz). 5'ten daha kısa bir diziniz olduğuna inanıyorum ve kesin olması için 4 olması gerektiğini tahmin ediyorum.
  2. dizeler genellikle .rodatabölümünde tanımlanır . DAT_xxxx'e çift tıklarsanız, sizi bu dizenin tanımlandığı konuma götürür. Orada, Ghidra veya IDA tarafından bir araya getirilen ardışık baytları göreceksiniz (resim-1'de gösterildiği gibi). Ancak, tür bir "dizge" olarak çözümlenmez.
  3. Ghidra'da DAT_xxxx etiketinin veri türünü değiştirerek bunu düzeltmenin hızlı bir yolu: Sağ tıklayın -> Veri -> Veri Türünü Seçin -> dizeyi seçin

Referanslar:

  • Soruma burada bakın - https://github.com/NationalSecurityAgency/ghidra/issues/2274
  • dizeler kılavuzu - https://linux.die.net/man/1/strings
  • ida pro - IDA'nın bir dizge referansını görmesini nasıl sağlayabilirim?