Asembler i dziwne instrukcje

Tombol

Użytkownik
Dołączył
Lipiec 18, 2009
Posty
2
Mój pierwszy post na tym forum i wypadało by się przywitać ;p
Witam

Nie będę zaczynać od "plaks plaks jak chakofać"

Mam pytano odnośnie czegoś takiego

ADD EAX,DWORD PTR SS:[LOCAL.651]

Wiem że to do EAX'a dodaje słowo(?) które siedzi gdzieś na stosie ??
Ogólnie co te ptr oznacza ?
Bo czasami mam też BYTE ptr i też nie wiem co to jest ;/
No ale najważniejsze to co to jest local.651 ;p
Trochę nobowskie pytanie albo jakoś nie mogę tego rozgryźć a google też nic nie ma ;/
 

marccinn

Użytkownik
Dołączył
Grudzień 5, 2007
Posty
19
Witam.

Wszelkie wyrażenia typu BYTE (ptr), WORD, DWORD, QWORD..? są odwołaniami do pamięci. Oznacza to tyle, że pisząc DWORD ptr SS:[LOCAL.651] chcemy odczytać 4 bajty pamięci (DWORD to 4 bajty) z podanego adresu - tutaj SS:[LOCAL.651]. SS to tak jak napisałeś, segment stosu, a to co w kwadratowych nawiasach, jest offsetem. Nie wiem czym jest to LOCAL, może jakaś zmienna, może słowo kluczowe, etc, napisz jakiego Asemblera używasz, to będziemy coś więcej wiedzieć.

Może prostsza będzie dla Ciebie nieco inna składnia składnia (ja osobiście wolę właśnie tą drugą, bo jest o wiele krótsza i bardziej zrozumiała):

ADD EAX, DWORD[SS:LOCAL.651]

Kaażdy porządny asembler powinien ją potraktować tak samo jak tą pierwszą i spokojnie przetłumaczyć na kod binarny.

ptr o które pytałeś to skrót od "pointer", czyli wskaźnik. Piszemy to słowo, żeby pokazać, że dalej nastąpi przekazanie wskaźnika na zmienną (tutaj: SS[LOCAL.651]) , aczkolwiek jeśli przypadnie Ci do gustu ta instrukcja, którą tutaj napisałem, słowo "ptr" nie będzie Ci do niczego potrzebne ;]

Sorry za tak długi wykład ale krócej niestety nie umiem..
smile.gif
 

Tombol

Użytkownik
Dołączył
Lipiec 18, 2009
Posty
2
Właśnie długie wykłady są dobre
<


A co do tego jaki to asembler to sam nie wiem
To jest disasemblacja
<

Potrzebowałem to wiedzieć bo siedzi w tym prosty algorytm szyfrujący (coś w tym stylu) i chce go odgadnąć ;p
Początki crackingu
<
 

qitobito

Użytkownik
Dołączył
Listopad 14, 2010
Posty
2
Strzelam, że jest to ollydbg. Olly interpretuje zmienne i w tym wypadku uznał, że jest to zmienna lokalna, która wskazuje miejsce na stosie. Kliknij dwa razy na instrukcję i powinieneś zobaczyć do czego LOCAL.651 jest aliasem (np LOCAL.6 = EBP-18).
Mam nadzieję, że pomogłem.
 
Do góry Bottom