Statyczne linkowanie funkcji NtTerminateProcess z kernel32 ld(gcc)

0

#include <stdio.h>
#include <windows.h>

int main() {
    printf("%d\n", NtTerminateProcess(0,100));
    return 0;
} 

Jakich flag używać by linkowanie tego kodu się powiodło w ld ?? Mam błąd, że nie znajduje funkcji NtTerminate... :

*****o:main.c:(.text+0x1e): undefined reference to `NtTerminateProcess'
collect2.exe: error: ld returned 1 exit status

System: windows10

0

A szukałeś w Google co to za funckcja? To jest nieudokumentowana funkcja, tak więc ja osobiście załadowałbym ją dynamicznie z dll'a systemowego:

#include <windows.h>

typedef DWORD (__stdcall *NtTerminateProcess)(HANDLE,UINT);

NtTerminateProcess fNtTerminateProcess=NULL;

HINSTANCE hModule=LoadLibrary("ntdll.dll");

if(hModule!=0)
{
  fNtTerminateProcess=(NtTerminateProcess)GetProcAddress(hModule,"NtTerminateProcess");

  fNtTerminateProcess(0,100);
}

Kod pisałem z palca (na podstawie info z Google), więc mogą być błędy, ale koncepcja jest słuszna. Oczywiście musisz na sam koniec zwolnić uchwyt uzyskany za pomocą LoadLibrary.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0