2012-12-26 1 views
1

J'apprends fasm sur environnement Windows XP pendant que je lis un code source fasm, je trouve invoquer macroappeler l'API Windows de l'assemblage, mais il n'y a pas d'adresse hardcoded

invoke MessageBox,0,[_strbuf],_msgcap,MB_ICONINFORMATION+MB_OK 

et l'importation macro.

import user,\ 
    MessageBox,'MessageBoxA',\ 
    wsprintf,'wsprintfA' 

mais je ne pouvais pas trouver une adresse codée en dur de MessageBoxA ni charge user32.dll dans le code assembleur. Il existe uniquement des définitions de macros qui marquent la chaîne mais pas une adresse.

mon hypothèse est cette

  1. il y a un code qui charge user32.dll et l'adresse de retour de début de dll chargé => ici, nous appelons l'adresse de retour à l'emplacement A

  2. il y a paires pour adresse codée en dur et de l'étiquette (par exemple MessageBoxA = 0x00000000)

  3. si l'instruction « appel » peut appeler étiquette MessageBoxA (qui sera convertie à l'emplacement A + MessageBoxA offset)

est-ce que mon hypothèse est fausse? Je me demande comment les API sont appelées.

grâce

Répondre

1

Read the FASM documentation, il explique comment MessageBoxA() est référencé dans user32.dll.

Puis read the MSDN documentation sur la façon dont les exécutables Windows fonctionnent réellement. Portez une attention particulière à la section sur les importations de fichiers PE, qui explique comment l'adresse des fonctions DLL importées est résolue au moment de l'exécution. En un mot, l'instruction import dans FASM configure une entrée dans une table de recherche dans le fichier EXE compilé. Le système d'exploitation remplit alors cette table de recherche lorsque le fichier EXE est chargé en mémoire avant que son code ne commence à s'exécuter.

0

Voici une capture d'écran de l'outil gratuit Dependency Walker.

Remarque: il existe un nom de fonction, Ordinal et Entry Point.

Alors oui, ce que vous avez déduit est à peu près tout. Les fonctions sont liées au moment de l'exécution au lieu de la compilation. (DLL Dynamic Lien Bibliothèque).

enter image description here

Questions connexes