🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
22 messages
22 total messages Started by "Remek" Tue, 28 Jun 2011 18:47
Debugger
#2429
Author: "Remek"
Date: Tue, 28 Jun 2011 18:47
13 lines
358 bytes
Witam

Czy ma ktos namiary na SoftIce, albo inny debugger o podobnej
funkcjonalno�ci pod Windows XP? Znalaz�em w sieci i �ci�gn��em SoftIce for
XP, a co okaza�o si� trojanem. Mam GoBug, kt�ry pod XP nie chce si�
uruchomi�.

A z innej beczki. Jest jaka� procedura w assemblezrze s�u��ca do
pierwiastkowania?

Pozdrawiam  Remek


Re: Debugger
#2430
Author: Michoo
Date: Wed, 29 Jun 2011 01:13
20 lines
654 bytes
W dniu 28.06.2011 18:47, Remek pisze:
> Witam
>
> Czy ma ktos namiary na SoftIce, albo inny debugger o podobnej
> funkcjonalno�ci pod Windows XP? Znalaz�em w sieci i �ci�gn��em SoftIce for
> XP, a co okaza�o si� trojanem. Mam GoBug, kt�ry pod XP nie chce si�
> uruchomi�.
Co rozumiesz przez "podobnej"? �e rezydentny w kernelu? Imo w wi�kszo�ci
przypadk�w klasyczny debugger starcza - czy OlyDbg, czy IDA (wersja demo
nie pozwala zapisywa�, ale debugg  dla hobbisty wystrarczy).


> A z innej beczki. Jest jaka� procedura w assemblezrze s�u��ca do
> pierwiastkowania?
Mo�e by� fsqrt?

--
Pozdrawiam
Michoo

Re: Debugger
#2431
Author: "Remek"
Date: Wed, 29 Jun 2011 04:51
36 lines
1580 bytes
U�ytkownik "Michoo" napisa�:

> Co rozumiesz przez "podobnej"?

Mo�liwo�ci i sposobu obs�ugi (drugorz�dne).

> Imo w wi�kszo�ci przypadk�w klasyczny debugger starcza - czy OlyDbg, czy
IDA (wersja demo
> nie pozwala zapisywa�, ale debugg  dla hobbisty wystrarczy).

To ja teraz zapytam. Co to znaczy "klasyczny debuger"? Dla mnie klasyczne s�
dwa. Debug i SoftIce :) SoftIce to niedo�cigniona pot�ga. Podobno IDA
dor�wnuje, a nawet przewy�sza. Ma�o u�ywa�em IDA, bo mam za ma�o
dokumentacji, a jak dla mnie obs�uga jest skomplikowana. Reszta tej parze
nie dorasta nawet do pi�t, chocia� czasem wystarcza. Np. GoBug ma t� zalet�,
�e nie k�adzie �apy na ca�ym systemie i nie przeszkadza w pracy innym
programom.

> > w assemblezrze s�u��ca do  pierwiastkowania?

> Mo�e by� fsqrt?

To jest instrukcja koprocesora, a mnie chodzi o "r�czn�" procedur� dla CPU.
Takie procedury stosuj� w swoim kalkuratorze. Mog� np. dzieli� du�e liczby
bez ograniczenia dzielnika do wielko�ci rejestru. A tego nie da si� zrobi�
przy pomocy div. Jaki� czas temu kto� na grupie podrzuci� mi kawa�ek takiej
procedury dzielenia z wykorzystaniem przesuni�� i obrot�w. Jest genialna i
co ciekawe nie spotka�em jej nigdzie w literaturze, czy tutorialach w sieci.
Nie do ko�ca rozumiem jej dzia�anie, ale co najwa�niejsze nie ma
ograniczenia dzielnika. Mog� dzieli� liczby dowolnej (w sensownych
granicach) wielko�ci. P�ki co rozbudowa�em kalkulator do dzielenia liczb 128
bajtowych.

Remek


