Ergebnis 1 bis 10 von 10

Thema: Assembler im System

  1. #1
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.992
    Renommee
    283

    Assembler im System

    Hi,

    ich habe gerade folgendes Problem:
    möchte gerne - am besten mit .net - iin
    einem Windows-System die Opcodes,
    die direkt ohne Zwischenschicht an
    CPU und vlcht. auch GPU liegen,
    abfangen und modifizieren.

    Im Prinzip vermutlich so eine Art
    Debugging wie SoftIce tut, in meinem
    Programm dann direkt modifizierend
    und an die jeweiligen Prozesse zurückschickend.

    Wo setz' ich da am besten an?

    kuchen.

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  2. #2
    Member
    Registriert seit
    May 2004
    Beiträge
    1.432
    Renommee
    1142

    Re: Assembler im System

    In der WinAPI. Die bietet diverse Schnittstellen für Debugger.

  3. #3
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.992
    Renommee
    283

    Re: Assembler im System

    Ja nun, vlcht. hat der ein oder andere ein bissarl mehr Informationen.
    Es geht mir darum, am Ende jedweden Opcode, der an die CPU und vlcht. GPU geht, abzufragen und evtl. zu modifizieren und zurück zu schicken, bevor und nachdem dieser ausgeführt wird!

    Ich habe nicht viel Ahnung von der Thematik, aber es hat doch auch etwas damit zu tun, dass ich auf möglichst geringem Ring abfragen muss, um letztlich alle Opcodes abzufangen?

    Hat da vlcht. jemand ein paar Beispiele oder Links dazu?

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  4. #4
    Member
    Registriert seit
    May 2004
    Beiträge
    1.432
    Renommee
    1142

  5. #5
    Registered User
    Registriert seit
    Apr 2005
    Beiträge
    958
    Renommee
    564

    Re: Assembler im System

    ich glaub was du willst ist eine eigene VM zu bauen... dazu fang nur jeden prozessstart ab, starte eine instanz deiner VM, und lese die originale binary.
    char l[]="\x16..\x0e\\\xf4\xf4.\x96v\x9e\xaeN6t\xc6" "\xf6\xb6\xf4L\xe6\x9c\xb6\x8e\x16",I,*i=l
    -1;for(;I=3,*++i;)while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-I-I|(*i&1<<7-I)>>7-I-I,I--);puts(l);

  6. #6
    Administrator
    Registriert seit
    Apr 2004
    Beiträge
    754
    Renommee
    1274

    Re: Assembler im System

    Moment. Geht es darum, jede CPU-Instruktion abzufangen oder nur die, die von einem bestimmten Prozess ausgehen? Ersteres ist naemlich so gut wie unmoeglich (man bedenke das ganze Ring 0-/Kernel-Zeugs, Interrupts, die Instruktionen vom Hook-Code selbst), zweiteres ist machbar, aber recht kompliziert.

    Die wohl beste und sicherste Moeglichkeit, ist - wie cracki bereits sagte - eine VM zu schreiben, die x86-Instruktionen verarbeiten kann; damit kannst du sicher sein, dass du keine Instruktion verpasst, ist aber (je nachdem, was die VM alles koennen soll/muss) auch nicht wirklich einfach umzusetzen. Andere Moeglichkeiten waeren die Debugging-API von Windows (siehe Shakademus), mit der man Breakpoints setzen bzw. durch den Zielprozess mit Singlesteps durchlaufen kann. Da lassen sich allerdings dann auch Instruktionen "vorbeimogeln", wenn du nicht auf Dinge wie selbstmodifizierenden Code, Multithreading, TLS-Callbacks etc. achtest. Eine dritte Moeglichkeit, bei der man (abgesehen von Speichermanipulationen) ueberhaupt nicht in den Zielprozess eingreifen muss, waeren z.B. EB FE-Breakpoints, wie sie von nait in obsidian [1] verwendet werden - damit hat man aber imk wesentlichen dieselben Probleme wie mit der Debugging-API - und eventuell ein paar mehr und ein paar weniger :>

    Was du letztendlich verwendest, haengt von deinen genauen Anforderungen und dem Zeitaufwand ab, den du da reinstecken moechtest.

    [1] obsidian

  7. #7
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.992
    Renommee
    283

    Re: Assembler im System

    Wie du schon sagst CryptoCrack, ich denke daran, JEDEN OpCode auch von Ring0 abzufangen. Ich möchte auch nicht unbedingt kompliziert Einzelschritte oder derlei, vielmehr eher Opcodes sammeln zu einem Code und im nachhinein den eventuell modifizierten Code an den Prozessor schicken, um dessen Ergebnis gezielt an die Ursprungsprozesse zurückzugeben - eine Art Engine.

    Eigentlich alles automatisiert also, ohne dass ich mir selbst eine Pfeffer - müsste möglich sein meine ich mich informiert zu haben, mir fehlt bloß C++ oder WinAPI Skill sowie Beispielcode.

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  8. #8
    Moderator
    Registriert seit
    Aug 2004
    Beiträge
    1.310
    Renommee
    1286

    Re: Assembler im System

    Was meinst du mit "Opcodes sammeln zu einem Code"? Die Opcodes sind das was vom Prozessor direkt verarbeitet wird, da gibt es (normalerweise) keine Zwischeninstanz wie beim API-Hooking. Es sei denn du simulierst den Prozessor selbst, wie vorher schon mehrfach vorgeschlagen.

  9. #9
    Moderator
    Registriert seit
    Sep 2000
    Beiträge
    124
    Renommee
    261

    Re: Assembler im System

    Wäre zumindest das Abfragen nicht über JTAG möglich, wenn man entsprechende HW hat?

  10. #10
    Moderator
    Registriert seit
    May 2000
    Beiträge
    1.368
    Renommee
    1285

    Re: Assembler im System

    Zitat Zitat von kuchen Beitrag anzeigen
    Wie du schon sagst CryptoCrack, ich denke daran, JEDEN OpCode auch von Ring0 abzufangen. Ich möchte auch nicht unbedingt kompliziert Einzelschritte oder derlei, vielmehr eher Opcodes sammeln zu einem Code und im nachhinein den eventuell modifizierten Code an den Prozessor schicken, um dessen Ergebnis gezielt an die Ursprungsprozesse zurückzugeben - eine Art Engine.

    Eigentlich alles automatisiert also, ohne dass ich mir selbst eine Pfeffer - müsste möglich sein meine ich mich informiert zu haben, mir fehlt bloß C++ oder WinAPI Skill sowie Beispielcode.
    JEDEN OpCode abzufangen geht mit Software nicht, weil sich dazu der Debugger selbst abfangen müsste, das ist ein rekursives Paradoxon, und somit nicht lösbar.

    Mit Hardware geht's, soviel ich weiß gibt es von Intel eine Entwicklerlösung zum hardwareunterstützten CPU-Debugging, damit kann man von einem zusätzlichen Computer aus den Prozessorzustand eines anderen Computers debuggen; kostet aber vermutlich ein Vermögen.
    Segmentation fault (core dumped)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Assembler + C/C++
    Von FloNa im Forum Systemnahe Programmierung
    Antworten: 5
    Letzter Beitrag: 27.02.2005, 12:25
  2. Antworten: 2
    Letzter Beitrag: 12.08.2003, 20:45
  3. g++ und assembler
    Von apokalypse im Forum C / C++
    Antworten: 14
    Letzter Beitrag: 19.01.2003, 21:41
  4. Assembler auf dem Ti-83
    Von osiris321 im Forum Systemnahe Programmierung
    Antworten: 11
    Letzter Beitrag: 19.12.2001, 13:13
  5. Assembler
    Von SunnyBurnett im Forum Systemnahe Programmierung
    Antworten: 2
    Letzter Beitrag: 09.12.2000, 12:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •