Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : # Export Table - Kernel32.dll - GetProcessAddress # [ Archives / Autres asm ] (joanna)

dimanche 11 mai 2003 à 12:58:13 | # Export Table - Kernel32.dll - GetProcessAddress #

joanna

Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".

Malheureusement à la ligne ### le programme plante. Tout ce que je sais pour le moment c'est qu'une exception est levée parce que je tente de lire à une adresse non valide.

Ce code ayant été récupéré d'un tutorial d'un pro en asm et cracking, je ne vois pas ce qui cloche.


_______________________________________________________
;Mes variables :

;ModuleA=ImageBase du module kernel32.dll
;ExportTableA=Adresse absolue de la table des exportations
;AddFunc=Adresse absolue du tableau contenant les RVAs des fonctions
;AddName=Adresse absolue du tableau contenant les RVAs des noms des fonctions
;AddOdr=Adresse absolue du tableau contenant les numéros d'ordre des fonctions
;limit=nombre de fonctions exportées par le module
;Nindex=Adresse absolue dans le tableau contenant les RVAs des noms des fonctions



------------------------------------------------------------------
;on récupère les infos essentielles depuis la table des exportations



;export table
;esi=ModuleA
mov esi,[esi+78h]
add esi,ModuleA
mov edx,Offset ExportTableA
mov [edx],esi

add esi,10h

;nBase
lodsd
mov edx,Offset base
mov [edx],eax

;NumberOfNames
lodsd
lodsd
mov edx,Offset limit
mov [edx],eax

;AddressOfFonctions
lodsd
add eax,ModuleA
mov edx,Offset AddFunc
mov [edx],eax

;AddressOfNames
lodsd
add eax,ModuleA
mov edx,Offset AddName
mov [edx],eax

;AddressOfNameOrdinals
lodsd
add eax,ModuleA
mov edx,Offset AddOrd
mov [edx],eax


--------------------------------------------------------------
;First_Api db 'GetProcAddress',0



Search_Apis:

mov esi,AddName
mov edx,offset Nindex
mov [edx],esi

mov edi,[esi]
add edi,ModuleA
mov ecx,0
mov ebx,offset First_Api



Try_Again:
mov esi,ebx


Match_Byte:
cmpsb
jne Next_One
cmp byte ptr [edi],0
je Got_It
jmp Match_Byte


Next_One:
inc ecx
cmp ecx,limit
je Fin

mov edx,offset Nindex
add dword ptr [edx],4

mov esi,Nindex
mov edi,[esi]
add edi,ModuleA
jmp Try_Again







--------------------------------------------------------------
;La fonction "GetProcAddress" est bien exportée par le module




Got_It:
shl ecx,1
mov esi,AddOrd
add esi,ecx
xor eax,eax


mov ax,word ptr [esi] #### ici ça plante ####


shl eax,2
mov esi,AddFunc
add esi,eax
mov edi,[esi]
add edi,ModuleA


mov edx,offset First_Api_A
mov [edx],edi


dimanche 11 mai 2003 à 18:29:33 | Re : # Export Table - Kernel32.dll - GetProcessAddress #

CoreBreaker

Effectivement le segment DS n'a pas accès cet espace mémoire car c'est de la mémoire de niveau DPL 0 or le champs RPL dans DS pour une application est de 3 tu n'a donc pas les droits d'accès. Il faut que tu alloues un segment qui a un DPL de 3 mais là je ne sais pas comment faire sous Windows. Pour moi c'est impossible car sinon ce serait facile de détruire de noyau de Windows (par un virus par exemple).

Core Breaker


-------------------------------
Réponse au message :
-------------------------------

> Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".
>
> Malheureusement à la ligne ### le programme plante. Tout ce que je sais pour le moment c'est qu'une exception est levée parce que je tente de lire à une adresse non valide.
>
> Ce code ayant été récupéré d'un tutorial d'un pro en asm et cracking, je ne vois pas ce qui cloche.
>
>
> _______________________________________________________
> ;Mes variables :
>
> ;ModuleA=ImageBase du module kernel32.dll
> ;ExportTableA=Adresse absolue de la table des exportations
> ;AddFunc=Adresse absolue du tableau contenant les RVAs des fonctions
> ;AddName=Adresse absolue du tableau contenant les RVAs des noms des fonctions
> ;AddOdr=Adresse absolue du tableau contenant les numéros d'ordre des fonctions
> ;limit=nombre de fonctions exportées par le module
> ;Nindex=Adresse absolue dans le tableau contenant les RVAs des noms des fonctions
>
>
>
> ------------------------------------------------------------------
> ;on récupère les infos essentielles depuis la table des exportations
>
>
>
> ;export table
> ;esi=ModuleA
> mov esi,[esi+78h]
> add esi,ModuleA
> mov edx,Offset ExportTableA
> mov [edx],esi
>
> add esi,10h
>
> ;nBase
> lodsd
> mov edx,Offset base
> mov [edx],eax
>
> ;NumberOfNames
> lodsd
> lodsd
> mov edx,Offset limit
> mov [edx],eax
>
> ;AddressOfFonctions
> lodsd
> add eax,ModuleA
> mov edx,Offset AddFunc
> mov [edx],eax
>
> ;AddressOfNames
> lodsd
> add eax,ModuleA
> mov edx,Offset AddName
> mov [edx],eax
>
> ;AddressOfNameOrdinals
> lodsd
> add eax,ModuleA
> mov edx,Offset AddOrd
> mov [edx],eax
>
>
> --------------------------------------------------------------
> ;First_Api db 'GetProcAddress',0
>
>
>
> Search_Apis:
>
> mov esi,AddName
> mov edx,offset Nindex
> mov [edx],esi
>
> mov edi,[esi]
> add edi,ModuleA
> mov ecx,0
> mov ebx,offset First_Api
>
>
>
> Try_Again:
> mov esi,ebx
>
>
> Match_Byte:
> cmpsb
> jne Next_One
> cmp byte ptr [edi],0
> je Got_It
> jmp Match_Byte
>
>
> Next_One:
> inc ecx
> cmp ecx,limit
> je Fin
>
> mov edx,offset Nindex
> add dword ptr [edx],4
>
> mov esi,Nindex
> mov edi,[esi]
> add edi,ModuleA
> jmp Try_Again
>
>
>
>
>
>
>
> --------------------------------------------------------------
> ;La fonction "GetProcAddress" est bien exportée par le module
>
>
>
>
> Got_It:
> shl ecx,1
> mov esi,AddOrd
> add esi,ecx
> xor eax,eax
>
>
> mov ax,word ptr [esi] #### ici ça plante ####
>
>
> shl eax,2
> mov esi,AddFunc
> add esi,eax
> mov edi,[esi]
> add edi,ModuleA
>
>
> mov edx,offset First_Api_A
> mov [edx],edi
>
>



Cette discussion est classé dans : add, mov, eax, edx, esi


Répondre à ce message

Sujets en rapport avec ce message

# Export Table --- Kernell32.dll --- GetProcAddress # [ par joanna ] Voici le code qui devrait récupérer l'adresse de la fonction "GetProcessAddress" connaissant l'ImageBase du module "kernel32.dll".Malheureusement à la Différences ??? [ par Arecibo ] Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi], Parcours tableau de HWND [ par AlexMAN ] Bonjour, Voila mon pb : Je declare un tableau de HWND comme suit :hwndCmd HWND 10 dup (?)Ensuite, je veux créer 10 boutons et stocker leur handle ds c mon programme bloque [ par rhumsek ] slt j'ai améliore mon programme mais il provoque une erreure lorsdu calcul de la somme des entiers saisi (sommeentier)POURTANT il exécute bien les de LecteurEstDvd asm inline [ par AlexMAN ] Bonjour, Voila j'ai un ptit pb au nivo, je pense, de l'appel de la fonction DeviceIoControl, le code : //Fonction Cint __stdcall LecteurEstDvd(char *p HELP ! :'( [ par TheHacker ] Salut j'ai un probleme: voici mon code, il fonctionne correctement, activer le programme vous verres qu'a la fin i laffiche un MessageBox avec marqué BeginPaint code débutant [ par TRAX44 ] Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e Pb registre DL [ par AlexMAN ] Bonjour, J'ai un ptit pb avec le code qui suit, au nivo du mov dl, [ecx] ://Renvoie pointeur sur fin de chaine (permet d'eviter l'utilisation de strca optimisation [ par sajid_morad ] salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un po Cycles de mov [ par vecchio56 ] Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.