Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 16:38

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C# Aller Anfang ist schwer, doch wie gehts weiter ?

Discussion on C# Aller Anfang ist schwer, doch wie gehts weiter ? within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
C# Aller Anfang ist schwer, doch wie gehts weiter ?

Hallo Leute,
Ich habe mich nun eine Weile hinter C# geklemmt und bin recht angetan von der Sprache und den Funktionen.

Zum lernen habe ich mir:



gekauft, welches gerade die Anfänge und viele Funktionen etc erklärt hat.
durch einige Programmen wie kleine Spiele mit geometrischen Formen, Berechnungen von Dingen etc habe ich recht schnell die Grundlagen gelernt.
An den Programmen die das Buch als Beispiel nimmt habe ich ab und zu auch selber noch etwas gebastelt um einfach zu schauen was die Möglichkeiten sind und was man evtl alles ändern kann.

Nun habe ich das Buch durch ( schlage natürlich hier und da mal nach wenn ich etwas nicht mehr genau weiß oder ich Hilfe brauche) aber muss dazu sagen das ich nicht so das gefunden habe wonach ich wirklich gesucht habe.

Der Teil mit dem auslesen von Daten anderer Programme fehlt zb total oder Wie lese ich bestimmte Dinge intern von Programmen aus.
Um genauer zu sein: Ich möchte lernen wie man aus Spielen/Programmen was auch immer Daten ausliest zb wie groß ist der abstand von Person A zu Person B, Mit was für einer Geschwindigkeit bewegt sich Person A, Grafische hervorhebungen von zb liegengelassenen Items ) das mein Programm einen roten kreis um das item zb macht) ( um auf das Thema games nochmal zurückzukommen)

Kennt jemand noch gute Quellen wo man evtl genau sowas nachlesen kann oder irgendwelche OpenSource projekte zu den oben beschrieben Dingen, an denen ich lernen kann.

Falls das etwas zu ungenau oder Missverständlich war was ich suche, werde ich gerne noch etwas genauer

Vielen Dank für jede hilfreiche Antwort
TurboGolom is offline  
Old 08/03/2015, 10:24   #2


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by TurboGolom View Post
aber muss dazu sagen das ich nicht so das gefunden habe wonach ich wirklich gesucht habe.

Der Teil mit dem auslesen von Daten anderer Programme fehlt zb total oder Wie lese ich bestimmte Dinge intern von Programmen aus.
Das liegt daran, dass C# dafür nicht konzeptioniert wurde. Die Sprache hat ganz andere Anwendungsbereiche und dazu gehört sicher keine Datenmanipulation oder Zugriff auf andere Anwendungen auf solch einem niedrigen Level.

