Pentru astazi va propun un mic tutorial in care o sa va arat cum se ‘dezvaluie’ un string dintr-un input de pe orice forumlar care este mascat..ma refer la campurile acelea in care se introduce parola.
Ideia de baza este una foarte simpla tot ce trebuie sa facem este sa luam fiecare proces in parte si daca acesta contine un fomular ce are campuri mascate atunci le dezvaluim( trimitem un mesaj catre componenta pentru a reseta carcaterul de masca).Haideti sa aruncam o privire la cod, am incercat sa ma folosesc doar de WinAPI pentru a evita eventualele dependente de platforme sau mai stiu eu ce.
//declarare functii
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);
BOOL CALLBACK EnumWindowsProc2(HWND hwnd,LPARAM lParam);
//functia principala
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
EnumWindows(EnumWindowsProc,0);
return 0;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
// se ‘enumereaza’ toate procesele ce contin ferstre
EnumChildWindows(hwnd,EnumWindowsProc2,lParam);
return TRUE;
}
BOOL CALLBACK EnumWindowsProc2(HWND hwnd,LPARAM)
{
//se reseteaza caracterul de masca pentru input-ul de parola
::SendMessage(hwnd,EM_SETPASSWORDCHAR,0,0);
InvalidateRect(hwnd,NULL,FALSE);
return TRUE;
}
Iata o demonstratie:
Singura remarca care s-ar putea face este ca programul nu functioneaza pentru procesele care contin formulare ierarhizate pe mai mult de 2 nivele. Acest neajuns se poate rezolva printr-o tehnica mult mai avansata ,care cere anumite cunostiinte destul de serioase despre sistemul de operare, si anume DLL injection, tehnica pe care sper sa am timp sa o abordez ceva mai pe larg in masura in care timpul mi-o permite si mai ales daca sunt cititori intersati
.

