Function Hijacking - put_queue

Diskutiere Function Hijacking - put_queue im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Guten Tach! Also, ich schreibe gerade ein Kernelmodul, dass die Funktion put_queue quasi abfangen soll. Auf meinem Rechner hat es gestern...

  1. #1 Lord Kefir, 08.09.2005
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    945
    Zustimmungen:
    0
    Guten Tach!
    Also, ich schreibe gerade ein Kernelmodul, dass die Funktion put_queue quasi abfangen soll. Auf meinem Rechner hat es gestern funktioniert - bei meiner Freundin leider nicht.

    Wenn ich das Modul lade, funktioniert die Kiste noch einwandfrei - allerdings werden auf dem tty keine Zeichen mehr ausgegeben.
    Wenn das Modul beenden wird, klappt alles wieder einwandfrei... vielleicht hat hier ja einer 'ne kleine Idee, woran es liegen könnte:

    Code:
    #include <linux/module.h>
    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/string.h>
    
    #define LICENSE "GPL"
    #define VERSION "0.1"
    #define CODESIZE 7
    #define ADDRESS 0xc027a860; // UNBEDINGT ANPASSEN!!!
     
    // global variables:
    void (*put_queue)(int) = (void(*)(int))ADDRESS;
    
    static char code[CODESIZE];
    static char jump[CODESIZE] =
     "\xb8\x00\x00\x00\x00"
     "\xff\xe0";
    
    // prototypes:
    void _put_queue (int ch);
    
    /* ----------------------------------------------
         function: _put_queue
       ---------------------------------------------- */
    void _put_queue (int ch) {
      printk ("flog: %d\n", ch);
    
      memcpy (put_queue, code, CODESIZE); // restore byte of the original code
      put_queue (ch);   // call function
      memcpy (put_queue, jump, CODESIZE); // re-restore jump code
    }
    
    /* ----------------------------------------------
         function: init_module
       ---------------------------------------------- */
    int init_module (void) {
      printk ("flog version %s: session start\n", VERSION);
    
      *(long*)&jump[1] = (long)_put_queue; // get address
      memcpy (code, put_queue, CODESIZE); // save original code
      memcpy (put_queue, jump, CODESIZE); // set jump code
    
      return (0);
    }
    
    /* ----------------------------------------------
         function: cleanup_module
       ---------------------------------------------- */
    void cleanup_module (void) {
      memcpy (put_queue, code, CODESIZE);
    }
    
    // Macros:
    MODULE_LICENSE (LICENSE);
    
    
    Mfg, Lord Kefir
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Lord Kefir, 08.09.2005
    Zuletzt bearbeitet: 09.09.2005
    Lord Kefir

    Lord Kefir König

    Dabei seit:
    10.06.2004
    Beiträge:
    945
    Zustimmungen:
    0
    Also, es liegt wohl zu 100% an der Adresse. Hat einer 'ne Ahnung, warum die falsch ist? Bin folgend vorgegangen:

    Code:
    lordkefir@linda:~$ grep put_queue /proc/kallsyms
    c027a860 t put_queue
    c02a5700 t cfq_put_queue
    
    Mfg, Lord Kefir
     
Thema:

Function Hijacking - put_queue

Die Seite wird geladen...

Function Hijacking - put_queue - Ähnliche Themen

  1. Php: User defined function inside array

    Php: User defined function inside array: Hi Alle, Ich habe ein Problem mit PHP: habe eine funktion definiert: function test($a1) {return($a1*5);}kann diese auch wie gewohnt als teil...
  2. disable_functions, suhosin.executor.func.blacklist

    disable_functions, suhosin.executor.func.blacklist: Hallo, neben disable_functions gibt es bei aktivierter Suhosin-Extension ja auch die Möglichkeit suhosin.executor.func.blacklist zu nutzen. Hat...
  3. Call to undefined function ImageTTFText()

    Call to undefined function ImageTTFText(): Hallo zusammen, ich verwende OpenBSD 4.4 (incl. dem xbase-Paket) und installiere meine Pakete aus den Ports, ich benoetige die GD-Lib +...
  4. 'libraryname': undefined reference to 'functionname'

    'libraryname': undefined reference to 'functionname': Hallo zusammen, Erst mal das Allgemeine: Ich benutze SuSE 10.3 als Betriebssystem und Eclipse als IDE. Meine C++ Kenntnisse sind nicht wirklich...
  5. PHP5 + MYSQL auf Ubuntu: Fatal Error called to undefined function mysql_connect()

    PHP5 + MYSQL auf Ubuntu: Fatal Error called to undefined function mysql_connect(): Hi all, hab ein dickes Problem was ich selber einfach nicht mehr gelöst bekomme habe mich gestern 3 Stunden durchgegoogelt und verschiedene...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden