Verhindern dass andere Anwendungen APIs ausführen?



  • Wenn du keine Ahnung hast, einfach mal die Fresse halten !!! @ WebFritzi



  • DU DUMMER KLEINER IDIOT!!! Ich halte die Fresse, wenn es mir passt!!! Außerdem solltest du lieber die Fresse halten! Wenn du's nicht weißt, dann solltest du uns hier lieber nicht mit deiner schlechten Laune nerven. Geh mit Barbies spielen, aber lass uns in Ruhe! 😡



  • WebFritzi, nich gleich sauer werden..Das mit der API weiß ich..hab mich halt falsch ausgedrückt....ich meine es muss doch so möglich sein, dass man per Hexeditor irgendwie den Namen der Funktion oder die DLL aus der die Anwendung sie liest ändert und dann eine DLL mit dieser FUnktion schreibt die dann nichts macht, oder?

    kevin



  • Original erstellt von Surkevin:
    HAllo!
    Ist es irgendwie möglich dass man verhindert dass andere Anwendungen APIs wie CreateWindow aufrufen?

    Erkläre nochmal genau, was du machen willst. Das mit dem Hex-Editor lässt sich sicher irgendwie machen, aber willst du das bei jeder Anwendung auf deinem System machen??? 😕 Ich schätze nicht. Also: erklär nochmal.



  • Das geht.
    Im Buch "Windowsprogrammierung für Experten" wird die Funktion MessageBox() gehookt und abgefangen. Ist aber sehr kompliziert.



  • Original erstellt von Black Shadow:
    Im Buch "Windowsprogrammierung für Experten" wird die Funktion MessageBox() gehookt und abgefangen. Ist aber sehr kompliziert.

    Und das dann mit jeder WinAPI-Funktion machen... Viel Spaß. 😃



  • Hallo!
    Nein ich will das nur bei einer einzigen Anwendungen machen...diese ruft Shell_NotifyIcon aus der Shell32.dll auf! Und ich will verhindern dass dies geschieht..es hat kein großen Grund nur is das Icon nervig *g* und ich fände es sehr interessant wie das geht!

    Kevin



  • Am besten du entfernst das Icon einfach wieder auf der Taskleiste!! Das ist ne bessere Lösung



  • Ich denk ma das is schwerer...
    ich hab die Anwendung disassembliert...dann suche ich nach referenzen für Shell_NotifyIcon - 1mal gefunden (wird auch nur einma aufgerufen *g*) das sieht so aus...
    004010BE assembler code
    Refernce to Shell_NotifyIcon
    004010C0 assembler code

    Dann will ich mim Hexeditor das einfach rauslöschen...nur find ich da das offste 004010BE nicht hmmm was könnt ich falsch machen?

    Kevin



  • Hmmm hab die Pos jetzt gefunden 🙂 aber naja da is nix von der Funktion! Im DASM steht noch ein ORD: 0079h bei Shell_NotifyIcon, was hat das zu bedeuten?
    Kevin



  • Original erstellt von Surkevin:
    Hmmm hab die Pos jetzt gefunden 🙂 aber naja da is nix von der Funktion! Im DASM steht noch ein ORD: 0079h bei Shell_NotifyIcon, was hat das zu bedeuten?
    Kevin

    das ist folgende Sache: In dem Programm selber sind nur Stubs, also kleine mini-funktionen, an denen Windows zur Laufzeit dann die wirkliche Adresse in Einträgt. Du müsstest halt diesen Stub modifizieren oder den call zum Stub selber mit nops rauspatchen, dann hat sich das erledigt.

    [ Dieser Beitrag wurde am 23.03.2003 um 20:14 Uhr von TriPhoenix editiert. ]



  • Jo aber wie Patch ich die NUPS raus oda änder die Adresse? Im Hexeditor steht nichts vond er Referenz 😞



  • Also damits eindeutig ist, gegeben ist beim DASM folgende Situation:
    ..........
    004010BE F7D1 not ecx
    Refernce to: SHELL32.Shell_NotifyIconA, ord:0079h
    004010C0 8B539C404000 mov esi, dword prt [0040409C]
    .........

    Wenn ich dann im Hexeditor an dieses Offset spring sehe ich nur
    .....F7D18B539......
    Wo kann ich da die Referezn Ausnurpsen?

    Danke für eure Hilfe

    Kevin



  • Noch was, ich bin grad mit dem Hexeditor zu 0079h gegangen..da war dann NotifyIcon! das habe ich durch 0000 ersetzt! Nun wurde im Assembler eben auch 0079 durch 0000 ersetzt und er benutzt die Funktion immernoch *grml*



  • Hm also ohne die Applikation vor Augen zu haben kann ich da nicht ganz folgen. Aber ich kann dir sagen wie ich vorgehen würde. Irgendwo sollte ja eine Referenz auf Shell_NotifyIcon sein. Da müsste ein call-Befehl stehen. der komplette call-Befehl muss dann mit Hex 90 ersetzt werden (Hex 90 = NOP)



  • 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


Anmelden zum Antworten