Re: Debugger
#2432
Author: Michoo
Date: Thu, 30 Jun 2011 00:35
46 lines
1857 bytes
W dniu 29.06.2011 04:51, Remek pisze:
> U�ytkownik "Michoo" napisa�:
>
>> Co rozumiesz przez "podobnej"?
>
> Mo�liwo�ci i sposobu obs�ugi (drugorz�dne).
>
>> Imo w wi�kszo�ci przypadk�w klasyczny debugger starcza - czy OlyDbg, czy
> IDA (wersja demo
>> nie pozwala zapisywa�, ale debugg  dla hobbisty wystrarczy).
>
> To ja teraz zapytam. Co to znaczy "klasyczny debuger"? Dla mnie klasyczne s�
> dwa. Debug i SoftIce :)
Klasyczny uruchamia si� jako proces w systemie i debuguje odpalony przez
siebie inny proces (lub do��cza si� do niego). Kernel mode debuger
�aduje si� jako sterownik i mo�e pracowa� w RT - m.i. debugowa� system
operacyjny, �ledzi� wywo�ania "g��biej".

> SoftIce to niedo�cigniona pot�ga.
Zaczyna�em od softice i w sumie nie wspominam go jako specjalnie dobrego
debuggera - by�o to przydatne narz�dzie w crackowaniu, ale samo
debuggowanie wspominam jako upierdliwe.

> Podobno IDA
> dor�wnuje, a nawet przewy�sza. Ma�o u�ywa�em IDA, bo mam za ma�o
> dokumentacji, a jak dla mnie obs�uga jest skomplikowana.
IDA ma tak� funkcjonalno�� jak cho�by rysowanie graf�w przep�ywu
sterowania - bywa to bardzo przydatne w zrozumieniu "jak ten kod dzia�a".

Niestety ostatnio bardziej niskopoziomowo na x86 grzeba�em w liceum,
wi�c jak dok�adnie wygl�da teraz sytuacja na rynku debugger�w ci�ko mi
powiedzie�.

>>> w assemblezrze s�u��ca do  pierwiastkowania?
>
>> Mo�e by� fsqrt?
>
> To jest instrukcja koprocesora, a mnie chodzi o "r�czn�" procedur� dla CPU.
Mo�esz u�y� funkcji wyk�adniczej - je�eli masz j� ju� zaimplementowan�.
Je�eli nie to istnieje kilka metod iteracyjnych - np metoda babilo�ska:
http://pl.wikipedia.org/wiki/Metody_obliczania_pierwiastka_kwadratowego

--
Pozdrawiam
Michoo

Re: Debugger
#2433
Author: "Remek"
Date: Thu, 30 Jun 2011 15:00
17 lines
738 bytes
U�ytkownik "Michoo" napisa�:

> http://pl.wikipedia.org/wiki/Metody_obliczania_pierwiastka_kwadratowego

Dzi�ki za ten link. Ciekawy materia�. Wymaga czasu do przestudiowania. P�ki
co w moim kalkulatorze zastosowa�em pierwsz� metod� tzn. wst�pnego
szacowania. Dzia�a, ale przy wi�kszych liczbach wida� wyra�ne wyd�u�enie
czasu dzia�ania. S�dz, �e teoretycy matematycy - informatycy opracowali ju�
bardziej wydajne (szybsze) algorytmy. Upieram si� przy poszukiwaniu metody
wykorzystuj�cej przesuni�cia i obroty. Takie procedury s�a bardzo szybkie.

Drug� (babilo�sk�) metod� mam zaimplementowan�, ale tylko do liczby o
wielko�ci rejestru. Mo�e da si� ja rozbudowa�.

Remek


Re: Debugger
#2434
Author: Michoo
Date: Thu, 30 Jun 2011 17:18
12 lines
452 bytes
W dniu 30.06.2011 15:00, Remek pisze:
> Upieram si� przy poszukiwaniu metody
> wykorzystuj�cej przesuni�cia i obroty. Takie procedury s�a bardzo szybkie.
Dla liczb ca�kowitych liczysz w czasie liniowym wzgl�dem liczby bit�w:
- lecisz od najstarszego bitu do najm�odszego
- je�eli wynik podniesiony do kwadratu jest mniejszy od wej�cia to go
zostawiasz, jak wi�kszy - gasisz. przechodzisz do nast�pnego.

--
Pozdrawiam
Michoo

Re: Debugger
#2435
Author: "Remek"
Date: Thu, 30 Jun 2011 17:25
14 lines
567 bytes
U�ytkownik "Michoo" napisa�:

> je�eli wynik podniesiony do kwadratu jest mniejszy od wej�cia to go
> zostawiasz, jak wi�kszy - gasisz. przechodzisz do nast�pnego.

I tu mam zagwozk�. Dla liczby o wielko�ci dword mam "cmp", a jak por�wnywa�
wi�ksze liczby? W tych wspomnianych przeze mnie procedurach robione to jest
jakos tak, �e r�wnolegle obracane i przesuwane s� dzielnik i dzielna (w
procedurze dzielenia) i sygna�em do zako�czenia dzia�ania jest odpowiednie
ustawienie flag. Nie jestem w stanie tego przeanalizowa�.

Remek


Re: Debugger
#2436
Author: "Bogdan (bogdro)
Date: Thu, 30 Jun 2011 19:03
21 lines
953 bytes
W dniu 30.06.2011 17:25, Remek pisze:
> U�ytkownik "Michoo" napisa�:
>
>> je�eli wynik podniesiony do kwadratu jest mniejszy od wej�cia to go
>> zostawiasz, jak wi�kszy - gasisz. przechodzisz do nast�pnego.
>
> I tu mam zagwozk�. Dla liczby o wielko�ci dword mam "cmp", a jak por�wnywa�
> wi�ksze liczby? W tych wspomnianych przeze mnie procedurach robione to jest
> jakos tak, �e r�wnolegle obracane i przesuwane s� dzielnik i dzielna (w
> procedurze dzielenia) i sygna�em do zako�czenia dzia�ania jest odpowiednie
> ustawienie flag. Nie jestem w stanie tego przeanalizowa�.


http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs14.htm

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Re: Debugger
#2437
Author: "Remek"
Date: Fri, 01 Jul 2011 10:39
32 lines
1011 bytes
U�ytkownik "Bogdan (bogdro)" napisa�:

> http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs14.htm

Chodzi o to?

cmp eax, [arg2+12] ; por�wnujemy najstarsze cz�ci

Chyba telepatycznie mi to przekaza�e�, bo w kilka minut po zadaniu pytania
sam na to wpad�em :) Dziwne jak czasem umykaj� najbardziej oczywiste regu�y.
W przypadku mojej procedury wystarczy por�wna� najstarsze bajty w buforach.

To je�li chodzi o por�wnywanie, bo przesuni�cia i obroty mam opanowane.
Tyle, �e to za ma�o aby je sprawnie implementowa� w procedurach konwersji,
dzielenia, mno�enia, czy pierwiastkowania.

Dzi�ki za odzew.

Remek

PS Na wskazanej stronie pod has�em ROL jest kilka instrukcji, ale ROL nie
ma. Poza tym warto by�oby opisa� r�nice w dzia�aniu ROL i RCL. Dok�adniej
co prawda om�wione s� na stronie:

http://rudy.mif.pg.gda.pl/~bogdro/linux/linux13.html

ale je�li kto� sam w debuggerze nie zobaczy� tych r�nic, to z opisu
niekoniecznie zrozumie w czym rzecz.




Re: Debugger
#2438
Author: "Bogdan (bogdro)
Date: Fri, 01 Jul 2011 19:01
56 lines
2082 bytes
W dniu 01.07.2011 10:39, Remek pisze:
> U�ytkownik "Bogdan (bogdro)" napisa�:
>
>> http://rudy.mif.pg.gda.pl/~bogdro/dos/a_kurs14.htm
>
> Chodzi o to?
>
> cmp eax, [arg2+12] ; por�wnujemy najstarsze cz�ci
>
> Chyba telepatycznie mi to przekaza�e�, bo w kilka minut po zadaniu pytania
> sam na to wpad�em :)

 Tak, o to chodzi :)

> Dziwne jak czasem umykaj� najbardziej oczywiste regu�y.
> W przypadku mojej procedury wystarczy por�wna� najstarsze bajty w buforach.

 To nie najgorzej.

> To je�li chodzi o por�wnywanie, bo przesuni�cia i obroty mam opanowane.
> Tyle, �e to za ma�o aby je sprawnie implementowa� w procedurach konwersji,
> dzielenia, mno�enia, czy pierwiastkowania.
>
> Dzi�ki za odzew.
>
> Remek
>
> PS Na wskazanej stronie pod has�em ROL jest kilka instrukcji, ale ROL nie
> ma.

 Zgadza si�. Jest tak dlatego, gdy� rotacja bit�w w liczbach
wielokrotnej precyzji nie jest implementowana przy pomocy instrukcji
ROL. Potrzebujemy flagi CF do trzymania bit�w "w pami�ci", dlatego ROL
dla takich liczb implementuje si� za pomoc� kombinacji SHL+RCL i
dopisania ostatniego bitu.

> Poza tym warto by�oby opisa� r�nice w dzia�aniu ROL i RCL. Dok�adniej
> co prawda om�wione s� na stronie:
>
> http://rudy.mif.pg.gda.pl/~bogdro/linux/linux13.html
>
> ale je�li kto� sam w debuggerze nie zobaczy� tych r�nic, to z opisu
> niekoniecznie zrozumie w czym rzecz.

 Id�c po kolei w kursie, strona z wielokrotn� precyzj� jest tu� po tej
stronie, ale przy wej�ciu bezpo�rednio do cz�ci 14. rzeczywi�cie co�
wi�cej mo�na by�oby powiedzie�. Pomy�l� nad tym. Na razie wpad�em na
to, aby w cz�ci 14. poda� link do cz�ci 13, ale zobacz�, czy i jak
to dok�adnie zrobi�.

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Re: Debugger
#2439
Author: "Remek"
Date: Sun, 03 Jul 2011 15:55
17 lines
580 bytes
U�ytkownik "Bogdan (bogdro)" napisa�:

> > Na wskazanej stronie pod has�em ROL jest kilka instrukcji, ale ROL nie
> > ma.

> Zgadza si�. Jest tak dlatego, gdy� rotacja bit�w w liczbach
> wielokrotnej precyzji nie jest implementowana przy pomocy instrukcji
> ROL.

Mam tzw. mieszane odczucia :) ROL to ROL - instrukcja procesora. Jak
instrukcje procesora implementowa� w procedurze i po co? Tym bardziej je�li
chodzi o ROL to w procedurach wielokrotnej precyzji ma raczej ma�e
zastosowanie. I o to min. chodzi w opisie r�nic. Np. ROR a R(Carry flag)R.

Remek


Re: Debugger
#2440
Author: Michoo
Date: Mon, 04 Jul 2011 11:19
19 lines
507 bytes
W dniu 03.07.2011 15:55, Remek pisze:
> Mam tzw. mieszane odczucia :) ROL to ROL - instrukcja procesora.
ROL to operacja na liczbie.

> Jak
> instrukcje procesora implementowa� w procedurze i po co?
Bo na liczbie d�ugo�ci podwojonego s�owa procesora ROR na na sk�adowych
nie zrobi tego o co chodzi.

> Tym bardziej je�li
> chodzi o ROL to w procedurach wielokrotnej precyzji ma raczej ma�e
> zastosowanie.
No a jak kto� jednak potrzebuje tak� funkcjonalno��?


--
Pozdrawiam
Michoo

Re: Debugger
#2441
Author: "Remek"
Date: Mon, 04 Jul 2011 15:16
50 lines
1512 bytes
U�ytkownik "Michoo" napisa�:

> > Jak
> > instrukcje procesora implementowa� w procedurze i po co?

> Bo na liczbie d�ugo�ci podwojonego s�owa procesora ROR na sk�adowych
> nie zrobi tego o co chodzi.

W zwi�zku z tym stosuje si� procedur� wykorzystuj�c� w�a�ciwe instrukcje.
Czy to oznacza implementacj� ROL???

> > Tym bardziej je�li
> > chodzi o ROL to w procedurach wielokrotnej precyzji ma raczej ma�e
> > zastosowanie.

> No a jak kto� jednak potrzebuje tak� funkcjonalno��?

Jak potrzebuje to zastosuje. M�g�by� rzuci� jaki� przyk�ad operacji
wielokrotnej precyzji wykorzystuj�cej ROL?

