|
You last visited: Today at 00:06
Advertisement
[Olly]Was bedeutet Loca.1
Discussion on [Olly]Was bedeutet Loca.1 within the General Coding forum part of the Coders Den category.
08/03/2010, 01:47
|
#1
|
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
|
[Olly]Was bedeutet Loca.1
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
|
|
|
08/03/2010, 03:04
|
#2
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
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.
|
|
|
08/03/2010, 03:22
|
#3
|
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
|
Danke, aber ich verstehe das nicht genau.
Also hier habe ich auch ein local.
Wie finde ich heraus was das local ist an diesem Beispie:
Code:
00414B40 . 55 PUSH EBP
00414B41 . 8BEC MOV EBP,ESP
00414B43 . 51 PUSH ECX
00414B44 . 8B4D 0C MOV ECX,DWORD PTR SS:[ARG.2]
00414B47 . 8D45 FC LEA EAX,[LOCAL.1]
00414B4A . 50 PUSH EAX ; Arg3 => OFFSET LOCAL.1
00414B4B . 6A 00 PUSH 0 ; Arg2 = 0
00414B4D . 51 PUSH ECX ; Arg1 => [ARG.2]
|
|
|
08/03/2010, 03:33
|
#4
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Sagte ich doch schon, in der Funktion, in der du dich gerade aufhälst, ist das die erste lokale Variable.
|
|
|
08/03/2010, 04:01
|
#5
|
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
|
Also wer es das dann dort das hier:
richtig ?
|
|
|
08/03/2010, 04:21
|
#6
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by ¿Freaky¿
Also wer es das dann dort das hier:
richtig ?
|
Das ist nicht die erste locale variable sondern dort wird der alte ebp wert auf dem stack gesichert. Die erste locale Variable kommt direct danach.
PHP Code:
00414B40 . 55 PUSH EBP
00414B41 . 8BEC MOV EBP,ESP
00414B43 . 51 PUSH ECX
00414B44 . 8B4D 0C MOV ECX,DWORD PTRSS:[ebp+12]
00414B47 . 8D45 FC LEA EAX,[ebp-4]
00414B4A . 50 PUSH EAX ; Arg3 => OFFSET LOCAL.1
00414B4B . 6A 00 PUSH 0 ; Arg2 = 0
00414B4D . 51 PUSH ECX ; Arg1 => [ARG.2]
So Sieht der code ohne die hilfsnamen von Olly aus.
|
|
|
08/03/2010, 13:45
|
#7
|
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
|
Quote:
Originally Posted by ¿Freaky¿
Danke, aber ich verstehe das nicht genau.
Also hier habe ich auch ein local.
Wie finde ich heraus was das local ist an diesem Beispie:
Code:
00414B40 . 55 PUSH EBP
00414B41 . 8BEC MOV EBP,ESP
00414B43 . 51 PUSH ECX
00414B44 . 8B4D 0C MOV ECX,DWORD PTR SS:[ARG.2]
00414B47 . 8D45 FC LEA EAX,[LOCAL.1]
00414B4A . 50 PUSH EAX ; Arg3 => OFFSET LOCAL.1
00414B4B . 6A 00 PUSH 0 ; Arg2 = 0
00414B4D . 51 PUSH ECX ; Arg1 => [ARG.2]
|
<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?
|
|
|
08/03/2010, 14:24
|
#8
|
elite*gold: 112
Join Date: Jan 2010
Posts: 1,531
Received Thanks: 414
|
Ich bin jetzt voll am verzweifel ^^
Ok weiß jetzt wie ihr auf ebp gekommen seid.
Aber woher kommt +12 und -4 ?
Code:
00414B44 . 8B4D 0C MOV ECX,DWORD PTRSS:[ebp+12]
00414B47 . 8D45 FC LEA EAX,[ebp-4]
|
|
|
08/03/2010, 14:46
|
#9
|
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
|
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  )
|
|
|
08/03/2010, 15:01
|
#10
|
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
|
Quote:
Originally Posted by MrSm!th
Code:
void foo()
{
int x = 0;
}
wäre in asm
Code:
sub esp, 4
mov [esp], 0
|
Falsch, ohne dword ptr ist das Verhalten nicht definiert.
|
|
|
08/03/2010, 16:27
|
#11
|
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
|
Quote:
Originally Posted by mydoom
<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.
|
|
|
08/04/2010, 19:51
|
#12
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by mydoom
<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 ?
Code:
00414B44 . 8B4D 0C MOV ECX,DWORD PTRSS:[ebp+12]
00414B47 . 8D45 FC LEA EAX,[ebp-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]
das könnte auch so ersetzt werden:
Code:
push ebp
mov ebp, esp
sub esp, 4
mov eax, [ARG1]
mov ebx, [LOCAL1]
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
also denkt euch dword ptr davor und dann passts
|
|
|
08/05/2010, 01:01
|
#13
|
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
|
Quote:
Originally Posted by MrSm!th
weiß ich doch, bin schreibfaul und hierfür hats gereicht ;>
|
 They call me SmackJew
|
|
|
 |
Similar Threads
|
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!
|
All times are GMT +1. The time now is 00:06.
|
|