Thread View: pl.comp.lang.asm
22 messages
22 total messages
Started by "Remek"
Tue, 28 Jun 2011 18:47
Debugger
Author: "Remek"
Date: Tue, 28 Jun 2011 18:47
Date: Tue, 28 Jun 2011 18:47
13 lines
358 bytes
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
Author: Michoo
Date: Wed, 29 Jun 2011 01:13
Date: Wed, 29 Jun 2011 01:13
20 lines
654 bytes
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
Author: "Remek"
Date: Wed, 29 Jun 2011 04:51
Date: Wed, 29 Jun 2011 04:51
36 lines
1580 bytes
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
Author: Michoo
Date: Thu, 30 Jun 2011 00:35
Date: Thu, 30 Jun 2011 00:35
46 lines
1857 bytes
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
Author: "Remek"
Date: Thu, 30 Jun 2011 15:00
Date: Thu, 30 Jun 2011 15:00
17 lines
738 bytes
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
Author: Michoo
Date: Thu, 30 Jun 2011 17:18
Date: Thu, 30 Jun 2011 17:18
12 lines
452 bytes
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
Author: "Remek"
Date: Thu, 30 Jun 2011 17:25
Date: Thu, 30 Jun 2011 17:25
14 lines
567 bytes
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
Author: "Bogdan (bogdro)
Date: Thu, 30 Jun 2011 19:03
Date: Thu, 30 Jun 2011 19:03
21 lines
953 bytes
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
Author: "Remek"
Date: Fri, 01 Jul 2011 10:39
Date: Fri, 01 Jul 2011 10:39
32 lines
1011 bytes
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
Author: "Bogdan (bogdro)
Date: Fri, 01 Jul 2011 19:01
Date: Fri, 01 Jul 2011 19:01
56 lines
2082 bytes
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
Author: "Remek"
Date: Sun, 03 Jul 2011 15:55
Date: Sun, 03 Jul 2011 15:55
17 lines
580 bytes
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
Author: Michoo
Date: Mon, 04 Jul 2011 11:19
Date: Mon, 04 Jul 2011 11:19
19 lines
507 bytes
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
Author: "Remek"
Date: Mon, 04 Jul 2011 15:16
Date: Mon, 04 Jul 2011 15:16
50 lines
1512 bytes
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
Author: "Bogdan (bogdro)
Date: Mon, 04 Jul 2011 17:56
Date: Mon, 04 Jul 2011 17:56
88 lines
3506 bytes
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
Author: "Remek"
Date: Tue, 05 Jul 2011 18:01
Date: Tue, 05 Jul 2011 18:01
82 lines
2436 bytes
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
Author: "Bogdan (bogdro)
Date: Wed, 06 Jul 2011 18:23
Date: Wed, 06 Jul 2011 18:23
103 lines
3439 bytes
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
Author: "identifikator:
Date: Sat, 16 Jul 2011 17:28
Date: Sat, 16 Jul 2011 17:28
5 lines
188 bytes
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
Author: Michoo
Date: Sat, 16 Jul 2011 18:07
Date: Sat, 16 Jul 2011 18:07
21 lines
637 bytes
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
Author: "identifikator:
Date: Sat, 16 Jul 2011 18:25
Date: Sat, 16 Jul 2011 18:25
3 lines
24 bytes
24 bytes
sory, ju� cichn�
Re: Debugger
Author: "tusk, donald tu
Date: Mon, 17 Feb 2014 17:54
Date: Mon, 17 Feb 2014 17:54
2 lines
60 bytes
60 bytes
odgrzewam kotleta, jest jaki¶ dobry debuger pod Win32/64?
Re: Debugger
Author: "Bogdan (bogdro)
Date: Mon, 17 Feb 2014 19:01
Date: Mon, 17 Feb 2014 19:01
14 lines
600 bytes
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
Author: toslaw
Date: Wed, 19 Feb 2014 11:56
Date: Wed, 19 Feb 2014 11:56
12 lines
642 bytes
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