Quote:
Originally Posted by TurboGolom View Post
Um genauer zu sein: Ich möchte lernen wie man aus Spielen/Programmen was auch immer Daten ausliest zb wie groß ist der abstand von Person A zu Person B, Mit was für einer Geschwindigkeit bewegt sich Person A, Grafische hervorhebungen von zb liegengelassenen Items ) das mein Programm einen roten kreis um das item zb macht) ( um auf das Thema games nochmal zurückzukommen)
Ok, dann solltest du dich mit Arbeitsspeicher befassen. Wie dieser aufgebaut ist und wie Programme generell damit arbeiten. Dann kannst du den Speicher (ja, auch mit C# aber es wäre sicher nicht verkehrt mal C++ gesehen zu haben, da hast du auch weniger Aufwand mit der Nutzung der Windows API weil du nur einen Header einbinden musst und direkt loslegen kannst) mittels API Funktionen auslesen und darin schreiben.

Cheat Engine kennst du sicher. Such dir doch damit mal ein paar einfache Werte raus (wie z.B. die HP Anzahl) und versuche, den Wert an der Adresse zu ändern.
Mostey is offline  
Old 08/03/2015, 11:44   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Gamehacking ist so etwas dass du wohl in keinem programmierbuch finden wirst da es kein bestimmtes Teilgebiet ist, sondern eher die Anwendung von generellem programmierwissen ist. Wenn du weißt wie Speicher funktioniert, und wie du Msdn benutzt bekommst du das auch problemlos hin.

Wobei managed sprachen wie c# sind dafür auch nicht die optimalste Lösung, mit nativen Sprachen kannst du viel besser den Speicher modellieren und via dllinjection musst du nicht den Umweg über die WinApi machen.

Außerdem glaube ich das z.b. Funktionen hooken um direkt in den Prozess des Programms einzugreifen, z.B. zum erweiterten der zeichenroutine in c# auch nicht möglich ist, was mit nativen Sprachen auch realisierbar ist
warfley is offline  
Old 08/03/2015, 12:31   #4
 
elite*gold: 0
Join Date: Mar 2010
Posts: 360
Received Thanks: 132
Quote:
Originally Posted by warfley View Post
...und via dllinjection musst du nicht den Umweg über die WinApi machen.
Achja ? Wie geht sowas denn ohne CreateRemoteThread/LoadLibrary ?
Und "Umweg" ist gut, das ist ein Einzeiler xD

Quote:
Originally Posted by warfley View Post
Außerdem glaube ich das z.b. Funktionen hooken um direkt in den Prozess des Programms einzugreifen, z.B. zum erweiterten der zeichenroutine in c# auch nicht möglich ist, was mit nativen Sprachen auch realisierbar ist
Falsch, z.B. mit Deviare möglich

PS: Die Galileo Bücher sind wirklich sehr schön geschrieben, ich selber habe 2 davon gelesen (aber nicht zu C#/c++)
PPS: C++ ist dafür aber echt besser geeignet *dem Rest zustimm*
Daifoku is offline  
Old 08/03/2015, 13:52   #5
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
Quote:
Originally Posted by Daifoku View Post
Achja ? Wie geht sowas denn ohne CreateRemoteThread/LoadLibrary ?
Und "Umweg" ist gut, das ist ein Einzeiler xD



Falsch, z.B. mit Deviare möglich

PS: Die Galileo Bücher sind wirklich sehr schön geschrieben, ich selber habe 2 davon gelesen (aber nicht zu C#/c++)
PPS: C++ ist dafür aber echt besser geeignet *dem Rest zustimm*
Ging da eher um das richtige Werkzeug, In Cpp wirst defintiv mehr Beispiele zu finden und über weniger Stolpersteine rennen. Wenn du was von C# aus hookst wirst du nativen Code brauchen (oder das zeug direkt in Speicher kritzeln), egal wie wirst am ende die riesige IL-VM im speicher haben. Denk das ist ist durchaus intressant, gerade als Übung da man zum umsetzen ein besseres Verständnis braucht, einfach weil man weniger fertige Libs nutzen kann.

@Warfley grundsätzlich wüsste ich nu nicht was du mit C# nicht umsetzen könntest, abgesehn von einer handvoll exotischer Dinge, denk Globale Hooks und halt Treiber sind nu die einzigen Sachen die mir in Kopf kommen, wenn da jemand mehr weiß würds mich allerdings intressieren
dready is offline  
Old 08/03/2015, 14:23   #6
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Quote:
Achja ? Wie geht sowas denn ohne CreateRemoteThread/LoadLibrary ?
Und "Umweg" ist gut, das ist ein Einzeiler xD
Du willst mir nicht wirklich erzählen wollen dass die Tollen Memoryopertaion ReadProcessMemory und WriteProcessmemory so angenehm sind wie z.B. Unions, Zeiger, Structs, und dann noch befehle wie bCopy
Außerdem musst du nicht für jede Aktion die Windows API callen, was ja auch viel mehr Zeit beansprucht als einfach auf den Speicher vom eigenen prozess

Quote:
@Warfley grundsätzlich wüsste ich nu nicht was du mit C# nicht umsetzen könntest, abgesehn von einer handvoll exotischer Dinge, denk Globale Hooks und halt Treiber sind nu die einzigen Sachen die mir in Kopf kommen, wenn da jemand mehr weiß würds mich allerdings intressieren
na dass ist einfach ein Programm schreiben was ohne Runtime Environment läuft :P

spaß bei Seite, klar kann man das meiste, eigentlich alles was man so normalerweise braucht mit C# erreichen, doch manche Sachen gehen mit anderen Sprachen einfach viel besser.

Ich könnte zum Beispiel überhaupt nicht mehr ohne Zeigerarithmetik arbeiten, weil die manche Sachen so viel einfacher macht (z.B. lesen und schreiben aus binär Dateien)
warfley is offline  
Old 08/03/2015, 14:51   #7


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by warfley View Post
Außerdem glaube ich das z.b. Funktionen hooken um direkt in den Prozess des Programms einzugreifen, z.B. zum erweiterten der zeichenroutine in c# auch nicht möglich ist, was mit nativen Sprachen auch realisierbar ist
Klar geht das:



Quote:
Originally Posted by dready View Post
@Warfley grundsätzlich wüsste ich nu nicht was du mit C# nicht umsetzen könntest, abgesehn von einer handvoll exotischer Dinge, denk Globale Hooks und halt Treiber sind nu die einzigen Sachen die mir in Kopf kommen, wenn da jemand mehr weiß würds mich allerdings intressieren
Es ist so gut wie alles möglich, selbst globale LL Hooks. Spezifische Hooks die nur auf einer Anwendung sitzen gehen allerdings nicht, weil du in jedes Programm sonst die ILR injizieren musst und dann müsste jede Anwendung fähig sein, den IL Code zu callen. Da das nicht möglich ist, fällt diese Art von Hook weg.

Du kannst dir ja mal das Snippet von mir dazu anschauen, müsste irgendwo in der Snippet Sektion hier auf der ersten Seite stehen.
Mostey is offline  
Old 08/03/2015, 16:11   #8
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
Quote:
Originally Posted by Mostey View Post

Es ist so gut wie alles möglich, selbst globale LL Hooks. Spezifische Hooks die nur auf einer Anwendung sitzen gehen allerdings nicht, weil du in jedes Programm sonst die ILR injizieren musst und dann müsste jede Anwendung fähig sein, den IL Code zu callen. Da das nicht möglich ist, fällt diese Art von Hook weg.

Du kannst dir ja mal das Snippet von mir dazu anschauen, müsste irgendwo in der Snippet Sektion hier auf der ersten Seite stehen.
Jub das is klar, meinte exakt das, obwohl ich mich gerade frage ob es theoretisch ginge hehe. Wie sinnvoll es ist in jeden Prozess ne VM zu knallen sei mal dahingestellt. Da du damit ja rumgespielt hast, hattest das jemals probiert ?
dready is offline  
Old 08/03/2015, 18:07   #9


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by dready View Post
Jub das is klar, meinte exakt das, obwohl ich mich gerade frage ob es theoretisch ginge hehe. Wie sinnvoll es ist in jeden Prozess ne VM zu knallen sei mal dahingestellt. Da du damit ja rumgespielt hast, hattest das jemals probiert ?
Hatte ich, ja. Damals ging es darum, ein Chatfenster mittels DirectX Overlay zu zeichnen und ich wollte natürlich auch, dass man im Spiel schreiben kann wenn man einen Trigger drückt. Dazu hatte ich dann den Keyhook geschrieben und hatte ihn erst global gesetzt. Das ging auch wunderbar, ich konnte auch bestimmen ob ich die Keys an das Programm weiterleite. Problematisch war damals, dass ich bei dem globalen Keyhook immer nur den gedrückten Key (mittels WM_KEY oder so) bekomme - nicht aber den eigentlichen Wert hinter dem Key. Es wurden keine Sonderzeichen berücksichtigt, keine Groß- und Kleinschreibung - gar nichts. Gut, hatte ich dann so Hilfsfunktionen genutzt die mir das übersetzen sollten aber das hat nicht immer gut geklappt.


Für mich war also wichtig, dass ich nicht nur die WM_KEY Werte empfangen kann sondern auch WM_CHAR, dass an die WndProc übermittelt wird sobald die WM_KEY Message durchgeht. Dafür braucht man aber wieder den spezifischen Keyhook und das funktioniert wohl eben so, dass in dem Programm die ILR geladen wird und das Programm dann wohl zuständig dafür ist, die Hookchain zu callen. Da aber mein Callback der aufgerufen werden sollte managed war, gab es keine Möglichkeit für das Zielprogramm diesen Callback zu callen. Du musst dem ja irgendwie sagen dass es die geladene ILR nehmen soll und den Dreck damit callen muss. Das ging aber weit über meine Skills hinaus und das habe ich auch deshalb nicht weiter verfolgt.


Am Ende habe ich es so gelöst, dass ich die WndProc des Hauptfensters von der Anwendung gehooked habe und einfach neben den WM_KEY Events die WM_CHAR Events abgefangen habe.


Weiß gerade nicht mehr ob es WM_KEY war oder ob da noch ne Unterscheidung zwischen KEYDOWN und KEYUP war. Egal, ist schon etwas her.
Mostey is offline  
Old 08/03/2015, 22:21   #10
 
elite*gold: 18
Join Date: Jun 2009
Posts: 1,213
Received Thanks: 56
Ok vielen dank erstmal für die vielen Antworten.
mh hätte ich das vorher gewusst hätte man natürlich überlegen können ob ich nicht gleich mit c++ anfange aber na gut zu spät ist zu spät und gelernt ist es ja nicht umsonst

Ich denke einfach mal ganz spontan das sich c++ und c# schon ein bisschen ähneln und ich mit meinem c# wissen nicht ganz nutzlos da stehe ?
als arbeitsumgebung kann man ja dann trotzem visuel studio nutzen wenn ich das richtig sehe ^^

hatte damals bei der entscheidung nur gelesen das c# etwas leichter sein soll ( wobei das auch immer relativ ist xD ) und man trotzdem fast das selbe wie c++ bewerkstelligen kann, deswegen die entscheidung zu c#
TurboGolom is offline  
Old 08/10/2015, 01:00   #11

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Arrow C/C++ -> .NET Languages

#moved…
snow is offline  
Old 08/10/2015, 14:03   #12
 
elite*gold: 67
Join Date: Aug 2014
Posts: 1,321
Received Thanks: 927
Quote:
Originally Posted by TurboGolom View Post
....
Du kannst alles was du machen willst in C# umsetzen. Die anderen die hier sagen "nein das geht nicht da brauchst du c++, C# ist dafür nicht gemacht..."

haben keine Ahnung.


Ich weiß, dass es funktioniert weil ich es schon gemacht habe. Das einzige bei dem du unter umständen eine andere sprache verwenden solltest ist das farbliche hervorheben von sachen in spielen. Das geht mit HLSL einfacher und effektiver.
Xio. is offline  
Reply


Similar Threads Similar Threads
Aller Anfang ist schwer [1.6]
05/03/2012 - Counter-Strike - 3 Replies
Aloha, da mir CS Source mit den ganzen "Bugfixes" und Patches sich zurzeit nur verschlimmert, habe ich mir überlegt eventuell mal 1.6 anzutesten. Gesagt getan. Auf meinem Steamacc hab ich es jetzt schon ca 2 Jahre, aber erst 30 min gespielt gehabt. Also starte ich 1.6, und was sehe ich? 16x16 große Pixel. Ich versuche meine Grafik umzustellen und bei sämtlichen Auflösungen sowie dem Mode kommt meist soetwas wie "Settings not supported" oder sowas.
[Minecraft] Aller Anfang ist schwer
04/17/2011 - Minecraft - 1 Replies
Kaufen, Herunterladen, Installieren und Starten Kaufen (Registrierung notwendig) und herunterladen könnt ihr das Spiel auf der offiziellen Webseite. Die heruntergeladene Datei ausführen. Beim ersten Start lädt sich der Client die benötigten Spieledaten herunter. Sie sind, genau wie die Savegames, in folgendem Ordner zu finden: Windows XP: c:\Dokumente und Einstellungen\NUTZERNAME\Anwendungsdaten\.minecraf t Windows 7/Vista:C:\Users\NUTZERNAME\AppData\Roaming\.minec raft...
Aller anfang ist Schwer :)
04/18/2010 - Metin2 Private Server - 9 Replies
Hallo liebe E*PVP Community, ich hab nach langem überlegen mich entschollsen ,an einem Metin 2 Privat Server zu arbeiten. Ich wollte mal in die Runde fragen ob sich jemand ( Mit Erfahrung) melden kann,und mich unterstüzen kann,wenn ich fragen habe,oder allgemin. Wäre sehr freundlich von ihm/ihr ^^ Mfg
Aller Anfang ist schwer
10/31/2007 - Final Fantasy XI - 11 Replies
hallo zusammen, hab euer forum hier durch google gefunden und hab um genau zu sein, keine ahnung von memlogs, bots oder sonstigem. ich suche nach einem funktionierendem fishing-bot und einen claim-bot für verschiedene nms. so einen model-viewer würde ich auch gerne haben, weil ich mal meinen galka in toller rüstung sehen will^^. schonmal danke für die aufmerksamkeit mfg Al



All times are GMT +2. The time now is 16:38.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.