Bitblt check
-
Verstehe nicht was du meinst.
IN einer fremden EXE kannst du gar nix prüfen, es sei denn du modifizierst sie. Und das ist nicht so einfach.Beschreib mal mit ein paar mehr Worten was du willst.
-
Kannst dies mit einer dll injection machen, oder mit einem windows hook. und dann nur noch bitblt hooken und fertig. Wenn du dann zu deiner Funktion umgeleitet hast, bzw. wenn deine Funktion dann aufgerufen wird, weisst du schon das BitBlt in der exe benützt worden ist.
-
Ob dann auch tatsächlich ein Screenshot gemacht wurde kannst du so noch nicht bestimmen. (Du müsstest schauen dass die bytes auch wirklich auf die Platte geschrieben werden.)
-
-lowbyte- schrieb:
Ob dann auch tatsächlich ein Screenshot gemacht wurde kannst du so noch nicht bestimmen. (Du müsstest schauen dass die bytes auch wirklich auf die Platte geschrieben werden.)
Dieses Programm macht nur Screenshots mit Bitblt
-
hustbaer schrieb:
IN einer fremden EXE kannst du gar nix prüfen
Kommt drauf an was "IN" bedeutet. Entweder das Abbild einer ausführbaren Datei im Speicher (also der Prozess) oder die Datei auf dem jeweiligen Datenträger selbst. Da kann man schon einiges prüfen.
@Topic: Mittels Reverse Engineering solltest du herausbekommen, ob die Anwendung Screenshots mithilfe von BitBlt macht.
-
prüf0r schrieb:
hustbaer schrieb:
IN einer fremden EXE kannst du gar nix prüfen
Kommt drauf an was "IN" bedeutet. Entweder das Abbild einer ausführbaren Datei im Speicher (also der Prozess) oder die Datei auf dem jeweiligen Datenträger selbst. Da kann man schon einiges prüfen.
@Topic: Mittels Reverse Engineering solltest du herausbekommen, ob die Anwendung Screenshots mithilfe von BitBlt macht.
Mit Reverse bekomm ich doch nur raus OB sie das überhaupt macht, ich möchte jedesmal wenn die Datei einen Screenshot macht kurz vorher dies signalisiert bekommen sodass mein Programm einen Tastendruck simulieren kann
-
HeinzE schrieb:
Hallo, wie kann ich am Besten in einer fremden EXE prüfen, ob via Bitblt ein Screenshot gemacht wird?
Sah so aus, als wolltest du wissen, wie man überprüfen kann, ob die Anwendung überhaupt einen Screenshot erstellt.
Naja, du musst halt die Ausführung der Funktion abfangen, da gibt es mehrere Methoden, wie man das bewerkstelligen kann.
Am einfachsten wäre wohl ein simpler Detour-Hook. Ansonsten kann man auch einen Breakpoint setzen.
-
prüf0r schrieb:
Naja, du musst halt die Ausführung der Funktion abfangen, da gibt es mehrere Methoden, wie man das bewerkstelligen kann.
Am einfachsten wäre wohl ein simpler Detour-Hook. Ansonsten kann man auch einen Breakpoint setzen.
Das aber nur mal allgemein gesagt.
Ich weiß jetzt nicht, was du genau machen wills. Das kannst du ja mal erläutern. Warum willst du einen Tastendruck simulieren und wofür?
-
Wenn du dein Prog. auch bei jeder Anwendung funktionieren soll, mach es so wie ich das gesagt habe. Dass mit auf platte schreiben, kannste vergessen wenn die Daten gleich ins Nirvana geschickt werden.
-
-lowbyte- schrieb:
wenn du dein prog. auch bei jeder anwendung funktionieren soll,machs so wie ich das gesagt habe. das mit auf platte schreiben, kannste vergessen wenn die daten gleich ins nirvana geschickt werden.
Und was genau muss in der DLL dann stehen?
-
HeinzE schrieb:
Mit Reverse bekomm ich doch nur raus OB sie das überhaupt macht, ich möchte jedesmal wenn die Datei einen Screenshot macht kurz vorher dies signalisiert bekommen sodass mein Programm einen Tastendruck simulieren kann
Dateien machen keine Screenshots. Prozesse machen Screenshots. Lern bitte wenigstens die grundlegensten Begriffe.
Und um es etwas abzukürzen: das was du machen willst ist grundsätzlich möglich, aber zu schwer für dich. Such dir ein anderes Hobby.
-
HeinzE schrieb:
Und was genau muss in der DLL dann stehen?
Versuch's mal mit "Hello World". Wenn das nicht tut, füg noch ein paar Buchstaben hinzu, bis es irgendwann funzt. Kannst auch nen Algo verwenden, der alle möglichen Kombinationen bis zu einer bestimmten Größe durchgeht, bis irgendwann das gewünschte Programm rauskommt.
- further bashing snipped -
-
Und ich dachte ich wäre manchmal zu hart...
-
Du solltest dich erstmal intensiv mit der nativen Programmierung befassen, auch dann mit dem Schwerpunkt Microsoft Windows. Vorher wirst du da nicht weit kommen, es wird allenfalls C&P Code werden.
-
typedef BOOL (WINAPI* oBitBlt)( HDC, int, int,int,int,HDC,int,int, DWORD); oBitBlt pBitBlt; bool ret = true; bool WINAPI myBitBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop) { if(nWidth >= 320 && nHeight >= 320) { MessageBox(NULL,_T("2","Heyho"),0,MB_OK); keybd_event(VK_END, 0, 0, 0); keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); Sleep(100); bool ret = pBitBlt(hdcDest,nXDest,nYDest,nWidth,nHeight,hdcSrc,nXSrc,nYSrc,dwRop); keybd_event(VK_END, 0, 0, 0); keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); return ret; } bool ret = pBitBlt(hdcDest,nXDest,nYDest,nWidth,nHeight,hdcSrc,nXSrc,nYSrc,dwRop); return ret; } // DLL MAIN BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, PVOID pvReserved) { switch (dwReason) { case DLL_PROCESS_ATTACH: pBitBlt = (oBitBlt)DetourFunction((LPBYTE)DetourFindFunction("Gdi32.dll","BitBlt"), (LPBYTE)myBitBlt); MessageBox(NULL,_T("1","Heyho"),0,MB_OK); break; case DLL_PROCESS_DETACH: break; } return TRUE; } }
Er injected, aber beim Screenshot der Anwendung macht er nix??
-
EDIT:
Schau mal dein MesageBox() call an! Das kannst du so gar nicht Kompilieren!
Ich könnte mir vorstellen dass der ganze Code nicht von dir ist... nur copy/past und dann ein bisschen rumfrickeln was!?...das geht so nicht. Lerne die grundlegenden Sachen zuerst mal richtig.Wenn du nämlich wüsstest was der Code macht, kämmst du nicht mit so bescheuerten Aussagen "Er injected, aber beim Screenshot der Anwendung macht er nix??".
Klar tut sich nichts...wenn du nicht mal ne DLL zum injecten hast! (weil es nicht Kompilier bar ist)
Für mich ist hier Ende.
-
-lowbyte- schrieb:
Klar tut sich nichts...wenn du nicht mal ne DLL zum injecten hast!