Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.05.2016, 23:30

Visual Studio und Spyware

Wer es noch nicht mitbekommen hat: Seit dem letzten Update von Visual Studio gibt es kostenlos zum kompilierten Programm zusätzlichen, kompilierten Code von Visual Studio dazu.
Kompiliert man den folgenden Code, führt das zu dem darunter eingefügtem Assembly.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
#include "stdafx.h"
#include <iostream>

int main()
{
  volatile int x = 0;
  return x;
}

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.text:004052CA                 push    edi
.text:004052CB                 call    ___telemetry_main_invoke_trigger
.text:004052D0                 call    ___p___argv
.text:004052D5                 mov     edi, eax
.text:004052D7                 call    ___p___argc
.text:004052DC                 mov     esi, eax
.text:004052DE                 call    __get_initial_narrow_environment
.text:004052E3                 push    eax
.text:004052E4                 push    dword ptr [edi] ; argv
.text:004052E6                 push    dword ptr [esi] ; argc
.text:004052E8                 call    _main
.text:004052ED                 mov     esi, eax
.text:004052EF                 push    0
.text:004052F1                 call    ___telemetry_main_return_trigger
.text:004052F6                 add     esp, 14h
.text:004052F9                 call    ___scrt_is_managed_app

Das ganze taucht auch im Release-Modus auf. Man soll es in der aktuellen Version durch hinzufügen der Datei

C-/C++-Quelltext

1
VC\crt\src\linkopts\notelemetry.cpp
oder durch linken der entsprechenden *.obj problemlos abschalten können. Das ganze soll im kommenden Update durch den berechtigten Shitstorm wieder herausgenommen werden. Ein Glück weigere ich mich, den Rotz zu benutzen.
Quelle A und Quelle B (Zugriff: 12.05.2016)

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

13.05.2016, 08:11

Um jetzt mal etwas konkreten Inhalt in das Topic zu bekommen: Was hat das mit Spyware zu tun? Den zweiten Artikel verstehe ich zumindest so, dass da nur eine API benutzt wird, die unnötig Overhead-lastig und somit zu langsam für speziell die Spiele-Entwicklung ist. Von Spyware sehe ich aber nichts.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

13.05.2016, 11:00

Ein reißerischer Titel, stimmt schon. :whistling:

MfG
Check

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

13.05.2016, 11:29

Kompiliert man den folgenden Code, führt das zu dem darunter eingefügtem Assembly.

Und was is das Problem damit?

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

13.05.2016, 11:36

Kompiliert man den folgenden Code, führt das zu dem darunter eingefügtem Assembly.

Und was is das Problem damit?

Dass automatisch Code eingefügt wird, den man als Programmierer nicht verlangt hat. Zum einen kann sowas zu Performanceeinbrüchen führen, zum anderen weiß man nicht unbedingt, was dahinter steht (E.T. telefonieren nach Haus)
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

6

13.05.2016, 11:36

Wie in den Artikeln zu finden, handelt es sich um ein Performancemessungstool, so habe ich das verstanden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

13.05.2016, 11:41

Das ist nicht das, was ich aus dem zweiten Artikel herauslese. Dort habe ich verstanden, dass es Security-Code ist, der einen Jump mitten in eine Funktion hinein unterbindet, was potentielle Angriffe verhindern kann, dafür aber eventuell unnötig Performance kostet. Ist die Frage, wie unnötig das in Zeiten von Raubkopien und Cracks (die ja unter anderem genau solche illegalen Jumps nutzen) für Spiele wirklich ist, aber jammern kann man auf jeden Fall erst einmal.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

13.05.2016, 11:42

Kompiliert man den folgenden Code, führt das zu dem darunter eingefügtem Assembly.

Und was is das Problem damit?

Dass automatisch Code eingefügt wird, den man als Programmierer nicht verlangt hat. Zum einen kann sowas zu Performanceeinbrüchen führen, zum anderen weiß man nicht unbedingt, was dahinter steht (E.T. telefonieren nach Haus)

Und du hast dich natürlich erstmal ausführlich informiert, bevor du hier FUD von wegen von Spyware und "nach Hause telefonieren" verbreitest. Ich schlage vor dass du:
  1. Dir mal die komplette Disassembly einer Binary gebaut mit deinem Lieblingscompiler unter seinen Default Flags anschaust und mir dann sagst, wieviel % davon du "verlangt hast".
  2. Das nächste Mal zumindest mal kurz mit einem Debugger deiner Wahl in solchen "Spywarecode" reinsteppest und schaust, was er wirklich tut, bevor du Schwachsinn postest. Im konkreten Fall hättest du dann nämlich gemerkt, dass diese "Telemetry" effektiv nichts anderes tut, als zu schauen, ob ein OS Performance Event aktiv ist (was es standardmäßig nicht ist, weshalb die Funktion auch schnell wieder returned, ganz ohne irgendwas anzustellen) und, wenn ja, das Event auslöst, welches am Ende die Ausführungszeit von main() misst... ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (13.05.2016, 11:55)


Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

9

13.05.2016, 12:02

...

Es geht um's Prinzip.

Edit: Weil ich das nicht so stehen lassen will und du mir mit deinem rechthaberischen Getue langsam auf die Nerven gehst: Ich verfolge die Diskussion auf Reddit schon seit dem Tag, an dem sie geposted wurde. Was ich hier mache ist auch nicht FUD wegen Spyware. Es geht hier um das Prinzip, dass ein Compiler beliebig Code in die Assembly schieben kann und dass dieser Code machen kann, was er will. Dabei muss dieser Code nichts mehr mit dem gemein haben, was man da in C++ geschrieben hat. Der Compiler kann auch hingehen und aus deinem x += y ein x -= y machen. Dass Microsoft genau diesen Telemetry-Code in der CRT zum "Nach Hause telefonieren" benutzt, habe ich nirgendwo gesagt. Es geht aber um das Prinzip, dass ein Compiler eine sehr hohe Relevanz in Sachen Programmsicherheit hat und dass man sich dessen bewusst sein sollte.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Nimelrian« (13.05.2016, 12:12)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

13.05.2016, 12:03

Und welches Prinzip genau wäre das? Keine Symbolnamen die in manchen Leuten Paranoia auslösen könnten?

Werbeanzeige