Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 00:06

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

Advertisement



[Olly]Was bedeutet Loca.1

Discussion on [Olly]Was bedeutet Loca.1 within the General Coding forum part of the Coders Den category.

Reply
 
Old   #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
¿Freaky¿ is offline  
Old 08/03/2010, 03:04   #2


 
MrSm!th's Avatar
 
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.
MrSm!th is offline  
Thanks
1 User
Old 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]
¿Freaky¿ is offline  
Old 08/03/2010, 03:33   #4


 
MrSm!th's Avatar
 
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.
MrSm!th is offline  
Old 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:
Code:
PUSH EBP
richtig ?
¿Freaky¿ is offline  
Old 08/03/2010, 04:21   #6
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by ¿Freaky¿ View Post
Also wer es das dann dort das hier:
Code:
PUSH EBP
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.
Akorn is offline  
Old 08/03/2010, 13:45   #7
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Quote:
Originally Posted by ¿Freaky¿ View Post
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?
mydoom is offline  
Old 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]
¿Freaky¿ is offline  
Old 08/03/2010, 14:46   #9
 
mydoom's Avatar
 
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 )
mydoom is offline  
Old 08/03/2010, 15:01   #10
 
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
Quote:
Originally Posted by MrSm!th View Post
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.
SmackJew is offline  
Old 08/03/2010, 16:27   #11
 
elite*gold: 0
Join Date: Mar 2008
Posts: 747
Received Thanks: 245
Quote:
Originally Posted by mydoom View Post
<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 View Post
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 View Post
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],
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.
Akorn is offline  
Old 08/04/2010, 19:51   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by mydoom View Post
<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 View Post
Falsch, ohne dword ptr ist das Verhalten nicht definiert.
weiß ich doch, bin schreibfaul und hierfür hats gereicht ;>

Quote:
Originally Posted by ¿Freaky¿ View Post
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
MrSm!th is offline  
Old 08/05/2010, 01:01   #13
 
elite*gold: 0
Join Date: Jul 2010
Posts: 388
Received Thanks: 196
Quote:
Originally Posted by MrSm!th View Post
weiß ich doch, bin schreibfaul und hierfür hats gereicht ;>
They call me SmackJew
SmackJew is offline  
Thanks
1 User
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.