Jump to content

zorro59

Members
  • Posts

    25
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

zorro59's Achievements

Newbie

Newbie (1/14)

11

Reputation

  1. Si daca eu inchid windows-ul cu regedit de exemplu pornit? Daca este o cheie de run de exemplu, atunci e game over pentru ca nu stii sigur in ce ordine inchide windows programele, si nici nu primesti vreo notificare daca programul tau este inchis fortat => pierzi cheia.
  2. Stocati totul pe 2 servere. Pe primul server se stocheaza informatiile publice. Atunci cand cineva vrea sa acceseze informatiile private(user posts, ip login history, pm's, friends list) se deschide o conexiune securizata la server. In momentul in care se incearca iarasi o manevra de genul, taiati conexiunea si stergeti datele.
  3. How do I determine the owner of a process in C#? - Stack Overflow http://stackoverflow.com/questions/300449/how-do-you-get-the-username-of-the-owner-of-a-process Ia vezi daca asa ceva iti trebuie
  4. Ok, am facut api hooking pentru toate procesele de tipul task manager. Acum mai trebuie sa il asculd de explorer.exe si aplicatiile de tipul regedit. Problema este ca functia RegEnumKey este definita ca DECLSPEC_IMPORT LSTATUS APIENTRY si nu pot sa obtin functia originala (GetProcAdress returneaza ERROR_PROC_NOT_FOUND). Am folosit dependancy walker si am vazut ca functia este importata de catre advapi32 din dll-ul "API-MS-WIN-CORE-LOCALREGISTRY-L1-1-0.DLL", dar nu reusesc sa obtin un pointer valid (primesc null). EDIT: am facut o greseala mult prea stupida. Incercam sa importez RegEnumKeyW, dar defapt imi trebuia RegEnumKeyExW, acum obtin un pointer valid, revin cu detalii. EDIT2: am terminat asta, acum am probleme cu FindNextFileW. Daca injectez dll-ul in cmd si folosesc comanda dir, totul este ok, fisierul este ascuns. Insa explorer.exe nu apeleaza functia de fiecare data cand acceseaza un folder de exemplu. Aveti idee cum sa il determin sa creada ca trebuie sa o apleleze (un fel de refresh).
  5. Am ajuns la un compromis, pana reusesc sa implementez ceva cel putin decent folosind api hooking. Am observat tiparul mesajelor, si atunci cand primeste anumite mesaje, verific daca un item exista in listview si atunci il sterg. Nu am observat flickering, nici pe viteza mare si nici impact asupra performantei, dar stiu ca nu e cum trebuie.
  6. WndProc ruleaza in spatiul de memorie al taskmanagerului. #pragma data_seg (".shared") HWND task = 0; HHOOK hook = 0; char name [128] = { '\0' }; UINT WM_TEST = 0; #pragma data_seg () #pragma comment(linker,"/SECTION:.shared,RWS") HINSTANCE hDll; char* SetTaskManagerHook() { task = FindWindow(NULL, TEXT("Windows Task Manager")); task = FindWindowEx(task, NULL, NULL, "Processes"); task = FindWindowEx(task, NULL, NULL, "Processes"); if (!task) return "Error finding window!"; hook = SetWindowsHookEx( WH_CALLWNDPROC,(HOOKPROC)WndProc, hDll, GetWindowThreadProcessId(task, NULL) ); while (strcmp(name, "") == 0) { Sleep(30); } UnhookWindowsHookEx(hook); return name; } BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } hDll = (HINSTANCE) hModule; return TRUE; } Daca de exemplu modific variabila name, care este in shared, trebuie sa folosesc ReadProcessMemory pentru a obtine valoarea?
  7. Ok, deci eu trebuie sa filtrez niste mesaje pe care o anumita fereastra le primeste(Task Manager). In momentul in care apare mesajul LVM_INSERTITEMA sau LVM_INSERTITEMW eu trebuie sa le opresc daca ele contin numele aplicatiei mele. Am reusit sa obtin mesajele, dar nu pot sa obtin in nici un fel textul care este trimis (primesc valori de genul "409:00000409;041e:0000041e"). Are cineva idei? (mentionez ca sunt pe x64). LRESULT CALLBACK WndProc(int nCode, WPARAM wParam,LPARAM lParam) { CWPSTRUCT* msg = (CWPSTRUCT*)lParam; if (msg->message == LVM_INSERTITEMW) { LVITEMW* l2 = (LVITEMW*)lParam; fstream file("C:\\test.txt", ios::app); file<<CW2A(l2->pszText)<<" wide"<<endl; file.close(); } if (msg->message == LVM_INSERTITEMA) { LVITEM* lv = (LVITEM*)msg->lParam; fstream file("C:\\test.txt", ios::app); file<<lv->pszText<<endl; file.close(); } return CallNextHookEx(hook, nCode, wParam, lParam); }
  8. E inutil, el vrea sa ii dea cineva mura in gura, pentru ca ii lipsesc multe cunostinte de baza pe care nu vrea sa le invete(a mai postat si pe alte forumuri aceeasi chestie).
  9. Ti-am explicat ce este gresit cu strchr. Uitate aici de exemplu: strchr() help Sa luam stringul abcabc, si sa zicem ca noi vrem de cate ori este gasit caracterul 'a'. El va fi gasit pe pozitia 0, apoi se va avansa o pozitie (stringul nostru va deveni bcabc), unde vom gasi din nou pe pozitia 2 caracterul, apoi va deveni bc, nu vom mai gasi caracterul si functia va returna null. La tine gaseste mereu pe o pozitie caracterul si se blocheaza.
  10. Sau mai bine verifici in temp daca exista litera aceea, nu mai creezi o variabila noua. #include <iostream> #include <string.h> using namespace std; bool gasire(char c, char s1[100], char s2[100]) { bool found = false; for (int i=0; i<strlen(s1); i++) { if (s1[i] == c) { s2[i] = c; found= true; } } if(found) return true; return false; } bool verifica(char s2[100]) { int index=0; while (index < strlen(s2) && s2[index] != 'X') index++; if (index == strlen(s2))//toate caracterele nu sunt 'X' return true; return false;//mai exista 'X' } void main() { char s1[100], s2[100], c; int i, v=0; do { cout<<"Introduceti cuvantul "<<endl; cin>>s1; } while (strlen(s1) < 3 && cout<<"Cuvantul trebuie sa contina cel putin 3 litere distincte"<<endl);//ne trebuie cel putin 3 litere for(i=0;i<strlen(s1);i++) //tu trebuie sa verifici primele 2, de exemplu in cuvantul abcdabc, a trebuie aratat 'a' de 2 ori la inceput s2[i]='X'; s2[strlen(s1)] = '\0';//terminatorul gasire(s1[0], s1, s2);//inlocuiesc primul caracter gasire(s1[strlen(s1)-1], s1, s2);//si ultimul cout<<s2<<endl; while(1) { cout<<"Introduceti o litera"<<endl; cin>>c; if(strchr(s2, (int)c) != NULL)//a mai fost introduc c in s2 { cout<<"Litera a mai fost introdusa odata, ati pierdut o viata"<<endl;//aici poti sa ii spui doar mesajul, sa nu ii scazi din vieti cout<<"Mai aveti "<<5-++v<<" vieti."<<endl; cout<<s2<<endl; } else if(gasire(c,s1, s2))//a fost modificat s2 { cout<<"Litera se afla in cuvant!"<<endl; cout<<s2<<endl; } else { cout<<"Litera nu se afla in cuvant. Mai aveti "<<5-++v<<" vieti."<<endl; cout<<s2<<endl; } if(v>=5) { cout<<"Ati pierdut!"<<endl; cout<<"Cuvantul era:"<<endl; cout<<s1<<endl; break; } if(verifica(s2)) { cout<<"Felicitari! Ati ghicit cuvantul!"<<endl; break; } } cin>>i;//pauza } Good enough? La tine greselile sunt destule, de exemplu strchr nu face ce crezi tu: Adica daca il gaseste odata in string pe pozitia 1 sa zicem, el si a doua oara va cauta tot de la inceput, si va gasit iar la pozitia 1 => infinite loop.
  11. Din cate stiu eu TRUE != true, cel putin in c++... Edit, oricum ai dao, nu merge asa,schimba numele variabilei.
  12. Citesti n linii cu getline, si obtii cuvantul. De exemplu: string word = "mamaie"; string guess = "______"; Dupa ce ai cuvantul, chemi o functie de genul (pentru primul si ultimul caracter, ca sa le inlocuiasca si in interior, apoi pentru ce introduce userul) bool Replace(char guess_char) { if (guess.find(guess_char) != -1) return false;//a fost ghicit deja if (word.find(guess_char) != -1)) { int index = word.find(guess_char);//indexul la care se gaseste prima litera do { guess.replace(index, 1, guess_char);//schimbi din '_' in guess_char index = word.find(guess_char, index); }while (index != -1);//cauti caracterul in continuare, in cazul in care mai estepe undeva, il bagi din nou return true;//a ghicit, afisezi stringul nou } return false;//scazi vietile, nu a ghicit } Ceva de genul iti trebuie... @nedo faster than me
  13. Sunt banate/merg prost. Eu l-am pus aici poate are cineva nevoie. Daca nu ai, atunci nu comenta.
  14. Pentru ca hf a banat Romania, si ieri aveam nevoie de ceva informatii de acolo, am creat un mic programel in C# care aceseaza google cache si va permite acces la aproape tot. Necesita .net framework 3.5. Ss: Exe: test.exe download - 2shared Virus scan: Multi-Engine Antivirus Scanner - Services - NoVirusThanks.org Pentru cei interesati / care nu au incredere in utilizatorii cu putine post-uri: Cod sursa: [C#] test-Designer - Pastebin.com [C#] test-code - Pastebin.com
×
×
  • Create New...