A co do por�wnywania du�ych liczb. Procedura podana przez Bogdana nie
sprawdza si� w mojej implementacji. Czego nie rozumiem? Pokazuj� �r�d�o.
Jest to pr�ba sprawdzenia, czy wynik mno�enia jest wi�kszy od liczby na
wej�ciu.

 mov eax, dword ptr [wynikmn+8]
 cmp eax, dword ptr [wejscie+8]
 ja  obl_reszt

 mov eax, dword ptr [wynikmn+4]
 cmp eax, dword ptr [wejscie+4]
 ja  obl_reszt

 mov eax, dword ptr [wynikmn]
 cmp eax, dword ptr [wejscie]
 ja  obl_reszt

I jak to dzia�a. Je�li pierwsze sprawdzenie daje wynik negatywny to ja nie
jest wykonany. Kolejne sprawdzenie daje wynik pozytywny i ja jest wykonany.
I to jest b��d bo:

wej�cie = 8A9F 0F8C 33C4
wynikmn = 0A9F 2F8C 33C4

Podzieli�em to na dwordy, aby by�o lepiej widoczne. Liczby s� przypadkowe,
ale obrazuj� problem. jak zrobi�, aby by�o dobrze?

Remek


Re: Debugger
#2442
Author: "Bogdan (bogdro)
Date: Mon, 04 Jul 2011 17:56
88 lines
3506 bytes
W dniu 04.07.2011 15:16, Remek pisze:
> U�ytkownik "Michoo" napisa�:
>
>>> Jak
>>> instrukcje procesora implementowa� w procedurze i po co?
>
>> Bo na liczbie d�ugo�ci podwojonego s�owa procesora ROR na sk�adowych
>> nie zrobi tego o co chodzi.
>
> W zwi�zku z tym stosuje si� procedur� wykorzystuj�c� w�a�ciwe instrukcje.
> Czy to oznacza implementacj� ROL???

 Nie, bo ROL jest zaimplementowana w procesorze. To oznacza
implementacj� "operacji rotacji bit�w na liczbie nie mieszcz�cej si� w
rejestrze". Natomiast na procesorach nie posiadaj�cych instrukcji
robi�cej to, co ROL na x86, oznacza�oby to implementacj� "operacji
rotacji bit�w (kt�ra na procesorach x86 przyjmuje posta� instrukcji ROL)".
 Nie implementujesz instrukcji procesora, bo od tego s� producenci
procesor�w. Piszesz procedur�, kt�ra imituje funkcjonalno�� pewnej
instrukcji procesora, dlatego, �e ta ma swoje ograniczenia (np.
rozmiar lub typ rejestru), kt�re trzeba w danym przypadku jako�
przeskoczy�. Piszesz procedur�, kt�ra robi to, co zrobi�aby ta
instrukcja, gdyby mog�a. Jest to, w jakim� sensie, implementacja
(oczywi�cie programowa) pewnej innej, "rozszerzonej" wersji
instrukcji, ale nie samej instrukcji.

>>> Tym bardziej je�li
>>> chodzi o ROL to w procedurach wielokrotnej precyzji ma raczej ma�e
>>> zastosowanie.
>
>> No a jak kto� jednak potrzebuje tak� funkcjonalno��?
>
> Jak potrzebuje to zastosuje. M�g�by� rzuci� jaki� przyk�ad operacji
> wielokrotnej precyzji wykorzystuj�cej ROL?

 Przesuwanie bit�w w generowaniu liczb pseudolosowych (np. co� w stylu
LFSR)?

> A co do por�wnywania du�ych liczb. Procedura podana przez Bogdana nie
> sprawdza si� w mojej implementacji. Czego nie rozumiem? Pokazuj� �r�d�o.
> Jest to pr�ba sprawdzenia, czy wynik mno�enia jest wi�kszy od liczby na
> wej�ciu.
>
>  mov eax, dword ptr [wynikmn+8]
>  cmp eax, dword ptr [wejscie+8]
>  ja  obl_reszt
>
>  mov eax, dword ptr [wynikmn+4]
>  cmp eax, dword ptr [wejscie+4]
>  ja  obl_reszt
>
>  mov eax, dword ptr [wynikmn]
>  cmp eax, dword ptr [wejscie]
>  ja  obl_reszt
>
> I jak to dzia�a. Je�li pierwsze sprawdzenie daje wynik negatywny to ja nie
> jest wykonany.

 Zgadza si�.

