|
Trouver une ressource
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)
Informations & options pour cette discussion
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|