Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: mercury, Schalentier


 Thema: 100 gute Gründe für Linux ( Gute Informatiker für ++30 )
« vorherige 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 nächste »
erste ungelesene Seite | letzter Beitrag 
RichterSkala

AUP RichterSkala 31.12.2010
willste cheats fürs CS:GO Linux basteln?
11.11.2014 19:20:33  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
http://github.com/enkore/with_smaa

LD_PRELOAD gesetzt <=> kein VAC*

Und z.B. Minecraft ignoriert LD_PRELOAD völlig (liegt nicht an Java/LWJGL, woanders funzt es).

* oder es gibt grundsätzlich kein VAC, wenn man TF2 von der Kommandozeile startet. Das weiß ich nicht. Steam hat arge Probleme mit meinem Preload-Shim, ein Hintergrundprozess scheint Steam dann immer wegzusterben, worauf Steam quasi permanent in einen 2-3 Sekunden Timeout hängt.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 11.11.2014 19:35]
11.11.2014 19:33:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
du willst vielleicht das steam overlay zeugs abschalten.
11.11.2014 20:32:45  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Jain, mein Problem ist eine Ebene tiefer.

TF2/Source lädt die libGL.so explizit. Daher sieht TF2 das glXSwapBuffers aus meinem LD_PRELOAD-Shim nicht.
Daher mache ich als Gegenmaßnahme folgendes:

 
Code:
void *__libc_dlsym (void *, const char *);

void *dlsym(void *handle, const char *name)
{
    if(!real_dlsym) {
	fprintf(stderr, "with_smaa: Getting real dlsym...\n");
	void *libdl = dlopen(lib_path("libdl.so"), RTLD_NOW);
	real_dlsym = __libc_dlsym(libdl, "dlsym");	
	fprintf(stderr, "with_smaa: real_dlsym=%p\n", real_dlsym);
    }
    
    if (!strcmp(name, "dlsym")) {
	return (void*) dlsym;
    } else if(!strcmp(name, "glXGetProcAddressARB")) {
	fprintf(stderr, "with_smaa: dlsym: redirecting glXGetProcAddressARB\n");
	return (void*) glXGetProcAddress;
    } else if(!strcmp(name, "glXGetProcAddress")) {
	fprintf(stderr, "with_smaa: dlsym: redirecting glXGetProcAddress\n");
	return (void*) glXGetProcAddress;
    } else if(!strcmp(name, "glXSwapBuffers")) {
	fprintf(stderr, "with_smaa: dlsym: redirecting glXSwapBuffers\n");
	return (void*) glXSwapBuffers;
    }

    return real_dlsym(handle, name);
}


Das funktioniert.

Nächster Schritt: LD_PRELOAD für Steam setzen, damit es übers Environment bei TF2 ankommt und ich auch online spielen kann.

Problem: __libc_dlsym scheint nicht 100 % das gleiche Verhalten wie dlsym zu haben. Ich vermute mal, dass dlsym sich irgendeinen glibc-internen Lock holt und erst dann eine interne Funktion aufruft, die ich hier als __libc_dlsym oder auch _dl_sym oder so sehen kann. Das verursacht m.E. die Crashes und Probleme mit Steam (oder vll. auch die Race-Condition zu real_dlsym, aber da müsste schon ein Funktionsaufruf während real_dlsym geschrieben wird stattfinden, und dafür ist mir das zu reproduzierbar), denn: wenn ich alles rauskommentiere was danach kommt und nur noch real_dlsym aufrufe, bestehen die Probleme. Nehme ich es ganz raus: Läuft 1a.

Ich sehe also ca. folgende Problemlösungen hier:
a) dlsym nicht überschreiben und stattdessen per Code-Injection in den Tabellen im Speicher der libGL.so rumstochern. Das könnte funktionieren.
b) Code-Injection, glXSwapBuffers in der libGL finden und durch JMP zu meinen glXSwapBuffers ersetzen. So wie Detours das unter Windows macht. Das funktioniert garantiert, egal auf welche der (mindestens) drei Methoden die Zielanwendung an den Funktionspointer zu glXSwapBuffers kommt.