> Kolejne sprawdzenie daje wynik pozytywny i ja jest wykonany.
> I to jest b��d bo:
>
> wej�cie = 8A9F 0F8C 33C4
> wynikmn = 0A9F 2F8C 33C4
>
> Podzieli�em to na dwordy, aby by�o lepiej widoczne. Liczby s� przypadkowe,
> ale obrazuj� problem. jak zrobi�, aby by�o dobrze?

 Po ka�dym JA dodajesz "JNE nie_obl_reszt". Aby "i�� dalej" w
por�wnywaniu, na starszych pozycjach nie mo�e by� r�nicy. W ten
spos�b dla tych dw�ch liczb, por�wnywanie sko�czy si� po pierwszym
kroku, ale pierwszy skok JA nie zostanie wykonany. Je�li mia�by� liczby:

wej�cie = 0A9F 0F8C 33C4
wynikmn = 0A9F 2F8C 33C4

to po pierwszym por�wnaniu nie zostaje wykonany ani JA, ani JNE i
por�wnywane s� kolejne DWORDy, co doprowadzi do prawid�owej
odpowiedzi. Ale przyznaj� si� - nie napisa�em tego w kursie, a raczej
powinienem by�. W najbli�szym czasie si� poprawi�.

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Re: Debugger
#2443
Author: "Remek"
Date: Tue, 05 Jul 2011 18:01
82 lines
2436 bytes
U�ytkownik "Bogdan (bogdro)" napisa�:

> > Podzieli�em to na dwordy, aby by�o lepiej widoczne. Liczby s�
przypadkowe,
> > ale obrazuj� problem. jak zrobi�, aby by�o dobrze?

> Po ka�dym JA dodajesz "JNE nie_obl_reszt". Aby "i�� dalej" w
> por�wnywaniu, na starszych pozycjach nie mo�e by� r�nicy. W ten
> spos�b dla tych dw�ch liczb, por�wnywanie sko�czy si� po pierwszym
> kroku, ale pierwszy skok JA nie zostanie wykonany. Je�li mia�by� liczby:
>
> wej�cie = 0A9F 0F8C 33C4
> wynikmn = 0A9F 2F8C 33C4

> to po pierwszym por�wnaniu nie zostaje wykonany ani JA, ani JNE i
> por�wnywane s� kolejne DWORDy, co doprowadzi do prawid�owej
> odpowiedzi.

To sprawdzenie mam w procedurze pierwiastkowania du�ych liczb. Wygl�da to
tak:

========================================

mnoz_dalej:

 call mnozenie
 jc  obl_reszt  ; to zabezpiecza program przed niesko�czon� p�tl�

 mov eax, dword ptr [wynikmn+4]
 cmp eax, dword ptr [wejscie+4]
 ja  obl_reszt
 jb  mnoz_dalej

 mov eax, dword ptr [wynikmn]
 cmp eax, dword ptr [wejscie]
 ja  obl_reszt

  .........

==========================================

I to dzia�a z wyj�tkiem przypadku kiedy oba dwordy s� sobie r�wne :) Co
wtedy? Sprawdz� tak:

========================================

mnoz_dalej:

 call mnozenie
 jc  obl_reszt  ; to zabezpiecza program przed niesko�czon� p�tl�

 mov eax, dword ptr [wynikmn+4]
 cmp eax, dword ptr [wejscie+4]
 ja  obl_reszt
 jb  mnoz_dalej

 mov eax, dword ptr [wynikmn]
 cmp eax, dword ptr [wejscie]
 ja  obl_reszt

 jmp obl_reszt
  .........

==========================================

Czy to wystarczy? Przepraszam za trucie d..., ale ja nie potrafi� analizowa�
kodu "na sucho", a prze�wiczenie wszystkich reakcji programu na dane
wej�ciowe to robota dla jakiego� programu, nie dla cz�owieka. Mam
kalkulator, kt�ry bez zarzutu dzia�a� przez dwa lata. Przypadkiem okaza�o
si�, �e wynik dzielenia 704/4 to zero??? B��d w procedurze. M�odszy bajt
jest r�wny zero i cmp bajt, 0 powodowa�o wyj�cie z p�tli. Paranoja. Trzeba
by�o odwr�ci� procedur� i sprawdza� od najstarszego bajtu.

