Verhindern dass andere Anwendungen APIs ausführen?
-
Original erstellt von Black Shadow:
Das geht.
Im Buch "Windowsprogrammierung für Experten" wird die Funktion MessageBox() gehookt und abgefangen. Ist aber sehr kompliziert.Hab ich auch mal irgendwo gesehen. Das ist in der Tat recht kompliziert, aber trotz allem: Es klappt nur im eigenen Prozess, und definitiv nicht global für alle Programme!
-
Hallo!
Triphoenix, ich habe dir eine Email mit dem Programm geschickt!Im Disassembler sehe ich keinen CALL Befehl zu der Funktion, ich sehe lediglich die Referenz, diese kann ich jedoch nicht ausnopsen, weil sie im Hexeditor nicht angezeigt wird, nur die Daten vor und nach der Referenz...hm man das muss doch irgendwie gehen *macht über anwendungen ergreifen will* *g*
Kevin
-
Klar geht das
Ich zitiere aus meinem Disassembler:
.text:004010C0 mov esi, ds:Shell_NotifyIconA ; Send a message to the system to add, .text:004010C0 ; modify, or delete an icon from the .text:004010C0 ; taskbar status area .text:004010C6 dec ecx .text:004010C7 mov [esp+ecx+0A0h+Data.szTip], al .text:004010CB lea ecx, [esp+0A0h+Data] .text:004010CF push ecx ; lpData .text:004010D0 push eax ; dwMessage .text:004010D1 call esi ; Shell_NotifyIconA ; Send a message to the system to add, .text:004010D1 ; modify, or delete an icon from the .text:004010D1 ; taskbar status area .text:004010D3 mov eax, [esp+0A0h+arg_4] .text:004010DA test eax, eax .text:004010DC jz short loc_4010E7 .text:004010DE lea edx, [esp+0A0h+Data] .text:004010E2 push edx ; lpData .text:004010E3 push 2 ; dwMessage .text:004010E5 call esi ; Shell_NotifyIconA ; Send a message to the system to add, .text:004010E5 ; modify, or delete an icon from the .text:004010E5 ; taskbar status area .text:004010E7
Man sieht: zu anfang wir die Adresse von Shell_NotifyIcon in esi gepackt. Danach zweimal esi aufgerufen. Diese calls und die dazugehörigen pushs müssen vernichtet werden.
Fortsetzung folgt...
[ Dieser Beitrag wurde am 24.03.2003 um 15:44 Uhr von TriPhoenix editiert. ]
-
Und hier kommt auch schon Teil 2
Man nehme z.B. OllyDbg, ein Disassembelr/Debugger der auch zum Patchen was taugt. Man gehe an die bekannten Adressen (4010cf, 4010e2). Nun ersetze man die vorhandenen push/call esi durch nop (hex 0x90). Die pushs müssen wir miterwischen, da der Aufrufer die Parameter für den Aufruf auf den Stack schmeißt und in diesem Fall Shell_NotifyIconA den Stack selber wieder aufräumt. Da aber Shell_NotifyIconA garnicht aufgerufen wird, dürfen auch die Parameter nicht landen, sonst beschädigen wir nämlcih den Stack. Nachdem die Dinger ausgeNOPt sind, wähle man in OllyDbg "Copy to executable" und dort dann "Save". Darauf achten, dass beide Änderungen in die Executable übernommen werden. Schwupps sind die calls weg und damit auch das Shellicon.
PS: Alles ungetestet, executables führe ich dann aus, wenn ich weiß was sie sind
-
HI!
DANKEEEEEEE!!!!! DU bist mein Held!!!!! JIPPI!!! DANKE!!!!!
Einfach alle esis und pushes ausnopsen und schon hat man die Macht der Anwendungen *freu* *g*DANKE
Kevin
-
Original erstellt von cd9000:
Hab ich auch mal irgendwo gesehen. Das ist in der Tat recht kompliziert, aber trotz allem: Es klappt nur im eigenen Prozess, und definitiv nicht global für alle Programme!DOch, da wird mittels Hook die Dll in alle Programme injiziert und der Code in der Dll wird dann für das Programm ausgeführt.
-
Dann hab ich wohl eine andere Quelle gehabt.
Aber das lohnt sich doch wirklich nicht vom Aufwand her.
-
Original erstellt von cd9000:
Dann hab ich wohl eine andere Quelle gehabt.
Aber das lohnt sich doch wirklich nicht vom Aufwand her.Sag das nicht. Trillian z.B. hat ja systemweite Hotkeys. Die injizieren überall ne DLL.
-
Das bekommst du auch mit SetHotKey() hin
-
Original erstellt von Black Shadow:
Das bekommst du auch mit SetHotKey() hinAlso laut MSDN gibts genau zwei SetHotKey() und beide sind keien WinAPI. Und sowieso sind die nicht systemweit
-
RegisterHotKey ist systemweit
-
Und WinAPI