Coden lernen- totaler Neuling

06/30/2015 19:51 philippkrake#1
Guten Tag!


ich möchte als erstes sagen, dass ich keine Grundkenntnisse habe.

Ich möchte das Coden lernen, z.B von CS:GO/COD/ARMA Hacks.

Man muss ja irgendwann anfangen, und langsam ist es soweit.
Wie fange ich an?
Welche Sprachen brauche ich (Computersprachen)?
Wie lerne ich am besten (bitte in Deutsch lernen ! ).

Vielen Dank!

PS: das soll sich jetzt nicht anhören, als wenn ich so ein kleines Kind wäre, dass "tolle" Hacks programmieren will. Ich möchte damit versuchen, etwas aufzubauen (aka. x22, aimware, unityhacks, iwebz usw.). Ich weiß es ist schwer und es wird lange dauern!
06/30/2015 21:18 BlackBillposterBlood#2
1. Entscheide dich für eine Programmiersprache, entweder wählst du eine etwas einfachere, um einen guten Einstieg zu haben oder direkt eine die für deine Zwecke gut zu gebrauchen ist. (Welche durchaus schwerer ist)

2. Kauf dir ein (gutes!) Buch für deine gewählte Programmiersprache und fang an zu lernen, wenn du etwas nicht verstehst oder ein Thema, auf welches im Buch nicht konkret genug eingegangen wurde dann guck dich im Internet um. Youtube-Tutorials vermitteln dir meistens nur sehr abgespeckte Grundlagen.

Im Bereich Gamehacking, Reverse Engineering usw. ist C++ wohl die beste Wahl. Viele Leute meinen aber auch sie sei eine der schwierigsten Programmiersprachen..
Ob du mit C++ anfangen willst musst du entscheiden..
06/30/2015 21:29 c0w#3
Also C oder C++ wären dann deine Sprachen. Viele Spiele verwenden C++ im Aufbau, aber es ist nicht unbedingt eine anfängerfreundliche Sprache. Am besten lernt man, finde ich mit eigenen Programmen schreiben, bau dir mal ne GUI und hack ein simples game.

TUTs für memory read write findest massenhaft. Aber eines will ich gleich vorweg sagen, Hacks wie sie zb über x22 kommen kann nicht jeder lernen. Nur harte Arbeit reicht da meist nicht, das ist die Meisterklasse des Hackings.

