Hallo,
ich lerne gerade Olly.
Und ich habe schon vieles gesehen wo Local.1 oder Local.2 steht und das mag C++ irgent wie nicht
Was bedeutet das und wie benutze ich das ?
mfg Freaky
Das sind einfach Namen, die Olly einsetzt, um es dir zu erleichtern.
Er analysiert den Stack und den Zugriff auf darin enthaltene Variablen und erkennt so, was Parameter (ARG1,2,3...) und was lokale Variablen sind (Local1,2,3...).
eine lokale Variable in C++:
Code:
void foo()
{
int x = 0;
}
wäre in asm
Code:
sub esp, 4
mov [esp], 0
wobei Olly dann das esp durch Local1 ersetzt.
Wenn du den Code als inline ASM in deinem Source nutzen willst, musst du Local1 usw. entweder durch die korrekten Stackzugriffe ersetzen (esp, esp+4 usw. oder ebp-4 usw.) oder lokale Variablen in der Funktion deklarieren und dann diese an die Stellen im ASM einsetzen.
Aber einfach stump den asm code copy&pasten geht in keinem Falle.
<ot>Poste bitte noch weitere Beispiele. Es macht Spaß diese Unterwegs zu "lösen" ;D </ot>
Aber ich hätte selbst noch eine Frage dazu:
ARG.2 ist EBP+12, weil vor dem Basepointer (EBP+4) noch die Rücksprungadresse liegt und deshalb EBP+8 das erste Argument bzw EBP+12 das Zweite Argument ist oder?
Der Stack "wächst" von den hohen zu niedrigen Adressen (zB FFFFFF-000000) und der Base Pointer (EBP) markiert ja den Anfang des "Scopes" der aktuellen Funktion. Wie sich das +12 erklärt steht in meinem letzten Post. Zu EBP-4:
Das hier sei der Stack:
[ESP]
[Local.1] (Also entweder EBP-4 oder ESP+4)
[EBP]
<ot>Poste bitte noch weitere Beispiele. Es macht Spaß diese Unterwegs zu "lösen" ;D </ot>
Aber ich hätte selbst noch eine Frage dazu:
ARG.2 ist EBP+12, weil vor dem Basepointer (EBP+4) noch die Rücksprungadresse liegt und deshalb EBP+8 das erste Argument bzw EBP+12 das Zweite Argument ist oder?
Quote:
Originally Posted by mydoom
Der Stack "wächst" von den hohen zu niedrigen Adressen (zB FFFFFF-000000) und der Base Pointer (EBP) markiert ja den Anfang des "Scopes" der aktuellen Funktion. Wie sich das +12 erklärt steht in meinem letzten Post. Zu EBP-4:
Das hier sei der Stack:
[ESP]
[Local.1] (Also entweder EBP-4 oder ESP+4)
[EBP]
(hoffe das ist so richtig )
Ja ist es.
Quote:
Originally Posted by MrSm!th
Das sind einfach Namen, die Olly einsetzt, um es dir zu erleichtern.
Er analysiert den Stack und den Zugriff auf darin enthaltene Variablen und erkennt so, was Parameter (ARG1,2,3...) und was lokale Variablen sind (Local1,2,3...).
eine lokale Variable in C++:
Code:
void foo()
{
int x = 0;
}
wäre in asm
Code:
sub esp, 4
mov [esp], 0
Ich addressiere die lokalen Variablen lieber mit dem BasePoint register als mit den StackPoint register.
Z.B.
PHP Code:
sub esp,8
mov [ebp-4],0
Ich finde das ist einfacher da das BasePoint register ja immer auf den Stack anfahng einer funktion zeigt und sich nicht durch push und pop Verändert.
Was die Addressierung der lokalen Variablen ja einfacher macht.
<ot>Poste bitte noch weitere Beispiele. Es macht Spaß diese Unterwegs zu "lösen" ;D </ot>
Aber ich hätte selbst noch eine Frage dazu:
ARG.2 ist EBP+12, weil vor dem Basepointer (EBP+4) noch die Rücksprungadresse liegt und deshalb EBP+8 das erste Argument bzw EBP+12 das Zweite Argument ist oder?
jop, ist richtig
Quote:
Originally Posted by SmackJew
Falsch, ohne dword ptr ist das Verhalten nicht definiert.
weiß ich doch, bin schreibfaul und hierfür hats gereicht ;>
Quote:
Originally Posted by ¿Freaky¿
Ich bin jetzt voll am verzweifel ^^
Ok weiß jetzt wie ihr auf ebp gekommen seid.
Aber woher kommt +12 und -4 ?
das ist das offset vom pointer
sind ja nicht alle parameter an der selben stelle.
ob ebp oder esp entscheidet die calling convention und je nachdem, wird + oder - genommen (bei cdecl immer + und bei stdcall kommts drauf an)
__stdcall:
funktion beginnt damit, den base pointer zu sichern und dann den stack poiter reinzukopieren, damit man auf parameter und lokale variablen zugreifen kann, ohne calls und push'es mitten in der funktion beachten zu müssen:
Code:
push ebp
mov ebp, esp
sub esp, 4 //platz für eine lokale variable und diese ist nun bei esp oder ebp-4
mov eax, [epb+8] // epb zeigt auf den alten ebp wert, ebp+4 auf die return adresse und ebp+8 auf den ersten parameter
mov ebx, [ebp-4] //oder eben [esp]
bei einer __cdecl funktion würde für alles esp genutzt:
Code:
sub esp, 4
mov eax, [esp+8] //erster parameter (da esp durch das sub esp verringert wurde)
mov ebx, [esp] //local 1
// und wenn jetzt ein push kommt, greift man direkt anders zu(nervig, wenn man sowas reversed)
push eax
mov eax, [esp+C] //erster parameter
mov ebx, [esp+4] //local 1
hoffe, nun ists verständlich.
und ja, vor die klammern kommt eine ptr größe.
es muss nicht dword ptr sein, es geht auch ein word, lieber Jude aus Brasilien ;O
Olly dbg + Rohanclient 09/14/2010 - Rohan - 6 Replies Hi all, i was trying to modify the client .exe in order to disable atleast gameguard but i had a lot of problem with that. The first is, once i have modified the .exe have i got to run it through disassembler or thhere's a way to save and than run? i try the istruction to disable GG in the post how to remove GG but after i modify and run through disassembler GG runs and close the game telling me that i disassembler is opened.
I ask so to all that succeed in hacking the exe some help and...
Olly Help 12/08/2009 - Dekaron - 0 Replies I remember seeing this somewhere in Lena's tutorial, but I don't remember what it is, or where exactly I saw it.
What I'm trying to do is attach olly to 2moons and then kill a mob in a higher map than I should be in. So, how do I make olly follow the code as I'm doing this? I thought it was a hotkey like f9 or something, but I don't remember...
Need a little help with Olly 12/08/2009 - Mabinogi - 16 Replies Why are the addresses in my IDA different from the ones in my Olly?
Same DLL, but I cant find the adress NOR the unicode in my Olly that I see in front of my in my IDA.
Any suggestions?
Edit: Using IDA 64 bit and normal OllyDbg
SnD Olly 07/29/2009 - General Coding - 13 Replies While searching for a way to unpack Themida, i stumbled across a great suite of tools gathered around a modified version of the famous OllyDbg, assembled by the group "Seek n' Destroy".
The package is about 78Mb huge and features alot of plugins for olly and other tools you could need for your general reverse engineering needs.
This package is still in beta and has some downsides, which are for example:
1) lots of stuff in olly is now in leetspeak...
screenshot:...
Olly DGB to run 01/26/2009 - World of Warcraft - 2 Replies Hey, quick question, I was talking with one of my old buddies recently and we hada discussion about how we could get olly debugger or something of the likes to run alongside with WoW. Or any other dbg program. Thanks!