Für b) möchte ich gern eine Library haben, damit ich da nicht selber Assembler-Code schreiben muss. Weil das garantiert schief geht Breites Grinsen

Unabhängig davon habe ich noch eine Blacklist, wo basename(readlink("/proc/self/exe")) mit abgeglichen wird (und dann "steam" drin steht), weil SMAA auf eine GUI echt Scheiße aussieht.


/e: Ach was soll der Geiz, ich wrappe einfach (fast) alles in dlsym in einen globalen Mutex. Wenn's dann noch Probleme gibt, habe ich ein ganz anderes Problem.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von csde_rats am 11.11.2014 20:59]
11.11.2014 20:47:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Rufus

AUP Rufus 12.02.2008
 
Zitat von hoschi

Bei Archlinux muss man keine Mailinglisten lesen, alles notwendige sagt einem Pacman oder die Website.


"Mailinglisten" war selbstverständlich eine Überspitzung von "man muss _überhaupt_ etwas lesen bevor man sein System gefahrlos updaten kann: wtf." Ich bin mir aber sicher, dir war das vollkommen klar und du hast nur neben der bequemen Abkürzung über meine Wortwahl keinen anderen Weg gesehen, um diese irrsinnige Praxis zu rechtfertigen. Und damit zurück ins Studio.
11.11.2014 21:19:03  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Anarchy

Mr Crow
Es ist der 11. November 2014
11.11.2014 22:43:02  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
ist nicht so dramatisch, keiner nutzt windows und es ist karneval. peinlich/erstaunt
11.11.2014 22:54:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Und das betrifft auch nur alles seit 2003.
11.11.2014 23:01:39  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Breites Grinsen

Hat jemand das Bild mit dem Chemiehund und "I have no idea what I'm doing"?

(Immerhin, er kommt bis _abs, dann crasht er natürlich, weil _real_abs nix gibt ; ich hab keine Ahnung wie ich da drumherum arbeiten soll. Plus, ich habe fast keine Ahnung von x86 Assembly, plus ich weiß nicht, wie Calling Conventions funktionieren. Ich glaube, ich geh lieber wieder Detours-artige Bibliotheken für Linux googeln.)

[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 11.11.2014 23:06]
11.11.2014 23:03:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Sollte ich jemals meinen Abschluss bekommen, ziehe ich ernsthaft in Erwägung mit sowas auf einem T-Shirt bei der Verleihung aufzukreuzen:


e: Detours? Oui! Leidensgenosse. Nur dass ich das für Windows stricken darf. Mag mir jemand sagen, warum:

IoCreateDevice(...) für \\.\TestDriver klappt, winobj auch das Device zeigt aber dessen Eigenschaften nicht anzeigen kann, weil die angegebene Datein nicht gefunden werden kann. Die Userland-App sagt auch, dass CreateFile(..., \\.\TestDriver, ...) fehlschlägt weil es die Datei nicht gäbe?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von teK am 11.11.2014 23:13]
11.11.2014 23:10:36  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Für Windows gibt es immerhin ziemlich viele brauchbare Detours-Implementierungen. Für Linux finde ich einfach... gar nüscht. Außer besagtes baiduhook, was aber zum einen C++ ist und ich zum anderen nicht ans Laufen kriege.

Ich mein, ich kann doch schlecht der einzige sein, für dessen Anwendung LD_PRELOAD zu schwach ist?

Zu meinem Problem von oben ("wie rufe ich denn jetzt die Originalfunktion auf, wenn ich sie mit meinem PUSH/JMP überschrieben habe?"):
- Wenn der Originalcode mit -fPIC kompiliert wurde, dann müsste der doch auch noch funktionieren, wenn ich den $sonstwo hinkopiere, oder? (Knackpunkt!) (e: Aha, PIC scheint sich mehr auf das Objekt/Image als ganzes zu beziehen und nicht auf eine einzelne Funktion. Tja, dann äh, muss ich den Anfang der Funktion disassemblieren(!), die would-be-überschriebenen Opcodes irgendwohin kopieren, PUSH/RET auf die Originalfunktion + Offset vom letzten geretteten Opcode machen?)
- D.h.: ELF der .so lesen, Funktion im Image nach der gehookten Funktion raussuchen
- Speicherblock passender Größe besorgen
- memprotect
- Funktion rüberkopieren, Pointer merken
- Im Hook: Pointer zu C-Funktionspointer casten, aufrufen

