الفريق العربي للهندسة العكسية
ممكن شرح الكود - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html)
+--- الموضوع : ممكن شرح الكود (/thread-2788.html)



ممكن شرح الكود - dani_jassm - 27-07-2021

 
/* This file was generated by the Hex-Rays decompiler.
   Copyright (c) 2007-2020 Hex-Rays <[email protected]>

   Detected compiler: Visual C++
*/

#include <windows.h>
#include <defs.h>


//-------------------------------------------------------------------------
// Function declarations

// void __usercall Init(int a1@<eax>, char a2@<dh>);
BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);


//----- (10001000) --------------------------------------------------------
void __usercall Init(int a1@<eax>, char a2@<dh>)
{
  __outbyte(0x38u, a1);
  *(_BYTE *)(a1 - 328774110) = a2;
  __asm { iret }
}
// 1000100E: control flows out of bounds to 1000100F

//----- (10991E4C) --------------------------------------------------------
BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
{
  int v4; // edi
  int v5; // esi
  char *v7; // eax
  int v8; // ecx

  if ( (_BYTE)fdwReason == 1 )
  {
    v7 = (char *)DllEntryPoint + 99;
    v8 = 1454;
    do
    {
      *v7++ ^= 0xA3u;
      --v8;
    }
    while ( v8 );
    *(_BYTE *)(v5 + 40) = *(_BYTE *)(v5 + 40);
    LOBYTE(_EBX) = _EBX - *(_BYTE *)(v4 + 581149603);
    __asm { bound   ebx, [ebx-5Dh] }
    MEMORY[0x1B6EA0A3] = v7;
    *(_DWORD *)v4 = *(_DWORD *)v5;
    MEMORY[0x8B19A3A3] = v7;
    MEMORY[0x4154A3A3] = v7;
    LOBYTE(v7) = MEMORY[0xAF22286B];
    MEMORY[0x66A0A3A3] = v7;
    __asm { rep retf }
  }
  return 1;
}
// 10991ED9: control flows out of bounds to 10991EDC
// 10991EB3: variable 'v5' is possibly undefined
// 10991EB6: variable '_EBX' is possibly undefined
// 10991EB6: variable 'v4' is possibly undefined

// nfuncs=2 queued=2 decompiled=2 lumina nreq=0 worse=0 better=0
// ALL OK, 2 function(s) have been successfully decompiled



RE: ممكن شرح الكود - aijundi - 27-07-2021

يبدو أن جزء من الدالة تم تشفيره بعملية xor مع A3، من البايت رقم 99 إلى 1553. يقوم الجزء الأول (من البداية إلى عند while) بفك التشفير. تحتاج إلى عمل decompile بعد أن يتم فك التشفير لتحصل على بقية الكود الصحيحة.


RE: ممكن شرح الكود - dani_jassm - 27-07-2021

اشكرا على الجابه ممكن تزودني بـ معلومات اكثر