begin process at 2010 02 09 19:51:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

dlls

 > OBTENIR LE CPUID DE SON PROCESSEUR (DLL)

OBTENIR LE CPUID DE SON PROCESSEUR (DLL)


 Information sur la source

Note :
Aucune note
Catégorie :dlls Classé sous :cpuid, id, processeur, dll Niveau :Débutant Date de création :16/12/2004 Date de mise à jour :17/12/2004 14:51:50 Vu / téléchargé :5 738 / 216

Auteur : sibi12

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Suite à un poste D'EBartSoft j'ai créer une petite DLL assembleur permettant de contourner le problème survenant de manière inexpliquer sur certaine machine.

Source

  • ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  • .586 ; create 32 bit code
  • .model flat, stdcall ; 32 bit memory model
  • option casemap :none ; case sensitive
  • ; include files
  • ; ~~~~~~~~~~~~~
  • include \masm32\include\windows.inc
  • include \masm32\include\masm32.inc
  • include \masm32\include\gdi32.inc
  • include \masm32\include\user32.inc
  • include \masm32\include\kernel32.inc
  • include \masm32\include\Comctl32.inc
  • include \masm32\include\comdlg32.inc
  • include \masm32\include\shell32.inc
  • include \masm32\include\oleaut32.inc
  • include \masm32\include\dialogs.inc
  • include \masm32\macros\macros.asm ; the macro file
  • ; libraries
  • ; ~~~~~~~~~
  • includelib \masm32\lib\masm32.lib
  • includelib \masm32\lib\gdi32.lib
  • includelib \masm32\lib\user32.lib
  • includelib \masm32\lib\kernel32.lib
  • includelib \masm32\lib\Comctl32.lib
  • includelib \masm32\lib\comdlg32.lib
  • includelib \masm32\lib\shell32.lib
  • includelib \masm32\lib\oleaut32.lib
  • ; ----------------------------------------
  • ; prototypes for local procedures go here
  • ; ----------------------------------------
  • .data?
  • hInstance dd ?
  • .code
  • ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  • LibMain proc instance:DWORD,reason:DWORD,unused:DWORD
  • ret
  • LibMain endp
  • ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  • comment * -----------------------------------------------------
  • You should add the procedures your DLL requires AFTER
  • the LibMain procedure. For each procedure that you
  • wish to EXPORT you must place its name in the "CPUID.def"
  • file so that the linker will know which procedures to
  • put in the EXPORT table in the DLL. Use the following
  • syntax AFTER the LIBRARY name on the 1st line.
  • LIBRARY CPUID
  • EXPORTS YourProcName
  • EXPORTS AnotherProcName
  • ------------------------------------------------------- *
  • ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
  • GetCPUID proc addrCPUID:DWORD
  • mov esi, addrCPUID
  • mov eax,1
  • cpuid
  • mov dword ptr [esi + 4h],eax
  • mov eax,3
  • cpuid
  • mov dword ptr [esi + 8h],ecx
  • mov dword ptr [esi + 0Ch],edx
  • ret
  • GetCPUID endp
  • end LibMain
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

      .586                      ; create 32 bit code
      .model flat, stdcall      ; 32 bit memory model
      option casemap :none      ; case sensitive 

;     include files
;     ~~~~~~~~~~~~~
      include \masm32\include\windows.inc
      include \masm32\include\masm32.inc
      include \masm32\include\gdi32.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\include\Comctl32.inc
      include \masm32\include\comdlg32.inc
      include \masm32\include\shell32.inc
      include \masm32\include\oleaut32.inc
      include \masm32\include\dialogs.inc
      include \masm32\macros\macros.asm     ; the macro file

;     libraries
;     ~~~~~~~~~
      includelib \masm32\lib\masm32.lib
      includelib \masm32\lib\gdi32.lib
      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
      includelib \masm32\lib\Comctl32.lib
      includelib \masm32\lib\comdlg32.lib
      includelib \masm32\lib\shell32.lib
      includelib \masm32\lib\oleaut32.lib

    ; ----------------------------------------
    ; prototypes for local procedures go here
    ; ----------------------------------------

      .data?
        hInstance dd ?

      .code

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