Aber Spiele die kein Anti-Cheat haben, also singleplayer lassen sich in der Regel sehr einfach hacken und bieten eine gute Grundlage für eigenständiges lernen.
06/30/2015 22:19 warfley#4
Such dir eine Sprache aus und fang an Programmieren zu lernen. Wenn du programmieren kannst ist Gamehacking auch nichts besonderes. Ich persönlich finde man sollte zu erst richtig programmieren zu lernen bevor man sich mit Copy Paste Tutorials ans Gamehacking geht (Ansonsten hat man zum xten mal hier einen Thread von wegen: "Warum geht das nicht" aufgrund grundlegender Fehler).
Da musst du dir nur eine Programmiersprache aussuchen, und dir ein Buch dazu kaufen und dann das Programmieren von Grund auf (richtig) lernen.
Als Programmiersprache kannst du dir nahezu jede aussuchen. Naja da du mal Hacks schreiben willst würde ich eher weniger eine Schriftsprache oder eine auf einer VM ausgeführten Sprache empfehlen (also nicht sowas wie C#, Python, Java, etc).
Funktionale oder Logische Programmiersprachen sind (da man in ein Imperatives Programm eingreift) auch nicht die beste Wahl (sowas wie Haskell oder Prolog).

Am besten nimmst du eine Imperative (Windows) Compiler Sprache die Systemnah arbeitet. Da ist die Auswahl immer noch gigantisch (z.B. C++, Ada, Pascal, Cobol, Oberon, smalltalk, ...)

Da kannst du dir aussuchen was dir am besten gefällt. So sind Ada oder Oberon z.B. unglaublich strikte Sprachen, die vor allem im sicherheitskritischen Bereich verwendet werden. Pascal ist auch sehr strikt, allerdings nicht so sehr wie Ada oder Oberon.
C(++) ist dagegen das Komplette Gegenteil, eine sehr, ich nenn es mal "saloppe" Sprache, die unglaublich viel durchgehen lässt, dadurch aber auch extrem viel fehleranfälliger wird. C wird vor allem verwendet da man durch diese Spezielle C Syntax viele Code Zeilen die z.B. in Pascal oder Ada 5 Zeilen wären in nur eine Zusammenfassen kann.

Such dir einfach was aus und fang an das zu lernen. Da so gut wie alle imperativen Compiler Sprachen zu deinem Ziehl führen ist die Wahl rechtherzlich egal.

Noch dazu sei gesagt (nur der Vollständigkeit halber, das ist für die meisten eh irrelevant, da es auf die paar nano sekunden eh nie ankommt), dass C++ mit dem Intel C++ Compiler auf intel Architekturen Optimierungsstufen erreicht, die du mit anderen Compilern sogut wie nie erreichen wirst, bei also echtzeit Berechnungen unter Intel Architekturen nach direkt Assembler die wohl beste Wahl (aber Echtzeit Berechnungen braucht man eher selten bis gar nicht, und oft nutzt man für sowas eh keine Intel Architektur, und da ist der GCC für C(++) oder Ada auch extrem gut).


Um nochmal etwas aus meiner Persönlichen Erfahrung zu sagen: Nimm kein C damit ärgert man sich nur rum, C++ ist um Welten besser (los eingefleischte Gnu C Linux Nutzer Steinigt mich für diese aussage)
07/01/2015 07:32 philippkrake#5
Vielen Dank für diese ausführlichen Texte.
Kann man mir denn eventuell ein Buch für
C++ empfehlen?
07/01/2015 20:53 c0w#6
wenn du ein buch willst, such dir n dummy buch von der amazon toplist. jedes dürfte dich ans ziel bringen. ich persönlich halte nicht viel von büchern in dem segment. learning by doing is hier die devise denk ich. grundlagen findest du gratis in massen in tutorials und forenbeiträgen
07/02/2015 21:12 warfley#7
Quote:
wenn du ein buch willst, such dir n dummy buch von der amazon toplist. jedes dürfte dich ans ziel bringen. ich persönlich halte nicht viel von büchern in dem segment. learning by doing is hier die devise denk ich. grundlagen findest du gratis in massen in tutorials und forenbeiträgen
Dem kann ich nicht zustimmen. Durch learning by doing lernt man zwar grundsätzlich wie man seine Ziele erreichen kann, aber man lernt die Logik dahinter weniger. Ein schönes Beispiel, du hast einen Record/Struct mit 30 Elementen und ließt den aus einer Datei ein. Jetzt kann es allerdings vorkommen dass zum Teil nicht alle Felder in der datei gelistet sind (z.b. nur felder 1-10 und dann wieder 15-30). Wer via Learning by doing gelern hat würde an dieser stelle wohl machen
Code:
Stream.Read(Struct.Element1, SizeOf(...));
für jedes element bis
Stream.Read(Struct.Element30, ...)
Wenn man aber weiß dass der Speicher linear aufgebaut ist (was man durch learning by doing z.B. weniger lernt) kann man einfach nutzen:
Code:
Stream.Read(Struct.Element1, GrößeDerErsten10Elemente);
Stream.Read(Struct.Element15, Restgröße)
um mal eines von vielen Beispielen zu nennen.

Dann gibt es auch dinge die man meist nicht mal wirklich hinbekommt weil man die Technischen Grundlagen dahinter einfach nicht versteht, da man sich bei learning by doing schlicht weg nicht damit beschäftigt.

Das ist wie mit dem schwimmen, wer einfach ins wasser springt und anfängt wird so nie Profischwimmer werden, da einem einfach das Wissen über Theorie und Technik für das Effiziente schwimmen fehlt.

Wenn man Programmieren lernen will sollte man es richtig tun, es bringt nichts dem PC zu sagen was er tuen soll wenn man es selbst nicht richtig versteht

Quote:
Kann man mir denn eventuell ein Buch für
C++ empfehlen?
Ich habe selbst mich nie wirklich so sehr mit C++ beschäftigt aber in diesem Forum wird das Buch C++ Primer angepriesen, dass würde ich versuchen
07/02/2015 23:08 .StarSplash#8
Learning by Doing halte ich auch nicht für die beste Möglichkeit, wenn du niemanden hast, der dir über die Schulter schaut und dir Verbesserungsvorschläge gibt. Es gibt immer nahezu unendlich viele Möglichkeiten, ein Problem zu lösen, aber oftmals sind die Möglichkeiten, auf die du als Neuling kommst von der Laufzeit schlecht. Meistens liegt das daran, dass du keine passende Datenstruktur kennst. Meine Empfehlung also: Ein Buch zu Algorithmen und Datenstrukturen lesen, sobald du die ersten Zeilen Code geschrieben hast.