C++ lernen womit?

12/03/2012 22:12 Dr. Coxxy#16
Quote:
Originally Posted by DerBasiop View Post
ich meine zb aimbots für schlecht spiele ;-)

Außerde sonst noch andere Programme Dafür ist C++ am besten??
richtige aimbots für ego shooter wirst du wohl am ehesten mit C/C++ und assembler hinkriegen, große alternativen gibt es da kaum.
12/03/2012 22:25 Kosic#17
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.
12/03/2012 22:29 DerBasiop#18
Quote:
Originally Posted by Kosic View Post
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.
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?
12/03/2012 22:37 Kosic#19
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. C# ist nicht so fürs Gamehacking geeignet.

C/C++
Hardwarenahe Programmierung (z.b. Treiber)
Plattform unabhängig
Universal nutzbar (vom Rechner bis zur Windows System Datei)
Sehr Komplex

C#
Keine Hardwarenahe Programmierung
Plattform abhängig (Windows)
Weniger Komplex als C++
Für jegliche Art von Tools geeignet. (Keine (guten) Hacks)

ps: C++ ist eine Erweiterte Form von C.
12/03/2012 22:55 Nightblizard#20
Quote:
Originally Posted by Kosic View Post
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.
Nö. C# kannst du auch mit Unixoiden benutzen. Such mal nach "Mono".

Quote:
Originally Posted by Kosic View Post
C# ist nicht so fürs Gamehacking geeignet.
Doch, ist es. Du musst nur die CLR in nen fremden Prozess laden, dann stehen dir fast alle Türen und Tore offen.

Quote:
Originally Posted by Kosic View Post
Universal nutzbar (vom Rechner bis zur Windows System Datei)
Das Beispiel macht keinen Sinn.

Quote:
Originally Posted by Kosic View Post
Sehr Komplex
Inwiefern ist das komplexer als C#?

Quote:
Originally Posted by Kosic View Post
Plattform abhängig (Windows)
Stimmt nicht, siehe oben.

Quote:
Originally Posted by Kosic View Post
Weniger Komplex als C++
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:
Originally Posted by Kosic View Post
(Keine (guten) Hacks)
Bullshit.

Quote:
Originally Posted by Kosic View Post
ps: C++ ist eine Erweiterte Form von C.
Bullshit.
12/03/2012 23:07 Dr. Coxxy#21
Quote:
Originally Posted by Nightblizard View Post
Doch, ist es. Du musst nur die CLR in nen fremden Prozess laden, dann stehen dir fast alle Türen und Tore offen.
"nur"; "fast" - warum mit sowas abplagen wenn c/c++ soviel einfacher/geeigneter ist?

sry, c# hacks kriegt man nur mit unnötigem aufwand und einer reihe von unnötigen restriktionen hin.
12/03/2012 23:27 Kosic#22
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:
Das Beispiel macht keinen Sinn.
Was gibts daran nicht zu verstehen?

Quote:
Inwiefern ist das komplexer als C#?
z.b. Hardwarenahe Programmierung

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++!
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?

Quote:
Bullshit.
Doch.

Quote:
Bullshit.
Doch.

Dann kann mann C++ noch zu gute rechnen das es performance freundlicher ist als C#.
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.
12/03/2012 23:34 Dr. Coxxy#23
Quote:
Originally Posted by Kosic View Post
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?
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.

Quote:
Dann kann mann C++ noch zu gute rechnen das es performance freundlicher ist als C#.
kommt drauf an, wer, wie programmiert - und ob perfomance überhaupt ein wichtiges element des programms ist.

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.
C++ kann man nicht dekompilieren.
gibt einige programme, z.b. hexray die versuchen aus der disassembly wieder C-code herzustellen, was aber manchmal ziemlichen schwachsinn liefert, manchmal aber auch erstaunlich gut funktioniert.
Im gegenteil kann aber C++ code, eben aufgrund seiner hardwarenähe oft relativ leicht im disassembler nachvollzogen werden.
12/03/2012 23:46 Kosic#24
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.
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:
kommt drauf an, wer, wie programmiert - und ob perfomance überhaupt ein wichtiges element des programms ist.
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.
Der Threadersteller will aber hauptsächlich Hacks programmieren, da ist die Performance sehr wichtig wie ich finde.

Quote:
Im gegenteil kann aber C++ code, eben aufgrund seiner hardwarenähe oft relativ leicht im disassembler nachvollzogen werden.
Soeben bin ich um ein Stück schlauer geworden :)
12/04/2012 03:15 Nightblizard#25
Quote:
Originally Posted by Dr. Coxxy View Post
"nur"; "fast" - warum mit sowas abplagen wenn c/c++ soviel einfacher/geeigneter ist?
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:
Originally Posted by Dr. Coxxy View Post
sry, c# hacks kriegt man nur mit unnötigem aufwand und einer reihe von unnötigen restriktionen hin.
Kannst du mir da ein Beispiel geben? Gut, du hast kein inline Assembly, aber ansonsten fehlt dir nichts.

