Schnell (!) Pixel finden



  • steve_171 schrieb:

    EditName->Handle
    

    😕

    wenns nur mein Programm wär ... 😃

    kpeter schrieb:

    Über EnumChildWindows.
    Mit der dortigen Callback-Funktion EnumChildProc könntest du von aussen dieses Fenster-Handle finden und ansprechen.

    Gibts da den kein GetNextChild 😃
    Nein war nur ein Witz, Ich meld mich wieder, wenn der Code geschrieben wurde.



  • Ich muss zugeben, hätt ich mich nicht vorher mit EnumProcess beschäftigt....
    Hier mein Wunderbar funktionierender Code, den ich nur noch so ändern muss,
    dass ich weiß was das Textfeld ist:

    TStringList* Childs;
    int __stdcall EnumChilds(HWND Handle)
    {
    	TRect Placement;
    	GetWindowRect(Handle,&Placement);
    	String Line = IntToStr((int)Handle) + " - " + IntToStr((int)Placement.Left) + " - " + IntToStr((int)Placement.Top) + " - " + IntToStr((int)Placement.Width()) + " - " + IntToStr((int)Placement.Height());
    
    	TCHAR RgWc[256];
    	unsigned int Length = 256;
    
    	RealGetWindowClass(Handle,RgWc,Length);
    	Line += " - ";
    	Line += String(RgWc);
    	Childs->Add(Line);
    }
    
    //...
    void __fastcall THEnum::Suche_FensterClick(TObject *Sender)
    {
        ChildList->Clear();
    	HWND Programmhandle;
    	if (Handle_Caption->Text == "NULL" || Handle_Caption->Text.Length() < 1)
    		Programmhandle = FindWindow(Klassenname->Text.c_str(),NULL);
    	else if (Klassenname->Text == "NULL" || Klassenname->Text.Length() < 1)
    		Programmhandle = FindWindow(NULL,Handle_Caption->Text.c_str());
    	else
    		Programmhandle = FindWindow(Klassenname->Text.c_str(),Handle_Caption->Text.c_str());
    
    	if (Programmhandle != NULL)
    	{
    		DWORD lparam;
    		Childs = new TStringList;
    		EnumChildWindows(Programmhandle,(WNDENUMPROC) (EnumChilds),lparam);
    		ChildList->Items = Childs;
    	}
    }
    //---------------------------------------------------------------------------
    

    EDIT: das war KEINE Frage
    EDIT2: Eine Komponente im WinMedPlayer heißt ATL:131D5508 😮
    (Code angepasst, ist nach wie vor richtig)



  • ich glaube nicht, dass dich da WinAPI Funktionen großartig weiterbringen, da Textfelder im Spiel normalerweise nie die Windowstextfelder sind.

    greetz KN4CK3R



  • ist mir auch schon aufgefallen...

    Watt mach isch de nun ? 🙂



  • Da müsstest du ja schon ein Programm schreiben, welches das Bild analysiert und das Textfeld findet, etc. Das ist aber nicht so trivial und außerdem sehr langsam.

    Schau doch nach, ob du nicht mit irgendeiner Tastenkombination in das Textfeld springen kannst. Dann bräuchte das Programm nur die Tastenkombination simulieren.



  • oftopic:

    Ein interessanter Effekt tritt auf, wenn das Programm sich selbst scannt.
    Es listet alles auf, alle Unterfenster.

    Da wurde die Liste sehr lang



  • einfacher wäre in deinem Fall wahrscheinlich die Chatfunktion zu finden und diese aufzurufen. Allerdings weiß ich nicht in wie weit du dich mit Reversing auskennst, denn einfach wird das nicht.

    greetz KN4CK3R



  • KN4CK3R schrieb:

    einfacher wäre in deinem Fall wahrscheinlich die Chatfunktion zu finden und diese aufzurufen. Allerdings weiß ich nicht in wie weit du dich mit Reversing auskennst, denn einfach wird das nicht.

    greetz KN4CK3R

    Reverse engeneering ? Hab ich mal versucht. (Ich hätte eine andere Wortwahl getroffen, wäre ich erfolgreich gewesen)
    Aber vielleicht ist es ja an der Zeit dazuzulernen 🙂

    EDIT: ich grab dann mal wieder ollydbg aus 🙂



  • Wenn es wirklich nur um die Chatfunktion geht, so könntest du auch versuchen selber eine Verbindung zum Server zu erstellen. Das Protokoll sollte sich bei Text relativ einfach mit Wireshark ermitteln lassen. Hängt letztendlich davon ab, ob der Server eine Verbindung zulässt.



  • Hat sich wohl eh erledigt, da das Spiel bei benutzung des Progs abstürzt, aber überall anders gehts.
    entweder ein Schuztz vor cheating (was gar nicht meine Absicht war) oder es kollidiert mit dem Keylogger des Spiels.


Anmelden zum Antworten