kan functie maar niet begrijpen

Status
Niet open voor verdere reacties.

linketier

Gebruiker
Lid geworden
18 aug 2007
Berichten
30
wat doet deze functie ??? :


HMODULE GetModH = GetModuleHandle(NULL);
GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile);

ik heb al gezoekt op de msbn-library maar zo'n goed engels heb ik ook weer niet , kan iemand mij dit uitleggen wat de functie doet ??
 
char system[MAX_PATH];
char pathtofile[MAX_PATH];
HMODULE GetModH = GetModuleHandle(NULL);

GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
GetSystemDirectory(system,sizeof(system));

strcat(system,”\\virus.exe”);

CopyFile(pathtofile,system,false);

MessageBox(NULL,”Hello”,”Messagebox Example”,MB_OK); het is die functie hbe geen idee wat het is lijkt wel een virus maker
 
kweet het niet

ik bemoei me er verder niet mee zal wel niks te maken hebben met virussen maken maar iets anders het lijket erop dat dat een soort hook is ofzo :confused:


GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile)); This gets the FileName of our virus using the handle we got before and storing the path to it in pathtofile.
 
man .... ik heb nog nooit zo lang moeten denken om een functie te begrijpen ??

HMODULE GetModH = GetModuleHandle(NULL); This one my be hard to grasp for some but bare with me. GetModH holds the handle to our virus GetModuleHandle() gets the handle and stores it there.

GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile)); This gets the FileName of our virus using the handle we got before and storing the path to it in pathtofile.


ik weet het nog altijd niet wet ze doen :(

wacht ik ga proberen :

GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile)); = zoekt deze command de naam van een file dat je opgeeft en gebruikt daarvoor een handle en daarna slaat de command de path van de file op in pathtofile ????? ben ik juist ??????
 
ieder programma heeft een adres waar de computer de berichten die voor dat programma bedoeld zijn heen stuurt. met de eerste functie "getmodulehandle" krijg je dit adres. Wat er in die regel dus gebeurt is dat het adres opgeslagen wordt in een variabele.

het tweede command was getmodulefilename. lees dit als "vraag de filenaam van een bepaalde module op". je geeft mee de module waarvan je de filenaam wilt weten en de vars waarin je de naam op wilt slaan. LET OP dit is niet (in dit geval) "virus.exe" maar "c:/windows/system32/virus.exe" (bijvoorbeeld :P)
 
waarvoor worden deze functie's vooral gebruikt ?? kan je ook een voorbeeld geven ??
 
ik heb het zojuist gebruikt om een paar bestanden aan te maken en te lezen in de map waar de executable staat. handig als je je programma over zet op een andere computer maar je weet niet waar die persoon hem neer gaat zetten
 
ik heb het zojuist gebruikt om een paar bestanden aan te maken en te lezen in de map waar de executable staat. handig als je je programma over zet op een andere computer maar je weet niet waar die persoon hem neer gaat zetten

Is daarvoor toch niet echt nodig ? Als je een dir aanmaakt dan wordt deze toch standaard in de map van de executable aangemaakt ? Dus eigenlijk hoef je daarvoor geen pad te weten. (ook voor het lezen geldt dit)

(Wel handig bijvoorbeeld als je de exacte lokatie van het bestand zou willen tonen.)

edit:

Code:
HMODULE GetModH = GetModuleHandle(NULL);
GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile);

Bovenstaande is eigenlijk niet zo heel lastig te begrijpen. Als je op de MSDN site kijkt naar de functie GetModuleFileName(), dan zie je als eerste dit:

Code:
DWORD WINAPI GetModuleFileName(
  __in          HMODULE hModule,
  __out         LPTSTR lpFilename,
  __in          DWORD nSize
);

Als je verder kijkt dan zie je:

Parameters

hModule

A handle to the loaded module whose path is being requested. If this parameter is NULL, GetModuleFileName retrieves the path of the executable file of the current process.
lpFilename

A pointer to a buffer that receives the fully-qualified path of the module. If the length of the path exceeds the size that the nSize parameter specifies, the function succeeds, and the string is truncated to nSize characters and cannot be null terminated.

The string returned will use the same format that was specified when the module was loaded. Therefore, the path can be a long or short file name, and can use the prefix "\\?\". For more information, see Naming a File.
nSize

The size of the lpFilename buffer, in TCHARs.

Return Value

If the function succeeds, the return value is the length of the string that is copied to the buffer, in TCHARs. If the buffer is too small to hold the module name, the string is truncated to nSize, the function returns nSize, and the function sets the last error to ERROR_INSUFFICIENT_BUFFER.

If the function fails, the return value is 0 (zero). To get extended error information, call GetLastError.

Als hmodule gelijk is aan null wordt de lokatie van huidige executable getoond. Onderstaande code kunnen we dus ook herschrijven.

origineel:
Code:
HMODULE GetModH = GetModuleHandle(NULL);
GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile);

Zou je dus ook kunnen vervangen door:

Code:
char buffer[255];
GetModuleFileName(NULL, buffer, 255);

Ik hoop dat je iets aan bovenstaande uitleg hebt.
 
Laatst bewerkt:
ik doe wat dingetjes via het cmd dus ik vond het veiliger om het exacte pad op te geven
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan