Quote:
Originally Posted by XxharCs
weil wenn die adresse falsch ist, erzeugt die dll injection nen overflow und deswegen stürzt nostale ab
|
Nein, das erzeugt keinen Overflow. Was da passiert nennt sich Zugriffsverletzung (access violation).
Overflows:
Pufferüberlauf
Arithmetischer Überlauf
Zugriffsverletzung:
Schutzverletzung
Quote:
Originally Posted by XxharCs
willst du mir sagen das du void HackThread(){... machst ? <- ist nähmlich das schlechteste was man tuhen kann
|
Schön, dass du meine Aussage total missverstehst und dann eine solche Aussage in den Raum stellst ohne jede Begründung. ^^
Lass mich dir das mal kurz zeigen, denn so schlimm ist das eigentlich nicht.
Code:
long __stdacall foo(long unused)
{
}
void bar()
{
auto i = foo(0);
}
Nun in Assembly:
Code:
;long __stcall foo(long unused)
push ebp
mov ebp, esp
pop ebp
retn 4
;void bar()
push ebp
mov ebp, esp
push ecx
push 0
call foo
mov [ebp-4], eax
mov esp, ebp
pop ebp
ret
So wie er es benutzt passiert da nichts schlimmes, es wird dann irgendein Wert in deine Variable gesteckt. Das Gleiche passiert, wenn du void als Rückgabetypen wählst. Im eax Register steht dann lediglich das, was vor dem Aufruf der Funktion drinnen stand.
Klar, das ist trotzdem falsch und es kann in x64 Prozessen crashen, aber ich habe das auch so gar nicht gemeint (wie Smith bereits sagte).
Quote:
Originally Posted by XxharCs
2.
Code:
DWORD WINAPI HackThread(LPVOID [B]unused[/B])
wie du siehst und man kann auch einen logischen schluss ziehen, verwenden wir den rückgabewert garnicht
|
Hier haust du ein paar wirklich fundamentale Dinge durcheinander! Ich rate dir nochmal ein Buch zu nehmen und das Kapitel "Funktionen/Prozeduren" durchzuarbeiten.
Quote:
Originally Posted by XxharCs
noch zum TE:
den code copy&pasten und eigentlich nicht viel ahnung von dieser umgebung zu haben, passt nicht zusammen ;)
|
Nehm dir ein Beispiel dran. Wenn man keine Ahnung hat, dann sollte man auch keine Tipps geben. ;)
Quote:
Originally Posted by XxharCs
Man kann aber parameter auch zurück geben, aber nicht immer und nicht jeden ! (paar andere vorraussetzungen spielen da natürlich auch mit..)
|
Man gibt keine Parameter zurück, das ist absoluter Unsinn!
Quote:
Originally Posted by XxharCs
ein bsp in java wär:
|
Wo genau gibst du da nun einen Parameter zurück? Du gibst in deinem Beispiel die Länge des Parameters "String s" zurück, sofern es den vorrausgegangenen Check übersteht.
Quote:
Originally Posted by XxharCs
wenn man in ein spiel injectet und die adressen sind falsch, bekommt das spiel nen dc weil die dll auf irgendeine adresse zeigt etc.
ich hoffe das ich es besser erklärt hab, weil ich kein typ der alles 1a erklären kann
deswegen sag ich das seine adresse falsch ist
|
Siehe Punkt 1, das ist kein Overflow.
Man gibt keine Tipps, wenn man nicht weiß wovon man spricht. ;)