LibMain proc instance:DWORD,reason:DWORD,unused:DWORD 

    ret

LibMain endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

  comment * -----------------------------------------------------
          You should add the procedures your DLL requires AFTER
          the LibMain procedure. For each procedure that you
          wish to EXPORT you must place its name in the "CPUID.def"
          file so that the linker will know which procedures to
          put in the EXPORT table in the DLL. Use the following
          syntax AFTER the LIBRARY name on the 1st line.
          LIBRARY CPUID
          EXPORTS YourProcName
          EXPORTS AnotherProcName
          ------------------------------------------------------- *

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

GetCPUID proc addrCPUID:DWORD

         mov esi, addrCPUID
         mov eax,1
         cpuid
         mov dword ptr [esi + 4h],eax
         mov  eax,3
         cpuid
         mov dword ptr [esi + 8h],ecx
         mov dword ptr [esi + 0Ch],edx
         ret

GetCPUID endp

end LibMain

 Conclusion

Code de départ : http://www.vbfrance.com/code.aspx?ID=19705

Je ne sais pas si le code est à sa place sur ce site mais je me disais que le plus important etait fait en assembleur donc voila...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 décembre 2004 14:51:51 :
Correction de la procédure LibMain suite au commentaire de BruNews

 Sources du même auteur

Source avec Zip REVELATEUR DE MOT DE PASSE (ENLÈVE LES ASTÉRISQUES)

 Sources de la même categorie

Source avec Zip Source avec une capture DLL ALGORYTHME DE RECHERCHE DE CHEMIN EN A STAR, A*, FASM par Devnix
Source avec Zip DLL EFFECTUANT UNE TRANSFORMÉE DE FOURIER RAPIDE par Nasman
Source avec Zip DLL MASM32 ET DARKBASIC PRO par Apinew
Source avec Zip DLL AVEC NASM ET ALINK par ibroman
Source avec Zip DLL-FONCTIONS 3D par quoi

 Sources en rapport avec celle ci

Source avec Zip RÉSOUDRE LES PROBLÈMES DE VERSIONS DU SYSTÈME OU DE DLL par ToutEnMasm
Source avec Zip Source avec une capture DLL ALGORYTHME DE RECHERCHE DE CHEMIN EN A STAR, A*, FASM par Devnix
EXECUTE /USR/BIN/ID par 0x0syscall
Source avec Zip CRÉATION DE DIFFÉRENTS EXÉCUTABLES AVEC NASM ET ALINK par Nasman
Source avec Zip Source avec une capture PROGRAMME DE VISUALISATION ET D'ANALYSE SPECTRALE DE FICHIER... par Nasman

Commentaires et avis

Commentaire de BruNews le 16/12/2004 22:18:58 administrateur CS

De quel exemple trop nul as-tu fait ce copier coller ???

LibMain: tu sauves un hInstance absolument inutile. Il y a aussi des registres pour travailler, push pop pour transferer une valeur, non !!! pourquoi cette suite d'analyse de 'reason' ???

GetCPUID: pourquoi mettre le param dans ESI a la 1ere ligne alors qu'il est sur la pile, ça genere 6 cycles inutiles.

Bonne continuation.

Commentaire de sibi12 le 17/12/2004 14:40:50

En fait c'est le template de MASM en je ne me suis interesser qu'à la procedure GetCPUID.

J'ai fait le code en 10 seconde mais tes remarque sont plutôt interessante surtout avec ESI. Je rectifie ça de suite.

Commentaire de sibi12 le 17/12/2004 14:49:11

Ah non ca ne va pas pour ESI. j'avais deja essayer en fait le compilo interprete mov esi, addrCPUID comme mov esi, dword ptr [esp+4] et je dois modifier les 3 long qui se trouve a l'adresse pointer par addrCPUID.

Commentaire de BruNews le 17/12/2004 15:10:05 administrateur CS

