Zurück   BuHa-Security Board > Programmierung und Software-Entwicklung > Systemnahe Programmierung
Registrieren Hilfe Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren


Antwort
 
Themen-Optionen Ansicht
Alt 12.12.2009, 14:52   #1
kuchen
psycedelic cäke

 
Registriert seit: Aug 2002
Karma: 240 kuchen liegt in der Wertung
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.
__________________
* silverblossom staatsmännisch: ich wollte jetzt schreiben du solltest dir den mund auswaschen gehen,
nach solchen ausdrücken, aber das ist ja absurd, im hinblick auf das benutzte medium deines körpers
kuchen ist offline   Mit Zitat antworten
Alt 12.12.2009, 17:09   #2
Shakademus
Member

 
Registriert seit: May 2004
Karma: 831 Shakademus ist eine Bereicherung fuer die Gemeinschaft.
Re: Assembler im System

In der WinAPI. Die bietet diverse Schnittstellen für Debugger.
Shakademus ist offline   Mit Zitat antworten
Alt 31.12.2009, 09:28   #3
kuchen
psycedelic cäke

 
Registriert seit: Aug 2002
Karma: 240 kuchen liegt in der Wertung
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?
__________________
* silverblossom staatsmännisch: ich wollte jetzt schreiben du solltest dir den mund auswaschen gehen,
nach solchen ausdrücken, aber das ist ja absurd, im hinblick auf das benutzte medium deines körpers
kuchen ist offline   Mit Zitat antworten
Alt 31.12.2009, 09:44   #4
Shakademus
Member

 
Registriert seit: May 2004
Karma: 831 Shakademus ist eine Bereicherung fuer die Gemeinschaft.
Re: Assembler im System

http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Shakademus ist offline   Mit Zitat antworten
Alt 31.12.2009, 10:53   #5
cracki
Registered User

 
Registriert seit: Apr 2005
Karma: 564 cracki ist eine Bereicherung fuer die Gemeinschaft.
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);
cracki ist offline   Mit Zitat antworten
Alt 31.12.2009, 13:20   #6
CryptoCrack
Administrator

 
Registriert seit: Apr 2004
Karma: 1219 CryptoCrack ist eine Bereicherung fuer die Gemeinschaft.
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
__________________
http://cryptocrack.de/
CryptoCrack ist offline   Mit Zitat antworten
Alt 31.12.2009, 16:38   #7
kuchen
psycedelic cäke

 
Registriert seit: Aug 2002
Karma: 240 kuchen liegt in der Wertung
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.
__________________
* silverblossom staatsmännisch: ich wollte jetzt schreiben du solltest dir den mund auswaschen gehen,
nach solchen ausdrücken, aber das ist ja absurd, im hinblick auf das benutzte medium deines körpers
kuchen ist offline   Mit Zitat antworten
Alt 31.12.2009, 16:52   #8
nait
Moderator

 
Registriert seit: Aug 2004
Karma: 1217 nait ist eine Bereicherung fuer die Gemeinschaft.
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.
nait ist offline   Mit Zitat antworten
Alt 01.01.2010, 02:42   #9
alamar
Moderator

 
Registriert seit: Sep 2000
Karma: 261 alamar ist eine Bereicherung fuer die Gemeinschaft.
Re: Assembler im System

Wäre zumindest das Abfragen nicht über JTAG möglich, wenn man entsprechende HW hat?
__________________
JULI-RIPE - euIRC - PublicKey
alamar ist offline   Mit Zitat antworten
Alt 10.02.2010, 21:01   #10
octogen
Moderator

 
Registriert seit: May 2000
Karma: 1226 octogen ist eine Bereicherung fuer die Gemeinschaft.
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)
octogen ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Assembler + C/C++ FloNa Systemnahe Programmierung 5 27.02.2005 12:25
Assembler Programmierung. Ein Lehr- und Arbeitsbuch für Assembler- Programmierung Boardleitung Buch Tipp 2 12.08.2003 20:45
g++ und assembler apokalypse C / C++ 14 19.01.2003 21:41
Assembler auf dem Ti-83 osiris321 Systemnahe Programmierung 11 19.12.2001 13:13
Assembler SunnyBurnett Systemnahe Programmierung 2 09.12.2000 12:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:09 Uhr.


[BuHa Edition]

Partnerboard:
mcseboard.de