| | #1 |
| psycedelic cäke Registriert seit: Aug 2002 Karma: 240 | 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 |
| | |
| | #2 |
| Member Registriert seit: May 2004 Karma: 831 | Re: Assembler im System In der WinAPI. Die bietet diverse Schnittstellen für Debugger. |
| | |
| | #3 |
| psycedelic cäke Registriert seit: Aug 2002 Karma: 240 | 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 |
| | |
| | #4 |
| Member Registriert seit: May 2004 Karma: 831 | Re: Assembler im System |
| | |
| | #5 |
| Registered User Registriert seit: Apr 2005 Karma: 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 |
| Administrator Registriert seit: Apr 2004 Karma: 1219 | 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/ |
| | |
| | #7 |
| psycedelic cäke Registriert seit: Aug 2002 Karma: 240 | 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 |
| | |
| | #8 |
| Moderator Registriert seit: Aug 2004 Karma: 1217 | 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. |
| | |
| | #10 | |
| Moderator Registriert seit: May 2000 Karma: 1226 | Re: Assembler im System Zitat:
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 in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ä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:08 Uhr.







Linear-Darstellung

