begin process at 2010 03 14 06:56:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Windows

 > REVELATEUR DE MOT DE PASSE (ENLÈVE LES ASTÉRISQUES)

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


 Information sur la source

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications Windows Niveau :Débutant Date de création :17/07/2004 Date de mise à jour :18/07/2004 14:02:30 Vu / téléchargé :22 219 / 1 480

Auteur : sibi12

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

 Description

C'est ma 1ere source en ASM sur ce site. Elle n'as pas de grande prétention, juste montrer 2 méthodes différentes de révéler un mot de passe cacher sous des astérisques. (Supprime les astérisque et affiche un MessageBox avec le texte)

Il suffit de démarrer l'application, positionner le pointeur de sa souris sur la zone de texte où se trouve le mot de passe et attendre 5 seconde.

On peut voir comment créer un timer, recuperer la position du pointeur, récupere le handle d'une fenêtre, ....

Source

  • .386
  • .model flat,stdcall
  • option casemap:none
  • include \masm32\include\windows.inc
  • include \masm32\include\user32.inc
  • includelib \masm32\lib\user32.lib
  • include \masm32\include\kernel32.inc
  • includelib \masm32\lib\kernel32.lib
  • WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
  • .DATA
  • ClassName db "PasswordReveler",0
  • AppName db "PasswordReveler",0
  • NullString db 0
  • Titre db "Mot de passe",0
  • .DATA?
  • wc WNDCLASSEX <>
  • msg MSG <>
  • hInstance HINSTANCE ?
  • Password db 256 dup(?)
  • Cursor POINT <>
  • .CODE
  • start:
  • invoke GetModuleHandle, NULL
  • mov hInstance,eax
  • ; Crée une fenêtre afin de pouvoir créer un Timer
  • mov wc.cbSize,SIZEOF WNDCLASSEX
  • mov wc.style, CS_HREDRAW or CS_VREDRAW
  • mov wc.lpfnWndProc, OFFSET WndProc
  • mov wc.cbClsExtra,NULL
  • mov wc.cbWndExtra,NULL
  • push hInstance
  • pop wc.hInstance
  • mov wc.hbrBackground,COLOR_WINDOW+1
  • mov wc.lpszMenuName,NULL
  • mov wc.lpszClassName,OFFSET ClassName
  • invoke LoadIcon,NULL,IDI_APPLICATION
  • mov wc.hIcon,eax
  • mov wc.hIconSm,eax
  • invoke LoadCursor,NULL,IDC_ARROW
  • mov wc.hCursor,eax
  • invoke RegisterClassEx, addr wc
  • invoke CreateWindowEx,NULL, ADDR ClassName, ADDR AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL
  • .WHILE TRUE
  • invoke GetMessage, ADDR msg,NULL,0,0
  • .BREAK .IF (!eax)
  • invoke TranslateMessage, ADDR msg
  • invoke DispatchMessage, ADDR msg
  • .ENDW
  • mov eax,msg.wParam
  • invoke ExitProcess, eax
  • WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  • .if uMsg == WM_CREATE
  • Invoke SetTimer,hWnd,0,5000, 0 ;Crée un timer de 5 secondes
  • .elseif uMsg == WM_TIMER
  • invoke KillTimer, hWnd, 0 ;Detruit le timer
  • invoke GetCursorPos, ADDR Cursor ;Récupère la position du pointeur
  • invoke WindowFromPoint, Cursor.x,Cursor.y ;Récupère la fenêtre sous le pointeur
  • mov ebx,eax
  • ;1ere Méthode
  • invoke SendMessageA, ebx, 204, 0, ADDR NullString ;Supprime les *
  • invoke RedrawWindow, ebx, 0, 0, 1 ;Rafraichi la fenêtre
  • ;2eme Méthode
  • invoke GetWindowTextA, ebx, ADDR Password, 255 ;Récupère le texte dans la fenêtre
  • mov [Password+eax], 0 ;Tronque le texte (GetWindowText retourne la longueur de la chaine)
  • invoke MessageBox, hWnd, ADDR Password, ADDR Titre, 1000h ;Affiche le texte (1000h = MB_SYSTEMMODAL)
  • invoke MessageBeep, -1 ;Emet un bip
  • invoke ExitProcess,0 ;Kill le process
  • .endif
  • invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  • ret
  • WndProc endp
  • end start
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

.DATA   

ClassName     db "PasswordReveler",0   
AppName       db "PasswordReveler",0    
NullString    db 0
Titre         db "Mot de passe",0

.DATA?
wc            WNDCLASSEX <>
msg           MSG <>
hInstance     HINSTANCE ?   
Password      db 256 dup(?)
Cursor        POINT <>

.CODE   
start:
invoke GetModuleHandle, NULL                                                                  
mov hInstance,eax

; Crée une fenêtre afin de pouvoir créer un Timer