Quote:
Originally Posted by Kosic View Post
Ausserdem hab ich "nicht so" geschrieben, habe nie behauptet das es mit C# unmöglich ist.
Habe ich auch nicht behauptet, aber im Grunde unterscheidet sich da C# nicht groß von C++.

Quote:
Originally Posted by Kosic View Post
Was gibts daran nicht zu verstehen?
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.

Quote:
Originally Posted by Kosic View Post
z.b. Hardwarenahe Programmierung
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++.

Quote:
Originally Posted by Kosic View Post
na dann, Is mir zwar neu das C# komplexer/umfangreicher ist *hust* Treiber *hust* aber ok.
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:
Originally Posted by Kosic View Post
Wie wärs mit nem Beispiel? Was kann C# was C++ nicht hinbekommt?
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:
Originally Posted by Kosic View Post
Doch.
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:
Originally Posted by Kosic View Post
Doch.
Siehe "Doch"-Nr.1.

Quote:
Originally Posted by Kosic View Post
Dann kann mann C++ noch zu gute rechnen das es performance freundlicher ist als C#.
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:
Originally Posted by Kosic View Post
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.
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?

Quote:
Originally Posted by Kosic View Post
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.
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.

Quote:
Originally Posted by Kosic View Post
Der Threadersteller will aber hauptsächlich Hacks programmieren, da ist die Performance sehr wichtig wie ich finde.
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.
12/04/2012 03:21 omnicrunch#26
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
12/04/2012 13:46 Dr. Coxxy#27
Quote:
Originally Posted by Nightblizard View Post
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.
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.

Quote:
Kannst du mir da ein Beispiel geben? Gut, du hast kein inline Assembly, aber ansonsten fehlt dir nichts.
-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.

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.
12/04/2012 16:27 DerBasiop#28
Quote:
Originally Posted by Nightblizard View Post
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.
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 ! ;-)
Trozdem DANKE für alle Feedbacks dir ihr mir geschrieben habt :)
Ich dachte zB an Hacks die ich nur für den Eigengebrauch nutze wie ich ja schon sagte zB einen Aimbot für kleine spiele.
Sonst habe ich mich noch nicht festgelegt wass ich programmieren möchte.
12/04/2012 18:15 Flyff_Service#29
Quote:
Originally Posted by Dr. Coxxy View Post
-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.
Dazu kommt noch Klassen Hooks mithilfe von __fastcall, inline Assembler z.B für das ECX Register (this Pointer)
Viel Spaß ohne inline Assembler.

@Nightblizard
Warum siehst du nicht einfach ein das für diverse Dinge, wie z.B Hacks, C++ einfach besser geeignet als C# ist?

Quote:
Originally Posted by Nightblizard View Post
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?
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:
Originally Posted by Nightblizard View Post
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.
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?
12/04/2012 23:04 Nightblizard#30
Quote:
Originally Posted by Dr. Coxxy View Post
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.
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.
C# ist in vielerlei Hinsicht angenehmer als C++, darüber müssen wir uns hier doch nicht streiten, oder?


Quote:
Originally Posted by Dr. Coxxy View Post
-bin mir nicht sicher, aber denke mal hooks mit wechselnden calling conventions dürfte auch probleme geben.
Nope.
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Damit kannst du Funktionen deklarieren und Aufrufen als wären sie in C++ geschrieben.

Quote:
Originally Posted by Dr. Coxxy View Post
-man MUSS die CLR laden.
Sauber und unauffällig, daran ist nichts auszusetzen.

Quote:
Originally Posted by Dr. Coxxy View Post
-nachbauen von spielklassen/funktionen und verwendung dieser mit originalspielfunktionen dürfte auch nicht so einfach gehen.
Doch, auch hier übernimmt der Marshal die ganze Arbeit.

Quote:
Originally Posted by Dr. Coxxy View Post
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, so kann man das auch machen.

Quote:
Originally Posted by Flyff_Service View Post
Dazu kommt noch Klassen Hooks mithilfe von __fastcall, inline Assembler z.B für das ECX Register (this Pointer)
Viel Spaß ohne inline Assembler.
Jup, das geht sogar einfacher als in C++, weil das der Marshal für dich macht. Siehe oben.
Quote:
Originally Posted by Flyff_Service View Post
@Nightblizard
Warum siehst du nicht einfach ein das für diverse Dinge, wie z.B Hacks, C++ einfach besser geeignet als C# ist?
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:
Originally Posted by Flyff_Service View Post
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.
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.
Da schenken sich beide Sprachen nichts.

Quote:
Originally Posted by Flyff_Service View Post
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?
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.