(e: In x64 mache ich PUSH <imm64> / RET fürs Trampolin, in x86 kann ich das einfacher haben mittels JMP <imm32>, oder?)
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von csde_rats am 11.11.2014 23:28]
11.11.2014 23:23:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Nein, ich bin schlechter dran

Viel Erfolg noch.
11.11.2014 23:35:31  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Ah.

Mir ist die Idee gekommen: Die ersten paar Instruktionen so einer Funktionen gehören ja zur ABI und sind damit durch ABI und Signatur eindeutig bestimmt. Also brauche ich nix zu disassemblieren, man schaut nur einmal mittels objdump* nach, wie die ersten paar Instruktionen (ich brauche ja nur 10 Byte) aussehen und packt die als Array in den eigenen Quellcode. Davor noch den absoluten Sprung, den Kram in einen Buffer kopieren, mprotect, Zeiger merken, fertig. Mal ausprobieren.
12.11.2014 1:15:40  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
du könntest dir natürlich auch automatisch eben einen wrapper für die exportierten libgl sachen generieren lassen und die richtige libgl umbenennen bzw. den symlink umbiegen.
dann kannst du in deiner libgl einfach alles abfangen und machen was du willst. du musst dann nur den ganzen kram einmal sauber forwarden.
12.11.2014 1:42:11  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
...und wenn die Anwendung dlopen("/usr/lib/libGL.so") macht?

Andererseits wäre das wohl die sauberere Lösung...
12.11.2014 10:15:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Krypt0n

Arctic
verschmitzt lachen
 
Code:
sudo cp ~/mylibGl.so /usr/lib/libGL.so
12.11.2014 10:41:18  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
Top kek Breites Grinsen
12.11.2014 13:22:39  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
http://seclists.org/oss-sec/2014/q4/592
 

However, systemd-resolved does not implement any of the hardening
recommendations of rfc5452.



Die Probleme, die es mit sich bringt, wenn man einfach a) absolut von sich selbst überzeugt ist und b) alles neu machen muss, hätte man schon im Vorfeld erkennen müssen. Vielleicht nicht die Leute dort selbst, aber das gesamte Umfeld.

http://www.youtube.com/watch?v=lpP43u8f4BI#t=2m
12.11.2014 13:54:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
flying sheep

AUP flying sheep 04.12.2011
 
Zitat von csde_rats

Top kek Breites Grinsen

die marke gibt es bei unserer haus-döneria wirklich!
12.11.2014 14:05:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
YT

Arctic
Microsoft Open Sources .NET, Saying It Will Run On Linux and Mac
12.11.2014 19:37:38  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Daddi89

AUP Daddi89 28.05.2020
 
Zitat von YT

Microsoft Open Sources .NET, Saying It Will Run On Linux and Mac



Wow, tolle Sache. War das abzusehen?
12.11.2014 19:39:00  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
theromi

AUP theromi 02.06.2020
Auch die DRM Sachen? Schliesst das Silverlight mit ein?

Sonst ist es nutzlos.
12.11.2014 19:43:41  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

AUP csde_rats 04.09.2021
 
Zitat von Daddi89

 
Zitat von YT

Microsoft Open Sources .NET, Saying It Will Run On Linux and Mac



Wow, tolle Sache. War das abzusehen?



Ich glaube nicht, dass sich Microsoft damit abgefunden hat, dass Windows nicht überall benutzt wird. Vielmehr haben sie es jetzt wohl eingesehen und arbeiten daran, dass wieder mehr Windows genutzt wird. zB. indem man Sachen open-sourced, um in die anderen Märkte reinzukommen ("Plattform XYZ jetzt in ganz Toll auch auf OSX und Linux"). Später gibt es dann bestimmte Features nur für Windows ("... erstmal nur für Windows, ist ja auch unsere Hauptplatform. Später auch anderswo, versprochen!"), vielleicht auch mit der einen oder anderen kleinen Inkompatibilität. Write once, debug everywhere. Am Ende bleiben die Leute dann doch wieder an Windows gebunden.

tl;dr würde ich keineswegs wundern, wenn die gleiche MS-Strategie wie so oft dahinter steckt. Ich sage nur Visual J++.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von csde_rats am 12.11.2014 19:54]
12.11.2014 19:54:22  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Ich soll demnächst gut 40 Rechner ohne administrativen Mehraufwand aufstellen. Die Teile sollen eine minimale Weboberfläche in Silverlight (urgs, spuck, würg) ausführen. Mein letzter Strohhalm ist pipelight.
Alternativ kommen erstmal dann 40 Festplatten, mehr Rechenleistung, 40x1xxEUR Lizenzen und Administrations-/Installationsaufwand auf uns zu.

Keine Ahnung, warum das Teil SL können muss (es handelt sich um eine BDE-Obefläche zur Rückmeldung von Produktionsmengen).
12.11.2014 20:12:19  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
RichterSkala

AUP RichterSkala 31.12.2010
Warum ist überhaupt irgendwas in Silverlight, was nicht von MS kommt oder deren DRM Zeug nutzt?
12.11.2014 20:18:58  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
Willst du nicht wissen. Das umgebende Produkt nutzt, soweit mir bekannt: IIS, Tomcat, MSSQL (oder Oracle), Java-Applets, Java, Flash, Spring und für die Maske Silverlight.


FML
12.11.2014 20:22:08  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
TheRealHawk

AUP TheRealHawk 26.11.2007
Der SIP Client unserer PBX basierte auch auf Silverlight. Der war nach genau einer Version wieder Geschichte.
12.11.2014 20:22:34  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Rufus

AUP Rufus 12.02.2008
Mal ne 101-Frage zu IPv6: Wie geht das?

Ich bin mit v4-NAT aufgewachsen und steh jetzt wie der Depp vorm Feld und frage mich, wie ich das was ich bisher mit v4 hatte mit v6 abbilde. Konkret: An welchen Stellen und mit welchen Mitteln definiere ich, wie ein Rechner kommunizieren darf?

Beispiel: Ich hätte nen ISP mit nativem v6. Ich bekomme ein Netz zugeteilt, kann meinen Geräten daheim Adressen aus diesem Netz geben ... und dann? Muss sich jetzt das Gerät, das als erstes am Kabel hängt und physikalisch den gesamten eingehenden Traffic bekommt um Regelwerke und weiteres Routing nach innen kümmern?

Anderes Beispiel: Habe (bisher) einen nginx-proxy mit öffentlicher v4-IP, der mehrere Backends mit privaten v4-IPs hinter sich hat. Wie addressiere ich die Backends mit v6 ohne sie gleich irgendwie global erreichbar zu machen?

Ich glaub, ich steh da einfach fett auf dem Schlauch.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Rufus am 12.11.2014 20:26]
12.11.2014 20:24:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
teK

tek
 
Zitat von TheRealHawk

Der SIP Client unserer PBX basierte auch auf Silverlight. Der war nach genau einer Version wieder Geschichte.



Von den Key-Usern, die die Schulung für das Teil gemacht haben, kam auch die Rückmeldung: "hat nicht mal auf dem Rechner des Beraters funktioniert ist bei uns regelmäßig abgestürtzt".
12.11.2014 20:26:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Traxer

Mod GSG9
 
Zitat von Daddi89

Wow, tolle Sache. War das abzusehen?


ja, seit dem sie anfang des jahres den ASP.NET kram und die C# compiler infrastruktur auf gemacht haben.
der jetzige kram wird halt benötigt, damit der kram sauber läuft, da der mono rotz halt genau das ist, rotz. da fehlt an allen ecken und kanten was und es ist einfach in sehr vielen bereichen nicht zu der MS .NET version kompatibel.

 
Zitat von theromi

Auch die DRM Sachen?


nein, die sind nicht direkter bestandteil von .NET sondern der windows media foundation (oder wie auch immer das subsystem inzwischen heissen mag).

 
Zitat von theromi

