Beiträge von SBIKA

    Also einfach dann z.b
    ..._StreamCreateFile("http://1live.radio.de",

    Immer noch nicht *CreateFile, sondern *CreateURL ;)
    1live.radio.de scheint eine Webseite zu sein. Man braucht die URL zu dem MP3/Audio Stream. Auf einslive.de konnte ich nur einen nicht HTTP Stream auf 95.140.236.11:1935 finden. Eventuell versteht das Bass Interface auch *.m3u Dateien (Playlists). In dem Fall: http://www.wdr.de/wdrlive/media/einslive.m3u
    Ansonsten sollte der zur Zeit korrekte Stream unter folgender URL zu finden sein: http://1live.akacast.akamaistr…st.akamaistream.net/1live
    Einer der letzten beiden URLs, oder beide sollten mit *CreateURL funktionieren. Die letzte URL ist eventuell nur temporaer korrekt, aber dafuer verweist diese direkt auf den MP3 Stream. Aendert sich die URL kann man die neue URL durch neues Herunterladen der m3u herausfinden.

    Der mysql_log nach wird Load_Frak_Vehicle() gar nicht ausgefuehrt und GameModeExit() wird ohne bestehende Verbindung (ich sehe kein CMySQLHandle::Create vor den mysql_tquerys) zum MySQL Server aufgerufen. Die Verbindung zum MySQL Server wird erst nachdem Save_Frak_Vehicle() abgearbeitet wurde initialisiert.
    Zumindest, sofern man der Log Datei glauben schenken darf.
    Wo wird denn Load_Frak_Vehicle() aufgerufen und wo wird die MySQL Verbindung initialisiert? Beides in OnGameModeInit()?

    Dann sag mir bitte auch, was Du unter Kapazitäten verstehst. Ich habe es soeben nochmal getestet, das Programm ist mit oder ohne Import gleich groß. Also verstehe ich nicht, was Du mir damit sagen willst.

    Wenn das so ist, habe ich was neues gelernt und widerrufe meine Sätze zu dem Import.

    Wieder einmal hat das selbstsichere Auftreten eines Halbwissenden den wahrheitssuchenden soweit verunsichert, dass er alles frisst, auch, wenn er selbst bereits Versuche dazu angestellt hat.
    Ich kann dem Leser dieses Posts nur empfehlen, dass, wenn man sich nicht sicher ist, ob jemand anderes die Wahrheit sagt (und im Internet, sollte man bedenken, dass die meisten Quellen unsicher sind), man mit den einem selbst zur Verfuegung stehenden Methoden und Wissen zu ueberpruefen, ob das geschriebene tatsaechlich der Wahrheit entspricht.
    So manches mal war ich selbst fast ueberzeugt von (aber nach wie vor kritisch gegenueber) einer Aussage, nachdem jemand auf mich ein gequatscht hat und als ich es ueberprueft habe, hat sich manches mal das Gegenteil herausgestellt.


    John_Hunter hat ja bereits Versuche, leider anscheinend nur anhand der Dateigroesse, durchgefuehrt. Ich empfehle ein Programm zum Ueberpruefen von Datei-differenzen zu suchen. Das in Windows integrierte 'fc' (Anwendung: fc "C:\datei1.txt" "C:\datei2.txt") kann bei kleineren Unterschieden bereits helfen.


    Die meisten Programmiersprachen (mir ist keine bekannt welche dies nicht tut) laden die kompletten Bibliotheken, auch, wenn nur eine Funktion daraus gebraucht wird und, ob man nun in den .NET Sprachen oben 'imports Threading.Thread' und unten 'Sleep', oder direkt unten 'Threading.Thread.Sleep' schreibt bleibt sich vollkommen egal. Bestenfalls verringert sich die Zeit fuer das Kompilieren, aber auf dem System des Endnutzers ist kein Unterschied.
    Die bei meinen Versuchen gefundenen Unterschiede, die 'fc' mir ausgegeben hat, waren lediglich Unterschiede, die bei jedem neu-kompilieren auftreten. Wie eine neu generierte GUID und zwei aktualisierte Zeitstempel. Alles andere war vollkommen identisch.
    Wenn man also keine Ahnung hat.. ihr wisst ja. ;)
    (Ausprobieren und lernen, bis man Ahnung hat. Dann erst mitreden.)


    Auch, ob man nun XML Dateien, ini Dateien, oder Registry keys verwendet ist meist Hauptsaechlich Geschmackssache/Einstellungssache. Wenn man auf jedes Byte an Ressourcen Wert legt sind Ini-Dateien unter Windows oftmals sogar weit besser, als XML-Dateien. XML-Dateien nehmen (bei kleineren Datenmengen) mehr Speicherplatz auf der Festplatte ein, da man Tags zum oeffnen und schliessen braucht und man braucht zusaetzlichen Programmcode (Quelltext/Bibliotheken), um XML-Dateien zu verarbeiten. In Ini-Dateien hat man hingegen meist keine Tags zum schliessen und unter Windows braucht man nichtmal zusaetzlichen Quelltext, oder Bibliotheken, um die Daten aus der Datei heraus zu filtern, da, die von jedem Programm genutzte kernel Bibliothek bereits die Funktionen zum Verarbeiten von Ini-Dateien beinhaltet. (GetPrivateProfile-Funktionen, wie GetPrivateProfileString())


    Aber am Anfang wartet er ein bisschen, dann geht der Ladebalken von 3% auf 100% und gibt mir die Fehlermeldung. (Fehlermeldung sollte kommen) Warum?

    Der Ladebalken sollte von 3 auf 90 auf 100 gehen. Das liegt daran, dass es so Programmiert wurde. ProgressBar1.Value (der Wert des Prozessbalkens) wird waehrend der gesamten Wartezeit in dem Directory.Exists("C:\Maik")-Block nicht veraendert. Ausserdem wird die config.ini Datei in dem Directory.Exists-Block nicht erstellt. Es werden nur die Ordner erstellt, weswegen die Fehlermeldung kommt, sofern C:\Maik erst erstellt werden muss.

    Der Quelltext wird laut Webseite nicht veroeffentlicht. (http://www.samp-live.com/faq/)
    Man koennte hoechstens noch versuchen einen der Ersteller zu erreichen und nett zu fragen: http://www.samp-live.com/credits/


    Dass die Entwickler einem dahergelaufenen Unbekannten den Quelltext in die Hand druecken, wage ich aber zu bezweifeln, ausser sie entschliessen sich den Quelltext ganz zu veroeffentlichen.
    Wenn man ueber die Webseite keinen Kontakt aufbauen kann, einfach mal im englischen sa-mp Forum erkundigen. Vielleicht ist noch einer der Entwickler im Forum aktiv.


    Ansonsten kann man nur versuchen das Programm nach zu programmieren. Hier ein paar Informationen zum Aufbau von samp-live:
    Der Updater wurde in .NET geschrieben und laedt eine Liste mit allen herunterladbaren Dateien und deren Zeitstempel herunter und vergleicht diese mit den vorhandenen Dateien. D3d9.dll ist (fast) nur dazu da, um live.dll zu laden. Dinput8.dll ist dazu da, um die Maus von SA-MP/GTA zu befreien. Die live.dll uebernimmt die Kommunikation mit dem Webserver (mit Hilfe der cURL Bibliothek) und zeigt die mit der MyGUI Bibliothek erstellten Dialoge an. Die Webbrowser funktionalitaet wird von dem MyGUI Berkelium Plugin realisiert (welches den Google chrome Browser einbindet). Die genannten Bibliotheken und Plugins sind entweder open-source, oder zumindest umsonst und auch fuer die DirectX proxy dlls (D3D9 und Dinput8) gibt es vorgefertigte open-source Loesungen, in welche man aber noch MyGUI und cURL korrekt einbinden muss.
    Ich denke aber nicht, dass es den Aufwand wert ist. Die Entwickler von samp-live haben sicherlich aufgegeben, weil es kein grosses Interesse an einem solchen System gibt. Es gibt schliesslich Alternativen, die weit mehr Benutzer und Funktionen aufweisen, wie z.B. XFire, oder Steam ermoeglicht meines Wissens nach ebenfalls, das Overlay in nicht-Steam spielen anzuzeigen.

    Fehlermeldung:

    Code
    Eine Ausnahme (erste Chance) bei 0x00c71cb2 in samp_client.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.


    ....
    D3DXCreateFont( directXDevice, 20, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &lpD3DFont );

    lpD3DFont->DrawText(NULL, "Hello World", -1, &rct, 0, fontColor )

    Zugriffsverletzung (Fehlercode C00..5) an Position 0 tritt zum Beispiel beim Versuch auf, wenn man versucht auf den Wert hinter einem Null-Zeiger zuzugreifen. (void *abc = NULL; print( *abc ); )


    Sofern es an der gezeigten Methode liegt (und directXDevice korrekt ist), wird D3DXCreateFont versagt haben. Man sollte immer die Rueckgabewerte von Funktionen ueberpruefen, die einen Fehler ausloesen koennen und vor Nutzen von Zeigern sichergehen, dass der Zeiger auch auf etwas zeigt, was man haben moechte.


    Nach erfolgreichem Erstellen der Font, sollte der Zeiger lpD3DFont gespeichert werden und vor einem erneuten Aufruf von D3DXCreateFont() zumindest ueberprueft werden, ob man bereits eine Font hat (der Zeiger also nicht Null ist). In dem Beispiel code wird fuer jedes Bild versucht eine neue Font zu initialisieren.
    Wenn D3DXCreateFont nicht erfolgreich war, kann es entweder daran liegen (neue Font fuer jedes Bild), oder an einer falschen Benutzung. Gibt D3DXCreateFont() D3DERR_INVALIDCALL zurueck kann es zum Beispiel sein, dass das angegebene DirectXDevice nicht korrekt ist.

    Alelrdings geht die Bildwiederholfrequenz immer wieder auf 85Hz, obwohl mein Bildschirm nur für 60 Hz ausgelegt ist.

    Da wird wohl das Problem mit GTA:IV und Arma3 liegen.
    Kannst trotzdem mal ausprobieren, ob GTA:IV laeuft, nachdem "Keine Skalierung", oder "Skalierung vornehmen mit:" "Grafikkarte" (die Einstellungen auf dem geposteten Bild) eingestellt wurde, oder ob sich zumindest die Frequenz dann aendern laesst.


    Szenario 1 ("Das Spiel ist gestartet, lief eine Zeit lang und ploetzlich wird der Bildschirm schwarz") trifft in einigen Spielen zu.

    Danach kann man nicht mehr ins Spiel wechseln (Alt-Tab auf den Desktop und zurueck)? Der einzige Ausloeser dafuer, dass ploetzlich nach einer Zeit des Spielens der Bildschirm ausgeht/kein Signal mehr bekommt, und der mir gerade auf Anhieb einfaellt ist, dass die Grafikkarte vielleicht ueberhitzt ist? Lohnt sich vielleicht mal zu ueberpruefen, wie die (maximal) Temperaturen von der Grafikkarte sind, wenn der Bildschirm ausgeht.


    Es kann natuerlich auch sein, dass die Grafikkarte vollkommen in Ordnung ist und ein Hardwaredefekt am Bildschirm, oder am Kabel/an der Verkabelung vorliegt.
    Man merkt sicherlich, dass ich hier nur noch am rumraten bin. Ich denke nicht, dass ich hier weiterhelfen konnte. ;)
    Vielleicht hat jemand anders eine Vermutung/Ahnung/Kenntnis, was das Problem sein koennte?


    Um das Problem zu loesen, koennte man sich eventuell auch an den Support von NVIDIA wenden. Dass sich in den Einstellungen vom Treiber Bildwiederholfrequenzen einstellen lassen (und nicht verstellen lassen), die der Monitor gar nicht unterstuetzt hoert sich (meiner Laien-Meinung nach ;) ) nicht so ganz richtig an.

    Was wäre denn wenn man einen user nur SELECT Abfragen erlaubt? und dann nur für eine Tabelle.

    Dieses Programm, so wie es in der Beschreibung ist, braucht aber auch UPDATE Zugang. Mit nur einem User ist es relativ schwierig das ganze sicher zu realisieren. Um es abzusichern braeuchte jeder User seine eigene Tabelle (und damit seinen eigenen SQL-Server-User), um zu verhindern, dass ein Nutzer einfach alle User, oder nur die Admins, vom Server kickt. ( 'Serverjoin nur durch Launcher' )
    Alternativ kann man sicherlich auch etwas in SQL Programmieren, um das System sicher(er) zu machen.


    Mit nur einem (im Programm hartkodierten, so wie ich es aus diesem Thread hier verstanden habe) SQL-User ist es nicht so einfach den SQL-Server zu sichern. Es muss ja ueberprueft werden, ob der User sich mit dem Passwort einloggen darf. Wenn nun dieser eine (im Programm hartkodierter) SQL-User Zugang zu der User-Tabelle mit den Passwoertern hat, damit der Launcher auf der Client-Seite ueberpruefen kann, ob das Passwort richtig ist, haelt ihn auch nichts davon ab, zu ueberpruefen, ob das Passwort vom Admin immer noch 'Admin' ist. ;)



    Mit dem ermoeglichen eines direktem Zugangs zum SQL-Server fuer Nicht-Server-Administratoren (und wie man diesen sicher gestaltet) habe ich aber keine Erfahrung und wuerde so ein System nur nach viel Recherche und Tests online nehmen.

    Wäre eine nützliche Alternative und Innovation für ausgewählte Server. Authentifiziert man im Launcher fällt die Last für den Gameserver schonmal etwas kleiner aus.

    So innovativ und 'Next-Gen' ist das jetzt auch. Es gibt/gab schon einige Server mit Launcher, aber es lohnt sich erst, wenn man viele Spieler hat, die auch bereit sind sich zusatzsoftware zu installieren, um auf dem Server zu spielen.
    Die Idee mit dem Authentifizieren auf der Client-Seite, um den Server nicht so zu belasten finde ich echt gut. Man sollte das auch in Roleplay-Server einfuehren, dass der Server nicht die Nutzer-Daten speichert, sondern, dass der Nutzer beim 'Login' einfach eingibt, wie viel Geld, welches Admin Level, etc. er/sie hat. Damit wird der Server erheblich entlastet.


    Im Zweifelsfall 2. DB, wie gesagt.

    Dann habe ich eine richtige Datenbank, und eine in der totaler Unfug steht, und dann? Willst du die original Datenbank mit der jeder-darf-aendern-und-lesen-was-er-will-Datenbank synchronisieren?


    Hast Du ueberhaupt das Problem, welches von einigen hier angesprochen wurde, verstanden, oder ist es Dir einfach egal? Diese 'was solls?' und 'mit dem decompilen von .NET Programmen kennt sich ja sowieso keiner aus' Saetze sehen so danach aus, dass Du Dich anstatt mit dem Problem auseinander zu setzen, Dich darueber zu informieren und anschliessend die Sicherheitsmaengel zu beseitigen, einfach versuchst die Probleme weg zu diskutieren, vielleicht in der Hoffnung, dass sich jemand findet, der das Problem (ebenfalls?) nicht verstanden hat und Dir Geld fuer das Programm geben moechte. (Wobei immer noch unklar ist, ob das Programm verkauft werden soll, oder kostenlos veroeffentlicht werden soll..)
    Mit dem einfachen sichern gegen Dekompilierung ist es ueberigens nicht getan. Sicherlich, wird es die meisten langeweile-/Hobby-Taeter davon abhalten sich mit der Datenbank zu verbinden, aber, wenn jemand unbedingt mit seinen Cheats auf dem Server spielen will und sich nicht erst 5 Minuten mit der Materie beschaeftigt, wird er sich das Programm und den Traffic vom Programm genauer ansehen, und sich dann ueber die Zugangsdaten freuen. Auch kann es sein, dass einer der Nutzer ein unsicheres WLAN verwendet und jemand den Traffic mitloggt, zugegeben ein relativ unwahrscheinliches Szenario, aber auszuschliessen ist es nicht. Man braucht also nicht unbedingt das Programm auseinander zu nehmen um an die Zugangsdaten zu kommen.


    Wenn das auf Client und Serverseite ordentlich gemacht ist funktioniert das Problemlos & auch sicher.

    Das Programm kann zwar, gesichert werden, in dem der SQL-Server gut konfiguriert wird, aber der Aufwand dafuer waere um weiten mehr, als eine einfache PHP-Seite zu erstellen, die korrekt gesichert ist.
    Aber Du sagst es so, als ob Du bereits eine Loesung fuer die Sicherheitsprobleme hast? Wie sieht dein Konzept fuer den SQL-Server aus, um den zu sichern?


    Selbst wenn, was solls?

    Jo. Hast' schon Recht. Dann ist halt die Sicherheit des Servers gefaehrdet, na und? Ich hab' nichts zu verbergen! Kann gerne jeder meine Daten auslesen und aendern wie er Spass daran hat. Passwort verwende ich sowieso immer nur '123', mit Merkzettel beim Admin-Login, falls ich es doch mal vergesse und FTP-Passwoerter merk' ich mir sowieso nie, deswegen haben wir auch keins. Aber wer kennt sich schon mit FTP aus? Die Leute, die von FTP reden kennen sich doch sowieso nicht mit FTP aus.


    Sag doch einfach was du willst.


    Präsentieren und später evtl. kostenfrei zum Download anbieten oder willst du dafür eine Gegenleistung?

    Hier wird zur Zeit, doch sowieso nichts zum Verkauf angeboten ('Das Programm ist aktuell noch in Entwicklung, unterstützt aber schon die Grundfunktionen.', wie es im ersten Post steht). Deswegen denke ich, dass dieser Thread besser im Showroom aufgehoben waere, insbesondere in Anbetracht der Tatsache, dass der Themenersteller selbst sagt, dass er sich unsicher sei, ob das Programm verkauft/verschenkt wird.
    Meiner Auffassung nach gehoeren in den Marktplatz sowieso nur Threads zu Dingen, die bereits zum Verkauf stehen, und nicht zu Dingen, die vielleicht in ein paar Jahren zum Verkauf stehen koennten.

    Ich habe das Problem nicht ganz verstanden.
    Welches dieser drei Szenarien trifft zu:
    1 Das Spiel ist gestartet, lief eine Zeit lang und ploetzlich wird der Bildschirm schwarz?
    2 Das Spiel wurde gerade gestartet, der Bildschirm zeigt aber solange nichts an, bis man einmal auf den Desktop und zurueck ins Spiel gewechselt ist?
    3 Oder wird der Bildschirm beim Starten/Stoppen das Spiels kurz schwarz und zeigt erst nach einer Sekunde das Spiel/den Desktop an?
    Wenn es das letzte Szenario ist, sollte es kein Problem sein, denn bei groesseren (viele Daten die erst geladen, oder geschlossen werden muessen) Vollbild-Anwendungen ist soetwas normal.


    Das Problem mit Arma 3/GTA:IV entstand mit dem einbauen der neuen Grafikkarte?


    Wird die Meldung 'ungeeigneter Modus' nur bei Arma 3 und GTA:IV angezeigt? Ist die Meldung vom Monitor ausgehend (nicht anklickbar, meist einfache weisse Schrift auf schwarzen Hintergrund), oder vom Betriebssystem/Spiel (typische Windows-Nachrichten Box zum anklicken)?


    Im folgenden gehe ich davon aus, dass es vom Monitor ausgehend ist.
    Oftmals gibt es Probleme, wenn die eingestellte Bildwiederholfrequenz vom Monitor nicht unterstuetzt ist, aber soweit ich weiss aendert so gut wie kein Spiel die Bildwiederholfrequenz, bzw. nur, wenn der Nutzer dies Explizit einstellt.
    Einige Spiele bieten die Moeglichkeit die Grafikeinstellungen auch ausserhalb des Spiels zu aendern. Wenn das bei einem der beiden Spiele moeglich ist, einfach mal ausprobieren die Grafikeinstellungen niederiger/hoeher zu stellen. Insbesondere, wenn die Bildwiederholfrequenz einstellbar ist, sollte einfach mal ein etwas niedrigerer Wert ausprobiert werden.


    Manche Monitore sollen auch Probleme mit dem Skalieren haben. Wenn der Treiber es unterstuetzt, dann kann man ausprobieren, ob das Problem dadurch geloest ist, der Grafikkarte die Aufgabe des korrekten Skalierens zu ueberlassen.


    Ich habe hier zwei Links, die ein aehnliches Problem beschreiben und wo es erfolgreich geloest wurde, vielleicht hilft einer davon:
    http://www.tweakpc.de/forum/gr…ner-modus.html#post745155
    http://www.fragster.de/cmy/forum/18/6521/


    Zitat

    Der Monitor wird als nicht PnP-Monitor angezeigt. Womit kanns zusammenhängen?!

    Als was, oder wie, wird der Monitor, denn (im Geraetemanager) angezeigt? Wenn der mit Namen angezeigt wird (oder als PnP-Monitor) sollte es in Ordnung sein.


    Wenn das Problem geloest ist, bitte schreiben woran es lag bzw. was geholfen hat (und die ganzen Fragen koennen dann ignoriert werden ;) ).

    Verstehe nicht, wo genau der Vorteil im Vergleich zu meiner alten Methode, in das ca. 800 KM entfernte Neuhausen-Nymphenburg zu fahren und dort laut auf der Strasse mich ueber die schlechten Strassenverhaeltnisse in meiner Region zu beklagen, ist. In Neuhausen-Nymphenburg lassen sich mindestens genau so viele Menschen finden, die es interessiert.


    Im Ernst, Interessengemeinschaften lassen sich (zum Beispiel durch direkte Internet-Suche, oder eben dort, wo man Leute mit gleichen Interessen finden kann) viel einfacher finden, als auf einer 'allgemeinen Beschwerde-Webseite'. Wie schon hier im Thread gesagt wurde, wenn mich die Strassen in meiner Stadt/Region stoeren, dann kann ich mich beim Buergermeister beschweren und man findet auf dem lokalen Marktplatz wahrscheinlich mehr Leute, die genau so ueber die lokalen Strassen denken, als auf dieser Webseite.


    Zitat

    Wen interessieren all die kleinen Dinge, die uns nerven?
    Wann werden Politik und Verwaltung tätig?


    Es sind die kleinen Probleme, über die wir uns aufregen, auch wenn sich niemand dafür interessiert! Wir kümmern uns darum! Wutpunkte.de ist eine Plattform, auf der wir Dir ein Sprachrohr für die kleinen kommunalen Probleme bieten. Probleme, die von Verwaltung und Politik meist unter den Tisch gekehrt und vernachlässigt werden.

    Das bringt mir was? Gut, ich konnte meine vielleicht Sinnlose Meinung/Beschwerde kundtun und vielleicht liest auch jemand meine Nachricht, aber letztendlich wuerde ich mehr erreichen, wenn ich zum Buergermeister gehe und sage 'Hey, Herr Buergermeister, mich stoert dies und jenes.'. Wenn ich dann auch noch eine Unterschriften Liste vorweisen kann, von Leuten, die es ebenso stoert, habe ich weit schneller etwas erreicht, als, wenn ich meine Meinung auf dieser Webseite kundtue, wo meine Meinung dann Jahre/Monate lang vor sich hin gammelt, und letztendlich nur ab und zu ein gelangweilter Internet-Nutzer sich meine Beschwerde durchliest.


    Edit: Auf der Webseite wird zwar angegeben, dass man hofft, die Kommunen zu erreichen, aber von Hoffen kommt nicht viel. Als Nutzer sieht man absolut nichts von einer Einbindung der Kommunen/Politiker/Verantwortlichen. Wenn die Webseite nicht eine Sinnlose Ansammelung von Beschwerden sein soll, muss daran gerarbeitet werden den entsprechenden Verantwortlichen ebenfalls eine Plattform zu bieten, anstatt nur den 'Wutbuergern'. (Wutbuerger hatte gerade so gut gepasst, da es um 'Wutpunkte' geht. ;) )

    Dass Dateien auf einem Server automatisch ueberprueft werden ist nichts neues. Threatexpert ist wohl einer der bekanntesten Services dieser Art, bei dem man auch die Analyse Resultate oeffentlich einsehen kann. Auch bei herkoemmlichen Anti-Viren Programmen bestehen derartige Automatische Tests.
    Ihr wollt also fuer 40 Euro nur den automatischen Test anbieten, der wahrscheinlich die meisten Schadprogramme nicht als schaedlich erkennt? Ich will hier keine Behauptungen aus der Luft greifen, deswegen waere eine Statistik dazu interessant. Ich nehme an, dass ihr das ganze bereits mit vielen verschiedenen Viren/Schadprogrammen getestet habt, die man im Internet finden kann. Wie hoch war bei diesen automatischen Tests die Erkennungsrate?
    Arbeitet ihr mit einer eigenen Virtualisierungssoftware, oder etwas im Handel erhaeltliches? VMWare und dergleichen wird ja gerne von Virenherstellern in Ruhe gelassen, um derartige Automatische-Erkennungssoftware in guten Glauben zu lassen.


    Das Programm selbst hoert sich viel zu manuell an. Wer nimmt sich schon die Zeit, um die ganzen Javascripts, die sich beim Browsen im Cache ansammeln alle einzeln hochzuladen. (Im Video wurde eine Javascript Datei hochgeladen.) Werden die Javascripts, welche potenziell boeses im Sinn haben ueberhaupt erkannt?


    Der Name ist m.M.n. schlecht gewaehlt. Mit 'Anti-Timer' kann ich relativ wenig anfangen, bzw. wenn ich es hier im Forum lese, denke ich, dass es um irgend ein SA-MP Script oder aehnliches geht. Die Erklaerung zum Namen ist auch merkwuerdig. Es gibt sicherlich den ein oder anderen Amateur-Keylogger, der mit Timer und GetASyncKeyState, oder aehnlichem arbeitet, aber die meisten Keylogger werden wohl eher nicht auf Timer-basierte Methoden zurueckgreifen.


    Wenn ihr das fuer 40 Euro im Jahr verkaufen wollt, solltet ihr weit mehr Zeit in die Entwicklung stecken. So wie es sich zur Zeit anhoert strebt ihr einen Preis an, der von Marktfuehrenden Anti-Viren Herstellern verlangt wird, aber bei weit kleinerem Funktionsumfang und bei vermutlich weit kleinerer Erkennungsrate. Marktfuehrende Anti-Viren Software ist laengst nicht mehr nur ein Anti-Viren Programm. Die meisten haben eine Integrierte Firewall, Kindersicherung, Virtualisierung/Sandbox und eine Heuristische/Lokal-Automatisierte Analyse.


    PS.: Wenn ihr das wirklich verkaufen wollt, solltet ihr vielleicht nicht unbedingt damit werben, dass bereits nach 5 Nutzern der Server nicht mehr ansprechbar war. :P

    Split() erwartet, wie in der Fehlerbeschreibung zu sehen, eine Variable vom Typ Char.
    Doppelte Anfuehrungszeichen erstellen einen Unicode-String. Einfache Anfuehrungszeichen ein Unicode-Char.
    s.Split(',') sollte das Problem beheben. Es gibt natuerlich auch Zahlreiche Alternativen, wie Char.Parse(","), oder ","[0].


    Hier ein Englischer Artikel mit ein paar Beispielen zu String und Chars: http://cplus.about.com/od/learnc/ss/strings_2.htm (URL beginnt zwar mit 'cplus', der Artikel ist aber ueber C#)


    Wenn 's' vom Nutzer kommt, oder einfach jedes mal unterschiedlich sein kann, sollte ueberprueft werden, ob nach Split() die Variable sArray ueberhaupt 5 Elemente (Index 1-4, plus den 0ten Index) hat.

    Da die Datei nicht geloescht wurde helfen die meisten Wiederherstellungsprogramme sicherlich nicht.


    Wenn das Remote-Control Programm eine Log-funktion bietet, oder andere Beweismittel zur Verfuegung stehen, kannst Du Dich bei der Foren Administration mit diesen Beweisen melden und darauf hoffen, dass der entsprechende Nutzer hier auf diesem Forum sanktioniert wird. (Ob der Nutzer sanktioniert wird, bleibt aber der Administration ueberlassen. Kann auch sein, dass diese auch bei Beweisen nichts macht.)


    Rechtlich gesehen wird es sicherlich noch Problematischer den Nutzer zu sanktionieren, schliesslich hast Du ihm den Zugang zu Deinem Computer erlaubt und ermoeglicht. Wenn es Dir wirklich eine Anzeige Wert ist, kannst Du Dich ja zu der Rechtlichen Lage bei einem Anwalt informieren und zur Polizei gehen. Grosse Hoffnung wuerde ich mir da aber nicht machen.


    Letztendlich hoffe Ich, dass dies zumindest eine Lehre fuer die leichtglaeubigen unter den Forum Nutzern ist. Man sollte nicht einfach leichtglaeubig jeder Internetbekanntschaft Zugang zu seinem Computer ermoeglichen und darauf hoffen, dass alles gut geht.
    Und serioese Fernwartungsprogramme haben auch Sicherheitsfunktionen, die soetwas verhindern sollen. Bei Teamviewer kann man meines Wissens nach zum Beispiel komplett verhindern, dass der andere einfach alles Kopiert/Loescht, oder sonst einen Unfug macht. (Zum Beispiel ist es zu empfehlen die Tastatur und Maus komplett zu deaktivieren. Um bei einem Script-Problem zu helfen braucht man nur zu sehen und nicht anfassen. Die Fehler koennen, dann per Text/Audio Nachricht ueber Text/Voice-Chat erklaert werden.)



    Edit:
    Sofern Du Teamviewer benutzt: http://www.pcwelt.de/forum/sho…5-TeamViewer-5-Logdateien
    Oder: http://www.teamviewer.com/de/h…kolldateien-Logfiles.aspx
    Letztere Log Dateien sind aber anscheinend nur Programm-Crash und Problem-Logs.

    Zunaechst einmal sorry an Famacertech, dass mein Beitrag leider nichts hilfreiches fuer Dich beitragen kann. Ich hoffe, dass Du das Problem geloest kriegst, aber, wenn es tatsaechlich ein Virus/Malware ist, ist die einzige sichere Methode das System neu zu installieren.
    Vielleicht hilft in Zukunft der ein oder andere Tipp unter folgendem Link zum sichereren Umgang mit Windows: Windows Rechner sicher einrichten und wichtige Verhaltensregeln


    Eine Infektion durch eine Hackerlobby, in der man gemeinsam drin war, halte ich aber immernoch für unwahrscheinlich. Dafür müsste der Client von MW2 ja die Funktion besitzen, beliebige Dateien auf deinem Computer auf Anordnung des Servers zu verändern. Da das ein risiges Sicherheitsrisiko wäre, denke ich mal, gibt es eine solche Funktion nicht.

    Es ist gar nicht so unwahrscheinlich, wie die meisten PC Benutzer denken. Das Problem ist aber keine Backdoor (das gezielte Platzieren von einer Funktion zum einschleusen neuer Programme auf einem Computer), wie man als erstes vermuten koennte, sondern ein Software bug. (Siehe: http://en.wikipedia.org/wiki/Remote_code_execution konnte leider keinen deutschen Wikipedia Artikel dazu finden.)


    Grundsaetzlich bedeutet jeder Programmabsturz, dass das Programm etwas gemacht hat, was nicht erlaubt ist. Bei offline Anwendungen bedeutet das nicht gleich, dass man angegriffen wird, aber gerade bei Netzwerk-Programmen koennen Programmabstuerze ein Indikator fuer schwere Sicherheits-Probleme sein.
    Vom einfachen Server oder Client zum Programmabsturz bringen, bis zum worst-case-szenario, in dem malware auf dem Opfer-Computer vollkommen ohne Programmabsturz, und somit unbemerkt, eingeschleust wird ist in einer schlecht gesicherten Anwendung alles moeglich. Vergleichbar mit den Web-Anwendungen, die nicht ausreichend gegen SQL-Injektionen gesichert sind.


    Im November letzten Jahres wurde ein derartiger Fehler, welcher das worst-case-szenario ermoeglicht in CryEngine3 veroeffentlicht (http://vimeo.com/53425372). Die Nyan-Katze zu zeigen ist nicht das schlimmste, was moeglich ist. So wie es aussieht ist im Fall von CryEngine3 aber nicht der Client, sondern der Server davon betroffen.
    Im selben Monat wurde ebenfalls ein etwas harmloserer Fehler in MW3 veroeffentlicht, welcher einen Programmabsturz hervorrufen konnte. Veroeffentlichungsdatum ist aber fast niemals das Datum, an dem der Bug erkannt wurde. Teilweise werden solche Bugs entweder (im Besten Fall) an die Hersteller verkauft (60 000$ fuer eine Sicherheitsluecke in Google Chrome), oder schlimmstenfalls Monate lang ausgenutzt, bevor der Bug seinen Weg an die Oeffentlichkeit (und damit an den Hersteller/Programmierer) findet, oder nach verzweifelter Suche vom Hersteller aufgespuert werden.
    In manchen Faellen wird der Weg an die Oeffentlichkeit auch genutzt, weil der Hersteller, trotz mehrfacher E-Mails und langer Wartezeit nichts gegen die gemeldete Sicherheitsluecke gemacht hat. (Soll bei Windows Produkten schon vorgekommen sein.)


    Es kann durchaus sein, dass in Famacertechs Fall eine derartige Sicherheitsluecke in MW3 entdeckt und ausgenutzt wurde. Sicherheit stand sicherlich nicht an erster Stelle, wenn man sich diese ganzen Geschichten ueber Hacker-Lobbys ansieht.


    PS.: Ja, auch in SA-MP gab es derartige worst-case-bugs. Das SA-MP Anti-Cheat System, SAC, soll einen solchen Bug beinhaltet haben, und wer lange Zeit SA-MP gespielt hat wird sich noch an die Zeit erinnern, in der Kye SA-MP komplett aufgeben wollte und ein paar Monate/Wochen lang nur ein kurzes Statement auf der offiziellen Webseite war. Dies war wegen einem solchen Bug im SA-MP zugrunde liegenden RAKNET Netzwerk-Code.
    Wenn man bedenkt, dass es moeglich ist den Client zum Programmabsturz zu bringen (vom Server aus mit Pawn, aber auch von anderen Clients aus) bin ich bin mir schon fast zu 100 Prozent sicher, dass es immer noch den einen oder anderen schwerwiegenden Bug in SA-MP gibt.

    bez. htaccess :
    Wie stelle ich es richtig ein, damit nur Personen mit einem user_lvl, der höher als 1 ist zugriff auf das acp-login haben ?

    Durch die htaccess kann man das Verhalten des Webservers auf einem etwas niederen Level steuern, als es in PHP moeglich ist. Das bedeutet, aber auch, dass man nicht die gleichen Moeglichkeiten, wie in PHP (Zugriff auf SQL-Server) hat.
    Was man aber mit einer htaccess Datei machen koennte, ist den gesamten Admin-Bereich mit einem Passwort schuetzen, oder den Bereich nur fuer bestimmte IP-Adressen sichtbar/nutzbar machen: http://de.selfhtml.org/serverc…ess.htm#verzeichnisschutz


    Ist dieser Query "sicher und richtig" ausgeführt, egal was in meinem string steht ?

    PHP
    $nummer = "1";
    $query = sprintf("SELECT name FROM tabelle1 WHERE nummer='$nummer'",
                mysql_real_escape_string($nummer));
    $abfrage = mysql_query($query);

    Nein so wie es hier ist, ist es nicht sicher. Wenn man die "-Anfuehrungszeichen verwendet, dann ersetzt PHP, die $variablen mit deren Inhalt. (Setze $Test = 'Hallo Welt' und vergleiche: echo "$Test" mit echo '$Test'. Das erste gibt "Hallo Welt" und das zweite "$Test" aus.)
    Man hat in diesem Beispiel also schon, bevor sprintf ausgefuehrt wird "SELECT name FROM tabelle1 WHERE nummer='1'".
    Zudem ist der format-Text fuer sprintf nicht korrekt. sprintf ist vergleichbar mit 'format' in Pawn und braucht ein %d, %s, oder aehnliches um zu wissen, wo etwas eingefuegt werden soll. (Siehe: http://www.php.net/manual/de/function.sprintf.php)
    Das real_escape_string ist hier also Wirkungslos, da $nummer durch die "-Anfuehrungszeichen direkt gesetzt wurde und sprintf nicht weiss, wo es den String einsetzen soll.


    Folgende zwei Versionen sind sicherer:
    1. $query = sprintf("SELECT name FROM tabelle1 WHERE nummer='%s'", mysql_real_escape_string($nummer));
    2. $query = sprintf("SELECT name FROM tabelle1 WHERE nummer='%u'", $nummer);


    Version 1 ist das, was Du in Deinem Codebeispiel vorhattest. Es fuegt den mit mysql_real_escape_string gesicherten String ein.
    Version 2 ist moeglich, da nach einer Nummer gesucht wird. Mit %u wird $nummer zu einer positiven Nummer konvertiert. (Soll die Nummer negativ sein koennen, so verwendet man %d.) Wenn man also als Nummer "abc" eingibt ist spaeter im Query trotzdem eine Zahl (die 0) eingefuegt. Deswegen kommen wir hier Sicherheitstechnisch auch ohne real_escape aus. In der ersten Version haetten wir bei Eingabe von 'abc' keine Zahl, sondern die Zeichenkette 'abc' stehen, da wir es als String eingefuegt haben.


    Man kann aber auch ganz auf den Aufruf zu sprintf verzichten:
    1. $nummer = mysql_real_escape_string($nummer); $query = "SELECT ... nummer='$nummer'";
    2. $nummer = intval($nummer); $query = "SELECT ... nummer='$nummer' "


    Version 1 nutzt mysql_real_escape_string. Da wir doppelte Anfuehrungszeichen verwenden wird an der Stelle, wo $nummer steht die Variable eingefuegt. Wir sparen uns dadurch sprintf, oder das zusammen fuegen von einzel Strings ("SELECT ... nummer='" .$nummer ."'").
    Version 2 sieht ein wenig unsicher aus, da keine SQL-Spezifischen escape_* funktionen verwendet wurden, aber, da wir die Zeichenkette (aehnlich wie in dem zweiten sprintf Beispiel) mit intval() (http://www.php.net/manual/de/function.intval.php) in eine Zahl umgewandelt haben kann hier so leicht nichts mehr passieren.
    Hier gilt das gleiche, wie bei den sprintf Versionen. Die erste Version kann Zeichenketten beinhalten, die zweite Version nur Zahlen, auch, wenn jemand 'abc' eingibt.



    PHP
    $abfrage = mysql_query($query);

    Gerade waehrend der Entwicklungsphase, wenn man den Query oefters mal aendert, wuerde ich hier etwas in folgender Art hinzufuegen (die = exit = Programm abbruch, man sollte vorher aber die Datenbankverbindung beenden) : if(!$abfrage) exit('Der Query ist fehlgeschlagen. MySQL meldet: '. mysql_error());
    So kann man waehrend der Entwicklung sehen, wodran es liegt, wenn der Query fehl schlaegt. (Zum Beispiel bei einem Syntax error in dem Query String.)


    PHP
    $array = mysql_fetch_array($abfrage);
    echo $array["name"];

    Es wird zwar funktionieren, sofern eine Zeile mit nummer = 1 existiert, aber wenn eine Zahl angegeben wird, die nicht existiert, dann wird eine von PHP generierte Fehlermeldung sichtbar sein. Um dies zu verhindern, sollte man das vorher abfangen und dem Nutzer eine Fehlermeldung zeigen (es sieht einfach professioneller aus, wenn man die Fehlermeldungen selbst darstellt) :

    PHP
    $array = mysql_fetch_array($abfrage);
    if(!$array) exit("Die von Ihnen angegebene Nummer ist uns leider unbekannt.");
    echo $array["name"];

    Es geht darum, dass, wenn mysql_fetch_array FALSE wiedergibt, dass dann nicht "echo $array["name"]" ausgefuehrt wird, sonst gibt es eine (je nach Server/PHP Einstellung) Fehlermeldung von PHP.



    Hier das ganze nochmal zusammengefasst. (Ohne mysql_close(), was eigentlich bei einem guten Programmierstil, nach mysql_error(), wenn vorhanden, und vor exit() aufgerufen werden sollte.)

    Der Grund, weswegen ich hier mysql_error() nicht direkt eingefuegt habe ist, dass diese Nachricht dem Besucher sichtbar sein wird. Wenn die PHP-Datei nicht sicher gegen SQL-Injektionen waere, koennte ein potenzieller Angreifer dies um einiges leichter anhand der mysql_error() Ausgabe erkennen. Deswegen sollte man solche (mysql_error und aehnliches) in einer log-Datei speichern anstatt es dem Besucher zu zeigen, sofern man etwas im Internet veroeffentlicht. (In der Entwickelungsphase auf dem heimischen Computer ist das kein Problem, wenn der Programmierer selbst der einzige Besucher der Webseite ist.)

    Es funktioniert nun, warum auch immer..

    Ganz abgesehen von den unqualifizierten Posts, die Probleme loesen, die eigentlich gar keine Probleme sind und Posts, die etwas erklaeren, was absolut nichts mit dem Thread zu tun haben, wurde bereits das eigentliche Problem erwaehnt.


    Der Query schlug fehl, weswegen mysql_query() FALSE zurueckgegeben hat. (Siehe 'Rueckgabewert' unter: http://www.php.net/manual/de/function.mysql-query.php )
    Wenn mysql_query() fehlschlaegt kann man eine detailreichere Fehlermeldung via mysql_error() bekommen. mysql_error() haette sicherlich gemeldet, dass der Query fehlgeschlagen ist, da die Spalte 'admin_lvl' nicht gefunden wurde. (Die korrekte Spalte ist, wie im korrigierten Code vom Themenersteller zu sehen ist und auch in der Datenbank Uebersicht im ersten Post zu sehen ist, 'user_lvl'.)


    Schade, dass die eigentlich korrekte Problemloesung mit Hilfe von mysql_error unter den ganzen falschen Problemloesungen und nutzlosen Randinformationen so untergegangen ist.
    Im offiziellen php Handbuch (php.net/manual/de/) nachzusehen, wann mysql_query eine Boolean-Variable zurueckgibt und, wie die offiziellen Beispiele zu mysql_query aussehen (die offiziellen Beispiele zeigen auch die Nutzung von mysql_error bei Fehlschlag auf) haette sicherlich Zeit gespart. Ein Blick in die offizielle Dokumentation kann sich bei Problemen oftmals lohnen. (Und, wenn man manch eine 'hilfreiche' Antwort in diesem Thread sieht, kann es sich auch lohnen, wenn man anderen Helfen will und sich selbst nicht so ganz mit dem Thema auskennt.)


    PS.:

    Ein "User" der da abgearbeitet wird, ist auf jedenfall vorhanden, da dies ein schritt des acp-login's ist..

    Jeder kann auf die Login Seite zugreifen und $name kommt via $_POST vom Benutzer. Bei einem Falschen Benutzernamen wird eine Error Nachricht gezeigt, da mysql_fetch_array kein Array zurueckliefern wird, sondern FALSE ( http://www.php.net/manual/de/function.mysql-fetch-array.php ).
    Probier es einfach mal aus, in dem Du als Benutzernamen eine zufaellige Zeichenkette angibst. PHP sollte einen Fehler/eine Warnung fuer die Zeile 'if($row["user_lvl"]> 0)' melden.


    Problematischer ist, aber, dass die Login Seite (ausser bei eingestellter htaccess) von jedem besucht werden kann, und so wie es sich hier im Thread darstellt ist eine SQL-Injektion moeglich:

    PHP
    $name = $_POST["username"];
    $pw = $_POST["password"];
    $kenn = $_POST["kennung"];

    $name, $pw und $kenn kommen direkt vom Benutzer. Wenn Variablen die vom Benutzer kommen, ohne mysql_real_escape_string() oder aehnliche Sicherheitsmassnahmen in ein Query eingefuegt werden besteht die Gefahr, dass ein Benutzer alle Daten (auch die Datensaetze vom admin, oder sogar die Login-Daten vom SQL-Server selbst) vom SQL-Server auslesen/veraendern kann und unter Umstaenden die Sicherheit des gesamten Webservers gefaehrdet ist. Dies ist bei '$name' die Gefahr, da diese anscheinend direkt in den Query eingefuegt wird, ohne eine real_escape Funktion durchlaufen zu haben.

    Wenn sowas vorkommt & der Verkäufer noch keine Bewertungen hat, würde ich mich davon distanzieren.

    Dass die Gebote in der Art gemacht werden spricht nicht dafuer, dass man sich von dem Artikel distanzieren sollte. Es ist, wie bereits gesagt ein Bietautomat, der nichts mit dem Verkaeufer zu tun hat.
    Das Angebot ist aber trotzdem nicht sehr Vertrauenswuerrdig, wegen der 0 Gebote und es wurden keine Produktbilder vom tatsaechlichen Produkt gemacht, sondern nur ein Bild aus dem Internet kopiert. Hinzu kommt, dass der Verkaeufer anscheinend sich nicht entscheiden kann, was er verkaufen will. Er schreibt "Samsung galaxy tab" in den Titel, mit einem Tablet im Bild, schreibt in der Beschreibung aber, dass es ein Galaxy Note II (GT-N7100) smartphone sei. Dazu schreibt er, dass die Unterschiede zwischen den beiden Modellen minimal sei.
    Ich finde den Unterschied nicht so minimal:
    http://www.samsung.com/global/…galaxytab/10.1/index.html
    http://www.samsung.com/de/cons…alaxy-note/GT-N7100RWDDBT
    Wenn man genau hinguckt, dann sieht man, dass die vollkommen verschieden sind. Aber man muss schon ganz genau hinsehen.


    Dann kann ich aber heute nicht 100€ geboten haben <.<

    Wie gesagt. Bietomat, ist im Link erklaert, den ich gepostet habe.