Powrót do spisu serii

Debug

W kolejności chronologicznej.

Podseria Odcinek Opis
Podstawy #1: Assembly x86, mity -
Podstawy #2: Asmloader -
Podstawy #3: Hell World -
Podstawy #4: Where am I? -
Podstawy #5: Debugger -
Podstawy #6: Flagi ZF i SF, Porównania (teoria) -
Podstawy #7: Flagi ZF i SF, Porównania (praktyka) -
Dygresja #1: in/out i int 12h vs Linux -
Podstawy #8: Flagi OF i CF -
Podstawy #9: Flaga PF, rejestr EFLAGS -
Podstawy #10: Jcc, SETcc, CMOVcc -
Dygresja #2: Lista opkodów i Manuale Intela -
Dygresja #3: Rejestry x86 -
Podstawy #11: Arytmetyka unsigned -
Podstawy #12: Arytmetyka signed -
Podstawy #13: CDQ, MOVSX, MOVZX -
Podstawy #14: Funkcje. Konwencje wywołania. -
Podstawy #15: Stack frame. -
Podstawy #16: Wielkość stosu -
Podstawy #17: XOR AND OR NOT -
Podstawy #18: LOOP i LOOPcc -
Podstawy #19: BT(C/S/R), BSF/BSR -
Podstawy #20: Operacje na stringach (REP/Z/NZ, MOVS/etc, STD/CLD) -
Podstawy #21: NEG BSWAP RDTSC X* -
Podstawy #22: UD2 CPUID -
Podstawy #23: ROR ROL SHLD SHRD -
Podstawy Kompilacja nasm+ld do .exe -

Materiały dodatkowe

Tu będą linki.

Powrót do spisu serii

Comments:

2013-02-18 19:27:11 = MordiJC
{
Witam. Co mam zrobić, jeżeli uzyskałem taki błąd:

(gdb) run d

Starting program: C:\Program Files (x86)\NASM\asmloader.exe d

[New Thread 4936.0x13e8]

Simplified Assembly Loader v.0.0.1 by gynvael.coldwind//vx

error: could not open input file

[Inferior 1 (process 4936) exited with code 02]
}
2013-02-19 09:53:03 = MordiJC
{
Problem rozwiązany :D
}
2013-10-28 16:12:22 = SIRKOLPOL
{
Jestem na odcinku 9. Może to głupie pytanie, ale w sumie oczywiste....
Zakładam, że jest to zabezpieczone, ale co by było gdyby za pomocą pushf wyciągnąć rejestr flag, następnie zmodyfikować iopl na inny tryb i wrzucic z powrotem do eflags za pomoca popf ??
Ma sens?
}
2013-10-28 16:20:30 = Gynvael Coldwind
{
@SIRKOLPOL
Sens ma!
Ale tak jak mówisz, to jest zabezpieczone :)

Na operację dane-->EFLAGS jest nakładana maska, a więc tylko niektóre bity można ustawić. To jak konkretnie popf działa zależy od tego czy Twój kod jest w ring0 (kernel-mode), czy w ring3 (user-mode). W kernel-mode popf może ustawić więcej flag.
W tomie 2gim Intel Manuals w pseudokodzie POPF jest zaznaczone które flagi można modyfikować, a które nie :)

}
2013-11-06 23:45:49 = SIRKOLPOL
{
Następne pytanie ;p:
Jeżeli mamy funkcję bez argumentow to czy mamy retn X gdzie X = 0 czy ret bez X ? Oraz w tej sytuacji czy ma znaczenie czy jest stdcall czy cdecl ?
Ponad to pytanie :
jak wywołałeś funkcję asdf po czym zdjales ze stosu stringa i za pomoca ret skoczyles pod adres call to dlaczego ten call sie nie wykonal tylko nastapil skok do exita?
Według mojego rozumowania powinno być tak, że ten printf powinien się wykonywać w nieskończoność, jednak tak się nie stało, co robi ten call w tej funkcji, że wraca do pierwszego calla? Może to ret to powoduje?
Chodzi o odcinek 14.
}
2013-11-06 23:53:14 = SIRKOLPOL
{
2 pytanie juz jasne ;)
}
2013-11-06 23:53:18 = SIRKOLPOL
{
2 pytanie juz jasne ;)
}
2013-11-07 01:06:38 = Gynvael Coldwind
{
@SIRKOLPOL
Co do pierwszego pytania, to ret wystarczy (retn 0 też może być, ale ret krótsze ;>).
Dla tego przypadku nie ma znaczenia czy to jest stdcall czy cdecl czy fastcall.
}
2013-11-29 01:58:28 = KONIO
{
Cześć,
Mam problem ogólnie rzecz biorąc z liczbami rzeczywistymi, a konkretnie z ich wczytywanie i z powrotem wypisywaniem na ekran. Próbowałem użyć do tego funkcji printf i scanf, albo są nie odpowiednie albo nie potrafię ich w odpowiedni sposób użyć. Jak to można zrobić ?
I jeszcze jedno, czy obliczenia i działania na liczbach rzeczywistych oprócz przejścia na inne instrukcje
jak fdivp i korzystania z rejestrów stosu wymagają jakiś specjalnych deklaracji w kodzie czy czegoś innego ?
}

Add a comment:

Nick:
URL (optional):
Math captcha: 9 ∗ 10 + 6 =