Schliesst das Silverlight mit ein?


eher weniger, weil silverlight seit jahren (2010 rum müsste die notice gekommen sein) deprecated und nur noch künstlich mit security fixes am leben erhalten wird, bis es 2021 dann endgültig vollständig unsupported ist.

 
Zitat von csde_rats

man Sachen open-sourced, um in die anderen Märkte reinzukommen


aus dem kontext gezogen. das ist deren vermutliche idee dahinter. windows server haben sich bisher nirgends durchgesetzt wo last vorhanden ist oder wo du wirkliche services hast.
die einzigen, die das einsetzten sind hoffnungslose firmen, die ihrem domain kram nicht anders gemanaged bekommen und noch nie was von ldap gehört haben und die, die direkt mit MS verträge haben, was leider viel zu viele sind, weil die entscheider einfach in vielen fällen zu dumm sind.

 
Zitat von csde_rats

vielleicht auch mit der einen oder anderen kleinen Inkompatibilität.


die haben wir jetzt schon, die nennt sich mono.
das kann also irgendwo/wie nur besser werden und wenn sie das wirklich so durchziehen, wie sie es jetzt seit knapp nem jahr propagieren, dann könnte das recht nett werden.
davon abgesehen, der code steht entweder unter GPL oder MIT lizenz. sobald der einmal raus ist, kann MS da nicht mehr viel machen, andernfalls forkt sich den kram jemand.

 
Zitat von csde_rats

Write once, debug everywhere.


das wird es so oder so werden, genau wie bei java und allen anderen "write once, run everywhere" sprachen und frameworks auch.
will man sachen haben, die vernünftig überall funktionieren, dann muss man die entsprechend anpassen. die gloreiche java idee, von der obiger spruch stammt, sollte endlich mal aus dem köpfen von vielen vielen menschen verschwinden, denn das system (nicht OS) gibt es nicht, bei dem das so läuft.

 
Zitat von csde_rats

tl;dr würde ich keineswegs wundern, wenn die gleiche MS-Strategie wie so oft dahinter steckt.


die strategie ist, dass sie ihre technologie namens ASP.NET verbreiten wollen, als gegenspieler zu PHP und Java.
sie haben nur inzwischen mal eingesehen, dass sie das nicht mit einer windows server lizenz verknüpfen können, da die leute dann keine lust mehr drauf haben.
windows ist nunmal einfach kein server system. es ist und bleibt einfach ein desktop system.


um es kurz klar zu stellen, MS gibt da nicht den vollen .NET stack frei, sondern den server core.
das ist die infrastruktur, die benötigt wird, damit ASP.NET und die von MS gekauften/entwickelten frameworks darauf laufen.
dazu zählt natürlich auch die core runtime, ohne die funktioniert halt nichts höheres.
dazu zählt aber ganz sicher NICHT die WPF oder ähnliche sachen aus der kategorie.

das hier ist übrigens ein wenig inhaltlich korrekter: http://blogs.msdn.com/b/somasegar/archive/2014/11/12/opening-up-visual-studio-and-net-to-every-developer-any-application-net-server-core-open-source-and-cross-platform-visual-studio-community-2013-and-preview-of-visual-studio-2015-and-net-2015.aspx

und etwas klarer: http://www.hanselman.com/blog/AnnouncingNET2015NETasOpenSourceNETonMacandLinuxandVisualStudioCommunity.aspx

was ich an dem artikel übrigens sehr viel interessanter finde ist der punkt, dass VS 2015 nativ Clang inkl. debugger unterstützen wird! das darf man dann wohl als FUCK YEAH bezeichnen.
oh und natürlich das VS 2013 professionell jetzt keine 4k euro mehr kostet sondern kostenlos ist. Augenzwinkern mit vollem funktionsumfang.
12.11.2014 20:28:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: 100 gute Gründe für Linux ( Gute Informatiker für ++30 )
« vorherige 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 nächste »

mods.de - Forum » Linux » 

Hop to:  

Mod-Aktionen:
10.02.2015 19:29:59 teK hat diesen Thread geschlossen.

| tech | impressum