mov  wc.cbSize,SIZEOF WNDCLASSEX
mov  wc.style, CS_HREDRAW or CS_VREDRAW
mov  wc.lpfnWndProc, OFFSET WndProc
mov  wc.cbClsExtra,NULL
mov  wc.cbWndExtra,NULL
push    hInstance
pop  wc.hInstance
mov  wc.hbrBackground,COLOR_WINDOW+1
mov  wc.lpszMenuName,NULL
mov  wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov  wc.hIcon,eax
mov  wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov  wc.hCursor,eax
invoke RegisterClassEx, addr wc         
invoke CreateWindowEx,NULL, ADDR ClassName, ADDR AppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL

.WHILE TRUE         
            invoke GetMessage, ADDR msg,NULL,0,0    
            .BREAK .IF (!eax)
            invoke TranslateMessage, ADDR msg
            invoke DispatchMessage, ADDR msg
 .ENDW
mov  eax,msg.wParam     
invoke ExitProcess, eax                 
    

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

    .if uMsg == WM_CREATE
        Invoke SetTimer,hWnd,0,5000, 0                                 ;Crée un timer de 5 secondes
    .elseif uMsg == WM_TIMER
        invoke KillTimer, hWnd, 0                                      ;Detruit le timer

        invoke GetCursorPos, ADDR Cursor                               ;Récupère la position du pointeur
        invoke WindowFromPoint, Cursor.x,Cursor.y                      ;Récupère la fenêtre sous le pointeur
        mov ebx,eax

        ;1ere Méthode
    
        invoke SendMessageA, ebx, 204, 0, ADDR NullString               ;Supprime les *
        invoke RedrawWindow, ebx, 0, 0, 1                           ;Rafraichi la fenêtre

        ;2eme Méthode
    
        invoke GetWindowTextA, ebx, ADDR Password, 255                 ;Récupère le texte dans la fenêtre
        mov [Password+eax], 0                                          ;Tronque le texte (GetWindowText retourne la longueur de la chaine)
        invoke MessageBox, hWnd, ADDR Password, ADDR Titre, 1000h      ;Affiche le texte (1000h = MB_SYSTEMMODAL)

    
        invoke MessageBeep, -1                                         ;Emet un bip

        invoke ExitProcess,0                                           ;Kill le process    
    .endif

    invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    
ret


WndProc endp

end start

 Conclusion

Le gros avantage est que vous pouvez utiliser un programme écrit en asm sur n'importe quelle machine sans devoir installer des run-times.

J'attend vos commentaires...

 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 juillet 2004 15:33:13 :
17 juillet 2004 18:40:31 :
Suppression de l'appel à WinMain
18 juillet 2004 14:02:30 :
Optimisation : mov ebx, eax au lieu de mov handle, eax après WindowFromPoint

 Sources du même auteur

Source avec Zip OBTENIR LE CPUID DE SON PROCESSEUR (DLL)

 Sources de la même categorie

Source avec Zip Source avec une capture BASE DE REGISTRE ET TRANSFERE DE BMP DANS SYSTEM32 par vincent2795
Source avec Zip RÉSOUDRE LES PROBLÈMES DE VERSIONS DU SYSTÈME OU DE DLL par ToutEnMasm
Source avec Zip DEXPLORE INTERFACE HELP2 MICROSOFT DOCUMENT EXPLORER par ToutEnMasm
Source avec Zip DEXPLORE INTERFACE HELP2 MICROSOFT DOCUMENT EXPLORER par ToutEnMasm
Source avec Zip Source avec une capture ANALYSEUR DE TRAFIC (WINPCAP) par ORdream

Commentaires et avis

Commentaire de BruNews le 17/07/2004 16:30:27 administrateur CS

Salut,

le point d'entree du prog est a 'start:', normal en asm.
A quoi donc te sert le bloc 'WinMain proc' a part empiler 4 params inutilement ?
WinMain est le point d'entree en C, totalement inutile en asm.

Commentaire de sibi12 le 17/07/2004 18:32:31

C'est du au fait que ça vient d'un autre code source. J'ai juste garder la base. Je m'étai fais la même reflexion au départ. je change ça tt de suite.

Commentaire de LordBob le 17/07/2004 19:32:17

j'ai l'impression qu'il ne marche pas sous XP, a confirmer...

Commentaire de BruNews le 17/07/2004 19:42:32 administrateur CS

Je n'ai pas essaye et ce n'est pas le principal, ici on s'occupe code en priorite.
mov handle,eax
ensiuite 3 fois invoke avec handle en param.
Non et non, ecris en C sur VS 2003, tu auras un code 10 fois meilleur. On utilise les registres et non relire 3 fois de suite la meme adresse memoire.

Commentaire de sibi12 le 18/07/2004 13:44:47

Sous XP certaines application sont protégé contre ce genre code. Tu peux esayer sur une appli VB ça marche nickel par contre.

bien vu BruNews. j'avais eu quelque problème avec mes invoke au départ après mainte modification j'ai essayer en en mettant pas de registre. j'ai oublier de le remettre par la suite.

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 (4)

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