> nie napisa�em tego w kursie, a raczej
> powinienem by�. W najbli�szym czasie si� poprawi�.

Bez przesady :) Nie da si� przewidzie� i opisa� wszystkich zastosowa�. Co�
jednak mo�na wspomnie�.

Pozdrawiam  Remek


Re: Debugger
#2444
Author: "Bogdan (bogdro)
Date: Wed, 06 Jul 2011 18:23
103 lines
3439 bytes
W dniu 05.07.2011 18:01, Remek pisze:
> U�ytkownik "Bogdan (bogdro)" napisa�:
> 
>>> Podzieli�em to na dwordy, aby by�o lepiej widoczne. Liczby s�
> przypadkowe,
>>> ale obrazuj� problem. jak zrobi�, aby by�o dobrze?
> 
>> Po ka�dym JA dodajesz "JNE nie_obl_reszt". Aby "i�� dalej" w
>> por�wnywaniu, na starszych pozycjach nie mo�e by� r�nicy. W ten
>> spos�b dla tych dw�ch liczb, por�wnywanie sko�czy si� po pierwszym
>> kroku, ale pierwszy skok JA nie zostanie wykonany. Je�li mia�by� liczby:
>>
>> wej�cie = 0A9F 0F8C 33C4
>> wynikmn = 0A9F 2F8C 33C4
> 
>> to po pierwszym por�wnaniu nie zostaje wykonany ani JA, ani JNE i
>> por�wnywane s� kolejne DWORDy, co doprowadzi do prawid�owej
>> odpowiedzi.
> 
> To sprawdzenie mam w procedurze pierwiastkowania du�ych liczb. Wygl�da to
> tak:
> 
> ========================================
> 
> mnoz_dalej:
> 
>  call mnozenie
>  jc  obl_reszt  ; to zabezpiecza program przed niesko�czon� p�tl�
> 
>  mov eax, dword ptr [wynikmn+4]
>  cmp eax, dword ptr [wejscie+4]
>  ja  obl_reszt
>  jb  mnoz_dalej
> 
>  mov eax, dword ptr [wynikmn]
>  cmp eax, dword ptr [wejscie]
>  ja  obl_reszt
> 
>   .........
> 
> ==========================================
> 
> I to dzia�a z wyj�tkiem przypadku kiedy oba dwordy s� sobie r�wne :) Co
> wtedy? Sprawdz� tak:
> 
> ========================================
> 
> mnoz_dalej:
> 
>  call mnozenie
>  jc  obl_reszt  ; to zabezpiecza program przed niesko�czon� p�tl�
> 
>  mov eax, dword ptr [wynikmn+4]
>  cmp eax, dword ptr [wejscie+4]
>  ja  obl_reszt
>  jb  mnoz_dalej
> 
>  mov eax, dword ptr [wynikmn]
>  cmp eax, dword ptr [wejscie]
>  ja  obl_reszt
> 
>  jmp obl_reszt
>   .........
> 
> ==========================================
> 
> Czy to wystarczy?

 Prawdopodobnie tak. Je�li wynik mno�enia jest r�wny wej�ciowej
liczbie, to "obl_reszt" (co pewnie oznacza obliczanie reszty) powinno
zapewne zwr�ci� zero, wi�c powinno by� dobrze. Ale mog� czego� nie
wiedzie�, wi�c przetestuj cho� dla jednego przypadku.

> Przepraszam za trucie d..., ale ja nie potrafi� analizowa�
> kodu "na sucho", a prze�wiczenie wszystkich reakcji programu na dane
> wej�ciowe to robota dla jakiego� programu, nie dla cz�owieka.

 Po to w�a�nie robi si� testy :) Ale nie takie, �e kto� wpisuje co� do
programu (cho� te te�), tylko raczej podstawia si� dane i uruchamia
procedury "r�cznie".

