Soru:
BYTE3, int'in üçüncü veya dördüncü baytı anlamına mı geliyor? Zaten sağlanan IDB dosyası
lfxgroove
2013-08-18 15:05:41 UTC
view on stackexchange narkive permalink

Bir veya iki işlevi anlamaya çalışarak biraz hata ayıklamaya çalıştığım bir programım var, idb dosyası aracılığıyla indirdiğim bazı bilgiler zaten var ve bir yere gitmeme yardımcı oldu. Ancak, bunun gibi bir şeye sahip olduğum bir kısımda sıkışıp kaldım:

  BYTE3 (v1) = 0;  

Bu, benim için bazı güzel c-sözde kodu yapan ida hex-rays eklentisi. İşleve çift tıklayıp bir şekilde tercüme edemiyorum, bu yüzden ne yaptığını nasıl anlayacağımı gerçekten bilmiyorum, tahminime göre int'in üçüncü veya dördüncü baytını alıyor. Öyleyse sorum şu ki, bu işlevi nasıl bulabilirim ve en azından hex-ışınları ile çevrilemiyorsa, sökülmesine bakabilirim? İmza eğer yardımcı oluyorsa ida'ya göre şuna benzer: _BYTE __fastcall (int)

Evet, "v1" in dördüncü baytını ayarlar. İmlecinizi "BYTE3 (v1)" ifadesinin içine getirin, "Sekme" ye basın, demontaj görünümünde ilgili yere geçecektir.
Oh, bunu bilmiyordum, çok teşekkürler!
Bir cevap:
Jason Geffner
2013-08-19 03:27:32 UTC
view on stackexchange narkive permalink

Tüm Hex-Rays makroları, <IDA directory> \ plugins \ defs.h içinde tanımlanır. Ayrıca https://github.com/nihilus/hexrays_tools/blob/master/code/defs.h adresinde de mevcuttur

BYTE3 (x) :

  ... # BYTEn (x, n) (* ((_ BYTE *) & (x) + n)) ... # tanımla BYTE3 (x) BYTEn (x , 3) ...  

Yani BYTE3 (x) , (* ((_ BYTE *) & (x) +3)) kod>, bu da x değerinin dördüncü baytı anlamına gelir.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...