Also wenn ich das richtig auffasse ist C# ein Programm mit dem man nur kleinere Programme schreiben kann und nichts größeres was man allerdings mit C++ tuhen kann?Quote:
Wennst gescheite, keine 0815, Gamehacks machen willst wirst an C/C++ und ASM nicht vorbei kommen. Wennst "nur" diverse Tools machen willst, diese nur für Windows, bist mit C# gut bedient. C++ eignet sich natürlich dafür auch.
Nö. C# kannst du auch mit Unixoiden benutzen. Such mal nach "Mono".Quote:
Jein, mit C# kannst du durchaus "größere" Programme entwickeln, aber es muss das entsprechende .Net Framework installiert sein, welches es nur für Windows gibt.
Doch, ist es. Du musst nur die CLR in nen fremden Prozess laden, dann stehen dir fast alle Türen und Tore offen.Quote:
C# ist nicht so fürs Gamehacking geeignet.
Das Beispiel macht keinen Sinn.Quote:
Universal nutzbar (vom Rechner bis zur Windows System Datei)
Inwiefern ist das komplexer als C#?Quote:
Sehr Komplex
Stimmt nicht, siehe oben.Quote:
Plattform abhängig (Windows)
Stimmt nicht, C# ist deutlich umfangreicher (sowohl von den sprachlichen Mitteln als auch von der standard API her) als C++ und kann fast alles was C++ kann. C# ist deutlich komplexer als C++!Quote:
Weniger Komplex als C++
Bullshit.Quote:
(Keine (guten) Hacks)
Bullshit.Quote:
ps: C++ ist eine Erweiterte Form von C.
"nur"; "fast" - warum mit sowas abplagen wenn c/c++ soviel einfacher/geeigneter ist?Quote:
Doch, ist es. Du musst nur die CLR in nen fremden Prozess laden, dann stehen dir fast alle Türen und Tore offen.
Ausserdem hab ich "nicht so" geschrieben, habe nie behauptet das es mit C# unmöglich ist.Quote:
Doch, ist es. Du musst nur die CLR in nen fremden Prozess laden, dann stehen dir fast alle Türen und Tore offen.
Was gibts daran nicht zu verstehen?Quote:
Das Beispiel macht keinen Sinn.
z.b. Hardwarenahe ProgrammierungQuote:
Inwiefern ist das komplexer als C#?
na dann, Is mir zwar neu das C# komplexer/umfangreicher ist *hust* Treiber *hust* aber ok.Quote:
Stimmt nicht, C# ist deutlich umfangreicher (sowohl von den sprachlichen Mitteln als auch von der standard API her) als C++ und kann fast alles was C++ kann. C# ist deutlich komplexer als C++!
Doch.Quote:
Bullshit.
Doch.Quote:
Bullshit.
damit meinte er generell den standardumfang von C# im vergleich zu C++.Quote:
na dann, Is mir zwar neu das C# komplexer/umfangreicher ist *hust* Treiber *hust* aber ok.
Wie wärs mit nem Beispiel? Was kann C# was C++ nicht hinbekommt?
kommt drauf an, wer, wie programmiert - und ob perfomance überhaupt ein wichtiges element des programms ist.Quote:
Dann kann mann C++ noch zu gute rechnen das es performance freundlicher ist als C#.
C++ kann man nicht dekompilieren.Quote:
2. C# Kann jedes Kleinkind decompilieren (gibt genug .Net decompiler im web), C++ hingegen kann mann garnicht decompilieren.( soweit ich mich erinnern kann) und selbst wenn, nur SEHR schwer.
Ich finde das ist jetzt wieder so ne Ansichtssache. Ich finde und bleibe dabei dass C++ stärker/mächtiger, nenne es wie du willst, ist.Quote:
damit meinte er generell den standardumfang von C# im vergleich zu C++.
während C++ praktisch nur mit der stdlib kommt, hat C# bereits ganze teile der windows api fest in die sprache integriert.
Ja ich glaub aber nicht das jemand, welcher kein Kleinkind ist, so einen schlechten Code zamschei**t dass die Performance des Programmes so in den Keller gezogen wird.Quote:
kommt drauf an, wer, wie programmiert - und ob perfomance überhaupt ein wichtiges element des programms ist.
Soeben bin ich um ein Stück schlauer geworden :)Quote:
Im gegenteil kann aber C++ code, eben aufgrund seiner hardwarenähe oft relativ leicht im disassembler nachvollzogen werden.
Weil C# einfach bestimmte Vorzüge gegenüber C++ hat. Und mit "abplagen" hat das nichts zu tun. Die CLR kannst du mit nem 50 Zeiler in fremde Prozesse laden und das kann jeder, der lesen kann und die MSDN kennt.Quote:
"nur"; "fast" - warum mit sowas abplagen wenn c/c++ soviel einfacher/geeigneter ist?
Kannst du mir da ein Beispiel geben? Gut, du hast kein inline Assembly, aber ansonsten fehlt dir nichts.Quote:
sry, c# hacks kriegt man nur mit unnötigem aufwand und einer reihe von unnötigen restriktionen hin.
Habe ich auch nicht behauptet, aber im Grunde unterscheidet sich da C# nicht groß von C++.Quote:
Ausserdem hab ich "nicht so" geschrieben, habe nie behauptet das es mit C# unmöglich ist.
Universal einsetzbar. Vom Rechner (nicht wirklich spezifisch, aber okay) bis zur Windows Systemdatei (was hat das mit der Platform zu tun?)Quote:
Was gibts daran nicht zu verstehen?
Und weiter? Jeh näher ich an die Hardware ran gehe, desto mehr sprachliche Mittel fallen weg (wobei das auch nicht zu 100% stimmt). Die Sprache wird dementsprechend einfacher.Quote:
z.b. Hardwarenahe Programmierung
Was haben Treiber damit zu tun? Eine API, die nicht zur grundlegenden Sprache gehört, trägt doch nichts zu ihrer Komplexität bei! Das wäre so als würde ich sagen "C# ist schwer weil SlimDX schwer ist". Was ist denn das für ein Argument?Quote:
na dann, Is mir zwar neu das C# komplexer/umfangreicher ist *hust* Treiber *hust* aber ok.
LINQ und Reflection fallen mir ganz spontan ein. Wenn ich 2 Minuten länger nachdenken würde, dann wären da noch sicher mehr, aber so viel Energie möchte ich hier nicht reinstecken, da mir die entsprechende Energie nicht entgegengesetzt wird.Quote:
Wie wärs mit nem Beispiel? Was kann C# was C++ nicht hinbekommt?
Sehr schön. Du stellst eine Behauptung auf, stützt diese nicht auf ein Beispiel und anstatt das nachzuholen kommt ein plumpes "doch". Wie man eine Diskussion führt ist dir wohl fremd.Quote:
Doch.
Siehe "Doch"-Nr.1.Quote:
Doch.
Das kann man so allgemein nicht sagen. C++ ist kein Garant für performante Programme. Und letztenendes muss man nicht in jedem Programm auf jeden CPU Cycle achten.Quote:
Dann kann mann C++ noch zu gute rechnen das es performance freundlicher ist als C#.
Das ist auch so eine Sache. Keine Ahnung haben wovon man spricht, aber dennoch drüber reden. Das lässt dich nicht seriös wirken.Quote:
2. C# Kann jedes Kleinkind decompilieren (gibt genug .Net decompiler im web), C++ hingegen kann mann garnicht decompilieren.( soweit ich mich erinnern kann) und selbst wenn, nur SEHR schwer.
Doch, das geht sogar verdammt schnell. Und dafür muss man auch kein "Kleinkind" sein (keine Ahnung was du mit deinen Kindern hast).Quote:
Ja ich glaub aber nicht das jemand, welcher kein Kleinkind ist, so einen schlechten Code zamschei**t dass die Performance des Programmes so in den Keller gezogen wird.
Auch das kann man so allgemein nicht sagen, hier spielen zu viele Faktoren eine Rolle. Was für einen Hack willst du machen? Wie setzt du ihn um? Muss er regelmäßig aktualisiert werden? Etc. pp..Quote:
Der Threadersteller will aber hauptsächlich Hacks programmieren, da ist die Performance sehr wichtig wie ich finde.
Was für hackrelevante vorteile denn?Quote:
Weil C# einfach bestimmte Vorzüge gegenüber C++ hat. Und mit "abplagen" hat das nichts zu tun. Die CLR kannst du mit nem 50 Zeiler in fremde Prozesse laden und das kann jeder, der lesen kann und die MSDN kennt.
-kein inline assembly.Quote:
Kannst du mir da ein Beispiel geben? Gut, du hast kein inline Assembly, aber ansonsten fehlt dir nichts.
Also komplett habe ich mich da ja noch nicht festgelegt weil ich ja wie gesagt ein kompletter Anfänger bin und auch noch nicht so ganz verstehe über was ihr diskutiert ! ;-)Quote:
Weil C# einfach bestimmte Vorzüge gegenüber C++ hat. Und mit "abplagen" hat das nichts zu tun. Die CLR kannst du mit nem 50 Zeiler in fremde Prozesse laden und das kann jeder, der lesen kann und die MSDN kennt.
Kannst du mir da ein Beispiel geben? Gut, du hast kein inline Assembly, aber ansonsten fehlt dir nichts.
Habe ich auch nicht behauptet, aber im Grunde unterscheidet sich da C# nicht groß von C++.
Universal einsetzbar. Vom Rechner (nicht wirklich spezifisch, aber okay) bis zur Windows Systemdatei (was hat das mit der Platform zu tun?)
Vom Fahrrad bis zum Türgriff.
Und weiter? Jeh näher ich an die Hardware ran gehe, desto mehr sprachliche Mittel fallen weg (wobei das auch nicht zu 100% stimmt). Die Sprache wird dementsprechend einfacher.
Klar, wenn du mit "hardwarenahe Programmierung" C mit Klassen meinst, dann hast du durchaus recht. Aber das liegt dann eher am unfähigen Programmierer und nicht an der Komplexität von C++.
Was haben Treiber damit zu tun? Eine API, die nicht zur grundlegenden Sprache gehört, trägt doch nichts zu ihrer Komplexität bei! Das wäre so als würde ich sagen "C# ist schwer weil SlimDX schwer ist". Was ist denn das für ein Argument?
LINQ und Reflection fallen mir ganz spontan ein. Wenn ich 2 Minuten länger nachdenken würde, dann wären da noch sicher mehr, aber so viel Energie möchte ich hier nicht reinstecken, da mir die entsprechende Energie nicht entgegengesetzt wird.
Sehr schön. Du stellst eine Behauptung auf, stützt diese nicht auf ein Beispiel und anstatt das nachzuholen kommt ein plumpes "doch". Wie man eine Diskussion führt ist dir wohl fremd.
Siehe "Doch"-Nr.1.
Das kann man so allgemein nicht sagen. C++ ist kein Garant für performante Programme. Und letztenendes muss man nicht in jedem Programm auf jeden CPU Cycle achten.
Das ist auch so eine Sache. Keine Ahnung haben wovon man spricht, aber dennoch drüber reden. Das lässt dich nicht seriös wirken.
Abgesehen davon gibt es auch für .NET Sprachen die Möglichkeit seine Binaries zu schützen, also wo genau liegt das Problem?
Doch, das geht sogar verdammt schnell. Und dafür muss man auch kein "Kleinkind" sein (keine Ahnung was du mit deinen Kindern hast).
Das fängt schon mit den ganzen Leuten an, die immer und überall eine Linked List benutzen und immer und überall new und delete benutzen. Und ja, die gibt es wie Sand am Meer und sie schwören darauf, dass sie es richtig machen.
Auch das kann man so allgemein nicht sagen, hier spielen zu viele Faktoren eine Rolle. Was für einen Hack willst du machen? Wie setzt du ihn um? Muss er regelmäßig aktualisiert werden? Etc. pp..
Bis jetzt habe ich noch keinen Hack gesehen, der sich so nicht auch in C# umsetzen lässt.
Ein paar Beispiele von dir wären ganz interessant, schließlich stellst du hier ja auch die ganzen Behauptungen in den Raum.
Dazu kommt noch Klassen Hooks mithilfe von __fastcall, inline Assembler z.B für das ECX Register (this Pointer)Quote:
-kein inline assembly.
-bin mir nicht sicher, aber denke mal hooks mit wechselnden calling conventions dürfte auch probleme geben.
-man MUSS die CLR laden.
-nachbauen von spielklassen/funktionen und verwendung dieser mit originalspielfunktionen dürfte auch nicht so einfach gehen.
Man kann zwar den Code obfuscaten aber einen richtigen Schutz gibt es nicht. Und den obfuscaten Code wieder lesbar zu machen ist auch keine Kunst bzw. diesen zu interpretieren sollte bei kleineren Programmen sogar von Hand gehen.Quote:
Das ist auch so eine Sache. Keine Ahnung haben wovon man spricht, aber dennoch drüber reden. Das lässt dich nicht seriös wirken.
Abgesehen davon gibt es auch für .NET Sprachen die Möglichkeit seine Binaries zu schützen, also wo genau liegt das Problem?
Das ist ein Problem der Leute und nicht der Programmiersprache - denkst du wenn diese Leute in C# programmieren erhalten diese die Erleuchtung und können aufeinmal perfomant programmieren?Quote:
Das fängt schon mit den ganzen Leuten an, die immer und überall eine Linked List benutzen und immer und überall new und delete benutzen. Und ja, die gibt es wie Sand am Meer und sie schwören darauf, dass sie es richtig machen.
Hackrelevant nicht unbedingt, aber allgemein arbeitet es sich in C# angenehmer. Das fängt schon mit der objektorientierten Standardbibliothek an, geht damit weiter, dass der Marshal dir viel Arbeit abnimmt und hört bei sprachlichen Features wie z.B. "lock" auf.Quote:
Was für hackrelevante vorteile denn?
kriegst doch eigtl alles was man in c# hat auch in c++ mit free libs wie z.b. boost hin.
Nope.Quote:
-bin mir nicht sicher, aber denke mal hooks mit wechselnden calling conventions dürfte auch probleme geben.
Sauber und unauffällig, daran ist nichts auszusetzen.Quote:
-man MUSS die CLR laden.
Doch, auch hier übernimmt der Marshal die ganze Arbeit.Quote:
-nachbauen von spielklassen/funktionen und verwendung dieser mit originalspielfunktionen dürfte auch nicht so einfach gehen.
Jup, so kann man das auch machen.Quote:
Was ein freund von mir öfters macht, ist eine hack dll in c++ zu schreiben, die alle gamerelevanten hooks erzeugt und mit einer pipe mit einem externen C# programm kommuniziert, welches dann die hauptarbeit macht.
Jup, das geht sogar einfacher als in C++, weil das der Marshal für dich macht. Siehe oben.Quote:
Dazu kommt noch Klassen Hooks mithilfe von __fastcall, inline Assembler z.B für das ECX Register (this Pointer)
Viel Spaß ohne inline Assembler.
Weil das so eine Aussage wie "C++ Code ist schneller als .NET Code" ist und ganz einfach falsch ist. C++ ist sehr gut dafür geeignet, aber besser als C#? In manchen Bereichen durchaus, aber im Großen und Ganzen nicht. Das ist einfach zu situationsbedingt, als dass man es so verallgemeinern könnte.Quote:
@Nightblizard
Warum siehst du nicht einfach ein das für diverse Dinge, wie z.B Hacks, C++ einfach besser geeignet als C# ist?
Super, das Gleiche gilt für C++. Hau nen kleines Programm durch nen Disassembler und du kannst es auch ganz einfach nachvollziehen. Mit Hex-Rays bekommst du sogar relativ akuraten Quellcode erzeugt.Quote:
Man kann zwar den Code obfuscaten aber einen richtigen Schutz gibt es nicht. Und den obfuscaten Code wieder lesbar zu machen ist auch keine Kunst bzw. diesen zu interpretieren sollte bei kleineren Programmen sogar von Hand gehen.
Naja, das kommt drauf an. Prinzipiell nicht, da hast du schon recht. Aber das ist das auch nicht so wichtig, schließlich argumentieren hier viele nur mit "C++ = Performance" und das stimmt nunmal so einfach nicht. Es ist in C++ einfacher langsamen Code zu schreiben als es das in C# ist. Es ist dennoch sehr einfach in C#, aber da gibt es entsprechende Kontrollstrukturen, die das alles noch ein wenig kompensieren.Quote:
Das ist ein Problem der Leute und nicht der Programmiersprache - denkst du wenn diese Leute in C# programmieren erhalten diese die Erleuchtung und können aufeinmal perfomant programmieren?