> Mam
> kalkulator, kt�ry bez zarzutu dzia�a� przez dwa lata. Przypadkiem okaza�o
> si�, �e wynik dzielenia 704/4 to zero??? B��d w procedurze. M�odszy bajt
> jest r�wny zero i cmp bajt, 0 powodowa�o wyj�cie z p�tli. Paranoja. Trzeba
> by�o odwr�ci� procedur� i sprawdza� od najstarszego bajtu.

 Zdarza si�. I w bardziej, i w mniej profesjonalnych programach.

>> nie napisa�em tego w kursie, a raczej
>> powinienem by�. W najbli�szym czasie si� poprawi�.
> 
> Bez przesady :) Nie da si� przewidzie� i opisa� wszystkich zastosowa�. Co�
> jednak mo�na wspomnie�.

 Ju� wspomnia�em :)

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft

Re: Debugger
#2445
Author: "identifikator:
Date: Sat, 16 Jul 2011 17:28
5 lines
188 bytes
jak to jest kurd�, te peda�y maj� same sz�steczki na Politechnice
Warszawskiej a zadaj� takie krety�skie pytania - jak to zrobi�? przecie�
poda� Kto� tu link wiki


Re: Debugger
#2446
Author: Michoo
Date: Sat, 16 Jul 2011 18:07
21 lines
637 bytes
W dniu 16.07.2011 17:28, identifikator: 20110701 pisze:
> jak to jest kurd�, te peda�y
Podrywaj potencjalnych partner�w na prv, a nie na publicznych grupach, ok?

> maj� same sz�steczki na Politechnice
> Warszawskiej
Masz powa�ny problem z my�leniem - zdaje si�, �e dyskusja si� toczy
mi�dzy �odzi�, Gda�skiem i Poznaniem.

> a zadaj� takie krety�skie pytania - jak to zrobi�?
Ty zazwyczaj zadajesz krety�skie pytania.

> przecie�
> poda� Kto� tu link wiki
Jak jeste� za g�upi, �eby zrozumie� o czym jest aktualna dyskusja to id�
sobie na inn� grup�, co?

--
Pozdrawiam
Michoo

Re: Debugger
#2447
Author: "identifikator:
Date: Sat, 16 Jul 2011 18:25
3 lines
24 bytes
sory, ju� cichn�


Re: Debugger
#2516
Author: "tusk, donald tu
Date: Mon, 17 Feb 2014 17:54
2 lines
60 bytes
odgrzewam kotleta, jest jaki¶ dobry debuger pod Win32/64?

Re: Debugger
#2517
Author: "Bogdan (bogdro)
Date: Mon, 17 Feb 2014 19:01
14 lines
600 bytes
W dniu 17.02.2014 17:54, tusk, donald tusk pisze:
> odgrzewam kotleta, jest jaki¶ dobry debuger pod Win32/64?

 Ju¿ nie pamiêtam, jakie odpowiedzi pad³y w tym w±tku, ale OllyDbg?
GoBug (Go Tools)? Z p³atnych pewnie IDA Pro?
 Osobi¶cie u¿ywa³em troszkê OllyDbg, dawa³ radê. Widaæ by³o wywo³ania
WinAPI na przyk³ad.


--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):            http://bogdro.ciki.me
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org  Soft(EN): http://bogdro.ciki.me/soft
Re: Debugger
#2519
Author: toslaw
Date: Wed, 19 Feb 2014 11:56
12 lines
642 bytes
Bogdan (bogdro) <bogdan@poczta.gazeta.pl>:
>  W dniu 17.02.2014 17:54, tusk, donald tusk pisze:
> > odgrzewam kotleta, jest jakiś dobry debuger pod Win32/64?
>
>   Już nie pamiętam, jakie odpowiedzi padły w tym wątku, ale OllyDbg?
>  GoBug (Go Tools)? Z płatnych pewnie IDA Pro?
>   Osobiście używałem troszkę OllyDbg, dawał radę. Widać było wywołania
>  WinAPI na przykład.

OllyDBG to raczej standard przy analizie kodu asm, jak i IDA Pro zresztą. Można jeszcze pokusić się o polecenie Microsoftowego WinDBG [1], którym można debugować też kod ring0.

[1] - http://msdn.microsoft.com/en-us/windows/hardware/hh852365
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads