@@ -100,7 +100,7 @@ typedef struct _SYSTEM_PROCESS_INFORMATION {
100100bool IsThreadSafeToHijack (DWORD processId, DWORD threadId)
101101{
102102 // Load NtQuerySystemInformation
103- HMODULE hNtdll = GetModuleHandleA (" ntdll.dll" );
103+ static HMODULE hNtdll = GetModuleHandleA (" ntdll.dll" );
104104 if (!hNtdll)
105105 {
106106 printf (" Failed to load ntdll.dll\n " );
@@ -114,19 +114,19 @@ bool IsThreadSafeToHijack(DWORD processId, DWORD threadId)
114114 exit (1 );
115115 }
116116
117- static ULONG bufferSize = 0 ;
118- static PSYSTEM_PROCESS_INFORMATION processInfoBuf = NULL ;
119-
120- if (bufferSize == 0 || !processInfoBuf)
121- {
122- NtQuerySystemInformation (SystemProcessInformation, NULL , 0 , &bufferSize);
123- processInfoBuf = (PSYSTEM_PROCESS_INFORMATION)malloc (bufferSize);
124- if (!processInfoBuf)
125- {
126- printf (" Failed to allocate memory for process information\n " );
127- exit (1 );
128- }
129- }
117+ static ULONG bufferSize = 1024 * 1024 ; // !MB should be enough
118+ static PSYSTEM_PROCESS_INFORMATION processInfoBuf = (PSYSTEM_PROCESS_INFORMATION) malloc (bufferSize) ;
119+
120+ // if(bufferSize == 0 || !processInfoBuf)
121+ // {
122+ // NtQuerySystemInformation(SystemProcessInformation, NULL, 0, &bufferSize);
123+ // processInfoBuf = (PSYSTEM_PROCESS_INFORMATION)malloc(bufferSize);
124+ // if (!processInfoBuf)
125+ // {
126+ // printf("Failed to allocate memory for process information\n");
127+ // exit(1);
128+ // }
129+ // }
130130
131131 if (NtQuerySystemInformation (SystemProcessInformation, processInfoBuf, bufferSize, &bufferSize) != 0 )
132132 {
0 commit comments