Dll? Du hast überhaupt keine .dll gemacht. Da fehlt noch die DLLMAIN. Was du gemacht hast, ist ein Konsolenprogramm, welches die Adresse 0x00AA840 beschreibt mit dem Wert 100. Aber wie wäre es, wenn du Pointer benutzen würdest ? Dann kann man Solitär neu starten, ohne neue Adressen zu suchen.
Dein 'Hack' könnte so aussehen:
PHP Code:
#include <Windows.h> #include <stdio.h> void Hack() { //Hier deine Hackfunktionen reinschreiben. //Natürlich kannst du auch mit GetAsyncKeyState arbeiten. DWORD dwPlayerPtr = *(DWORD*)0x00AA840; DWORD Punkte = *(DWORD*)((dwPlayerPtr) + 0xDEINOFFSET); *(int*)Punkte = (int)999999; }
int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved) { if(reason==DLL_PROCESS_ATTACH)//Falls injection erfolgreich, dann das.. { MessageBoxA(NULL, "Erfolgreich!", "Injection by ....", MB_OK); CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Hack, NULL, NULL, NULL); } return true; }
zu beachten ist auch, dass wenn man eine .dll in einem Prozess reininjectet, dass man nicht mehr mit dem Fenstertitel arbeiten muss, sondern mit der PID (Praktisch wenn man doppel Leveln will mit einem LevelBot z.B.).
Aber an deiner stelle würde ich mir überhaupt erstmal richtig durchlesen, was überhaupt eine .dll ist und wie eine injection funktioniert.
Wann lernt ihr endlich, euch einfach die Fehlercodes ausgeben zu lassen? <.<
mh... Meintest du meinen oder von TE den Code ? Weil meinen habe ich aus'm Kopf ausgeschrieben und nicht in einer IDE getestet. :'D Aber danke das du mich drauf hingewiesen hast, ich habe '()' nach 'void Hack' vergessen.
Aber so sollte es gehen. :O
du willst was verändern.
das geht zu 20% gut, wenn du dein Spiel startest und die Dll reinpackst weit am anfang wird nichts passieren.
Weil wenn später alles geladen wird, kann es nicht nochmal überschrieben werden weil es ja schon beim Injecten überschrieben wurde.
Kann nur gehen wenn du DLL in das laufende Spiel reinpackst wenn du auf einer Map bist oder sonstiges.
in einer Void das ganze laufen zulassen ist allgemein unmöglich.
Vllt ist es bei deinen Punkten unwichtig aber sobald du sagen wir mal dein Life auf voller HP-Zahl halten willst.
Und du würdest die DLL reinpacken würdest du 9999 Life haben bis dich i-was trifft dann biste wieder auf dem alten Wert weil keine Schleife und kein Rückgabewert was in void allgemein nicht geht
daher nehme lieber HRESULT WINAPI oder DWORD als void
könnstest es so aufbauen
void blabla()
{
dein ganzes zeug zum memory bearbeiten
}
DWORD WINAPI uSchleife(LPVOID)
{
hier deine aufruf zum ModulHandle etc was du so willst
dann
while(1)
{
blabla(); <-- der void aufruf
du willst was verändern.
das geht zu 20% gut, wenn du dein Spiel startest und die Dll reinpackst weit am anfang wird nichts passieren.
Weil wenn später alles geladen wird, kann es nicht nochmal überschrieben werden weil es ja schon beim Injecten überschrieben wurde.
Kann nur gehen wenn du DLL in das laufende Spiel reinpackst wenn du auf einer Map bist oder sonstiges.
in einer Void das ganze laufen zulassen ist allgemein unmöglich.
Vllt ist es bei deinen Punkten unwichtig aber sobald du sagen wir mal dein Life auf voller HP-Zahl halten willst.
Und du würdest die DLL reinpacken würdest du 9999 Life haben bis dich i-was trifft dann biste wieder auf dem alten Wert weil keine Schleife und kein Rückgabewert was in void allgemein nicht geht
daher nehme lieber HRESULT WINAPI oder DWORD als void
könnstest es so aufbauen
wtf laberst du da für ne Scheiße? Behalt dein nicht vorhandenes Wissen bitte für dich, danke.
wtf laberst du da für ne Scheiße? Behalt dein nicht vorhandenes Wissen bitte für dich, danke.
oh der Smart Alert muss wieder was sagen
Du hast ugefährt soviel ahnung wie ein Spatz fleisch am Knie
Wie willste in einen Arbeitsspeicher was festes reinschreiben der jede Millisekunden mit neuen Daten gefüttert wird?
Nicht vergessen der Arbeitsspeicher ist ja nur ein Tempspeicher da ist nichts festes drin.
nur weil du ihn mit deinem Google-Sourcecodes nichts erklären konntest
zudem ist der angeschnittene Source das Grundgerüst.
Aber da du ja alles kannst kannste ihm das ja machen.
Du willst immer Fehlermeldungen, kann ich mir schon denken wenn man danach dann Googlen muss ich sehe was er falsch macht.
Da du ja eh das letzte Wort hast wie immer "Bitte"
Dann kann ich nochmal Lachen
Es handelt sich um die Punkte bei Solitär, diese müssen nicht andauernd neu gesetzt werden. Übrigens Spreche ich hier von GetLastError () und nicht von Fehlermeldungen.
Bis auf das fehlende Leerzeichen beim WriteProcessMemory aufruf scheint seine Source auf den 1.Blick richtig zu sein, ich vermute einfach mal, dass dieser Fehler, warum auch immer, beim kopieren aufgetreten ist. Daher vermute ich, dass ihm die nötigen Rechte fehlen :> Diese kann er allerdings durch das setzen der entsprechenden Token erlangen, wohl am einfachsten über die SetDebugPrivilegs-Funktion, welche überall im Internet zu finden ist.
Übrigens sehe ich in den Meisten fällen auch sofort die Fehler, notfalls hau ichs selber kurz durch den compiler. Ich möchte allerdings die Leute zum selber denken anregen
Die Tatsache, dass der OP sein genaues Problem überhaupt nicht schildert lässt mich annehmen, dass sein Code vollständig auf Copy&Paste basiert und er mit C++ so viel zu tun hatte wie Til Schweiger mit Hollywood.
Es handelt sich um die Punkte bei Solitär, diese müssen nicht andauernd neu gesetzt werden. Übrigens Spreche ich hier von GetLastError () und nicht von Fehlermeldungen.
Bis auf das fehlende Leerzeichen beim WriteProcessMemory aufruf scheint seine Source auf den 1.Blick richtig zu sein, ich vermute einfach mal, dass dieser Fehler, warum auch immer, beim kopieren aufgetreten ist. Daher vermute ich, dass ihm die nötigen Rechte fehlen :> Diese kann er allerdings durch das setzen der entsprechenden Token erlangen, wohl am einfachsten über die SetDebugPrivilegs-Funktion, welche überall im Internet zu finden ist.
Übrigens sehe ich in den Meisten fällen auch sofort die Fehler, notfalls hau ichs selber kurz durch den compiler. Ich möchte allerdings die Leute zum selber denken anregen
@schnewin TE
Wie gesagt ich zeig dir mal ein BSP
ich mach es so in der art, aber ich arbeite lieber mit extra Void wie oben im in den Gestell alleine zur übersicht einiges kann man nicht aus den Kopf und muss probieren grade bei Memory dingen
ohne Schleife bei Memory geht nichts sonst müßte man ja wenn man ein Hotkey hat pausenlos auf der Taste rumtrommeln das es bleibt.
außer man verändert Sprünge das ist wieder was anderes.
Die rechte zu DLL die brauch keine nur der Injector damit sie in den Prozess kann.
Jetzt kommt es noch drauf an ob er Win7 hat und alles Dynamisch ist dann muss er BaseAdresse + Offset rechnen
In olly kann man sich das ja so anschauen wie weit es bis dahin ist
Sonst rechnet man die Offset-Adresse - BaseAdresse = das offset was man zum berechnen brauch.
Bsp mal dazu
OffsetAdresse = 0x00AA840
BaseAdresse = 0x0020100
00AA840 - 0020100 = 8A740
BaseAdresse + 0x8A740 ist dann der ich nehme mal an das soll der PlayerPointer sein
Der Aufruf findet immer an der selben Stelle statt nur die Adresszahlen ändern sich davor
wie das geht sieht man ja im Link
@ Disco
Aber vllt hilft es ja mal anderen
am Anfang hatte jeder mal probleme
Danke, nun hast du entgültig bewiesen, dass du keine Ahnung hast.
Hat auch niemand behauptet. Mein Beitrag zu diesem Thema bezog sich auf die Source vom TE.
Wenn du meinst, dann bin ich offen für neus anhand eines Beispiel.
Schaue mal in den UC link läuft auch in einer Schleife, achso sind ja auch alles Noobs stimmt ja.
Wenn du meinst, dann bin ich offen für neus anhand eines Beispiel.
Schaue mal in den UC link läuft auch in einer Schleife, achso sind ja auch alles Noobs stimmt ja.
aua Mir tut schon der Bauch weh vor lauter lachen
Bei dem UC Beispiel läuft die Abfrage, welche Taste gedrückt wurde in einer Schleife, allerdings nicht der Teil, welcher für die veränderung des Speichers nötig ist.
Bist du nun endlich ruhig oder willst du dich weiter selfownen? :x
edit: Grad nochmal einen genaueren Blick auf die UC-Source geworfen und ja, zumindest der Threadersteller ist ein noob. Aber ich will deine kleine, bunte Traumwelt nicht weiter zerstören.
Wie gesagt ich warte noch auf dein Beispiel, weil ich Himmel ist auch Jahrmarkt aber ich sag dir nicht wo die Leiter steht der einzigste der keine ahnung hier hat bist du.
Sieht man in vielen anderen Post du bist einfach nur hier um andere voll zu Texten mit deinem geistigen Dünnschiss.
Du Laberst und Laberst aber weißt nicht mal was.
Trotzdem warte ich noch auf dein Beispiel
Kannst ja Need for Speed World nehmen das Spiel ist Free und kein Punkbuster oder sonstiges Zeig es anhand dem Nitro.
Da du ja eh alles kannst dürfte es ja kein Problem für dich sein.
Wie gesagt ich warte noch auf dein Beispiel, weil ich Himmel ist auch Jahrmarkt aber ich sag dir nicht wo die Leiter steht der einzigste der keine ahnung hier hat bist du.
Sieht man in vielen anderen Post du bist einfach nur hier um andere voll zu Texten mit deinem geistigen Dünnschiss.
Du Laberst und Laberst aber weißt nicht mal was.
Trotzdem warte ich noch auf dein Beispiel
Kannst ja Need for Speed World nehmen das Spiel ist Free und kein Punkbuster oder sonstiges Zeig es anhand dem Nitro.
Da du ja eh alles kannst dürfte es ja kein Problem für dich sein.
Du vergleichst Äpfel mit Birnen, nice! :>
Das man Werte wie Nitro 'freezen' muss ist glaub ich jedem hier klar. Trotzdem geht es hier im Thread immernoch um die Punkte bei Solitär, welche ein einziges mal gesetzt werden müssen. Auch bei deinem Beispiel von UC werden die Werte genau einmal verändert pro Tastendruck.
Und mal nur so als Info, nicht nur ich lach mich hier tot (: