Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 23:20

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL Hacking
BeitragVerfasst: Mo Nov 23, 2015 08:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Fefe hat folgende Slides verlinkt.
https://onedrive.live.com/view.aspx?resid=EBE7DEDA70D06DA0!107&app=PowerPoint&authkey=!AD-O3oq3Ung7pzk
Das ist eine Slide über das Programmieren der GPU dank ELF und OpenGL ARB xD

Spoiler:
Der GLSL Code wird vom Compiler in ein normales ELF executable umgebaut, welcher den Sourcecode und natürlich die Instruktionen enthalten.
Genau das kann man sich geben lassen, wenn man auf die OpenGL 4.5 ARB zugreift und sich das Binary vom Shader zurück geben lässt.

Khronos hat ja diese API aufgenommen, damit man auf der lokalen GPU nicht immer wieder den Shader neu bauen muss, sondern einfach das Bin vom vram lädt, auf die Platte packt und dann beim nächsten mal von dort in den VRAM lädt. Das spart bei größeren Shadern, wie sie bei deferred shading üblich sind ne menge Zeit.
Man kann sich nun für eine GPU Architektur ein Binary selber bauen und ganz andere Dinge auf der GPU tun ^^

Bei AMD ist das ganz einfach, weil die ihre Instruction-Set einen um die Ohren hauen, in CodeXL werden die GLSL und CL Shader für alle möglichen AMD GPUs gebaut und dann kann man sich den Assembly und ISA Code neben den HLSL/GLSL/CL Code angucken und da steht auch wieviele Clocks die Operation brauchen wird und auch Latenzen. Das gehört zur statischen Code-Analyse, die in diesen Monat erschienenden CodeXL Version rein kam. Ich hab damit schon zuhause erfolgreiche Tests gemacht :D

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Mo Nov 23, 2015 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Immer wieder interessant, was sich Hacker so ausdenken. Stellt sich die Frage, was man als Angreifer damit anstellen kann. Das gefährlichste was mir spontan einfällt ist, das manipulieren der Bildschirmausgabe bzw. das Abgreifen des Grafikspeichers z.B. aus einer virtuellen Maschine heraus. Gibt es die ProgramBinary-Funktionen eigentlich auch für WebGL?

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Mo Nov 23, 2015 17:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Per Standard nicht, da es ein opengl arb ist aber wenn wer faul beim treiberinterface war, dann kann man die auch in opengl es/webgl aufrufen.
Das wäre sehr schlimm, wenn eine website deine gpu kapert und bitcoins errechnet.
Sobald man Geld verdienen kann, wird es ausgenutzt, wie es schon diverse male mit javascript und bitcoin passiert ist.
Man kann aber ziemlich einfach über unity plugin deine gpu kapern.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Mo Nov 23, 2015 23:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Ginge Bitcoins berechnen nicht auch ohne diesen Hack? Alles was man dazu bräuchte wären doch Compute Shader oder notfalls auch nur Transform Feedback.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Di Nov 24, 2015 10:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Sicher gibt es einige weitere Möglichkeiten.
Ich bin mir gerade nicht sicher, dass compute shader in webgl verfügbar sind aber transform feedback schon.
Interessant wäre, ob man ein shaderprogram so modifizieren kann, dass es bis zum runterfahren weiter läuft, ohne host Applikationen.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Di Nov 24, 2015 20:06 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
TAK2004 hat geschrieben:
Interessant wäre, ob man ein shaderprogram so modifizieren kann, dass es bis zum runterfahren weiter läuft, ohne host Applikationen.

Das Problem ist da glaube ich, dass die GPU dann ja blockiert ist, oder?
Und meiner Erfahrung nach wird der Treiber abgewürgt, wenn ein Shader mehrere Sekunden nicht mehr zurückkommt.
Siehe TDR:
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Man kann den TDR Timeout aber in der Rgistry ändern:
https://www.reddit.com/r/opengl/comment ... with_long/
Und so könnte der Shader dann wohl ne Weile laufen.
Aber wozu ohne Host Application?

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Di Nov 24, 2015 21:20 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Oder ist das bei Compute-Shadern anders?

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL Hacking
BeitragVerfasst: Di Nov 24, 2015 21:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Im slides erklärtn er, dass man ein programm schreiben kann und das einfach mit ein anderem mit ausführt. Man tut also ein paar rechnungen machen, dass es nicht mehr als 1ms läuft und das führt er jeden frame dann mit dem anderen shader auS. So fällt es nicht auf, dein programm hat ledeglich weniger frames.
Dazu muss man die werte in ein buffer halten aber wie schon geschrieben wurde kann man überall im speicher rum fuhrwerken und wenn man sich ein paar bytes im programm selber reserviert.
Bei normalen programmen hat man auch schreibbare bereiche im binary, um z.b. Globale variablen zu realisieren.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.082s | 17 Queries | GZIP : On ]