commence tes fichiers asm par:
.586
.model flat, stdcall
option casemap :none
option prologue:none
option epilogue:none

ça va supprimer les envies de stackframe et autres conneries qu'on ne demande pas.

LibMain proc ; on sait les 3 params d'une DLL
    mov  eax, 1
    ret  12
LibMain endp

GetCPUID proc addrCPUID:DWORD
         mov eax,1
         cpuid
         mov edx, [esp+4]
         mov dword ptr [edx + 4],eax
         mov    eax,3
         cpuid
         mov   eax, [esp+4]
         mov dword ptr [eax + 8],ecx
         mov dword ptr [eax + 12],edx
         ret  4
GetCPUID endp

end LibMain

Quand on ecrit en asm doit etre asm sinon tu ecris en C sur VS et au moins il y a un super compilo pour produire un asm optimal. Faut laisser tomber le sabir MASM32 (IF etc...).

Commentaire de BruNews le 17/12/2004 15:19:45 administrateur CS

J'ai retrouve, exemple colmplet ici:
http://www.cppfrance.com/code.aspx?id=19713

Commentaire de sibi12 le 18/12/2004 01:13:05

Merci c'est très instructif ça... tu sais pas ou je pourrais trouver la signification de ces paramètres (et des autres si il y en a)?

Commentaire de BruNews le 18/12/2004 11:08:52 administrateur CS

Ils sont expliques je crois dans l'aide de MASM32. Unefois 'prologue' et 'epilogue' mis a 'none', c'est suffisant pour avoir la maitrise de ce qui sera produit. Tu sauras exact ou aller prendre les params, le 1er commençant bien en [esp+4], il faudra gerer correctement ESP et bien deplier en sortie (ret xxx) ou xxx est le nbr de params * 4 pour un prog 32 bits. Tu dois restituer comme tu les as trouves tous les registres sauf EAX, ECX et EDX.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Probleme de dll! (arguments...) [ par BlackWizzard ] salut les pro!voila, G une fonction contenu dans une dll mais cette fonction, je ne sait pas comment lui ajouter des arguments...voici un extrait du c [URGENT] Passer des arguments a une DLL [ par BlackWizzard ] Bonjours, je voudrai creer un dll en asm (ce qui est fait) mais je n'arrive pas a passer des arguments a la seul fonction de cette dll.imaginons le co Fonction DLL avec arguments [ par Arnotic ] Bonjour, J'ai une DLL avec une fonction qui prend 2 arguments (en C (char*, int). Lorsque je la charge j'ai aucun problème mais lors de l'appel à Création de DLL [ par HollowSpecter128 ] Salut à tous!Je voudrais savoir si qq1 pourrais montrer comment on fè pour créer 1 DLL entièrement en assembleur sous NASM ou FASM.Quoique pour FASM j DLL sous masm32v8 [ par Stormy ] Serait-il possible de coder une DLL sous masm dans le but d'établir quelques fonctions très régulièrement utilisées. Le but étant de faire appel par l Registres windows [ par S2R ] Bonjour à tous, Est il possible de créer une clé dans la base de registre sans importer de dll?sinon comment fait-on pour importer une dll avec tasm?m DLL avec TASM ??? [ par Maxilie ] Voila, je voudrais créer une DLL avec tasm pour m'en servir sous un prog en VBProblème :-comment compiler une dll avec TASM-la syntaxe du code est-ell Point d'entrée dans une Dll [ par thiosyiasar ] SalutJ'ai une Dll entre les main et j'utilise Dependency pour trouver les points d'entré.J'ai trois méthodes avec leur adresse d'entrée :- ConvertMetr segment partagé en masm32 [ par anthraxx ] bonjour a tous,je connais l'assembleur mais je suis pas tres habitué a masm32, et je me demandais ce qu'il faut mettre pour qu'un segment donné de ma L'assembleur est-il portable? [ par vecchio56 ] J'entens dire ici et la que le langage assembleur n'est pas portable, parce qu'il existe un assembleur pour chaque type de processeur. Cependant, si o


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales