Cel      :OsciLab
Opis     :Program obsugi oscyloskopw i generatorw cyfrowych
Gdzie    :Chip 3/99
Narzdzia:SoftIce
Autor    :Bart

Ok zaczynamy:
1.Uruchamiamy OsciLab-a.Widzimy,e jest moliwo wprowadzenia kodu rejestracyjnego a wic menu->Pomoc->Rejestruj
2.Wpisujemy dane rejestracyjne np.Bart i 987654321
3.Wchodzimy do SoftIce(CTRL-D) i zakadamy puapk na pobieranie tekstu z okienka edycyjnego >bpx GetDlgItemTextA.
4.Wychodzimy z SI(F5)
5.Klikamy OK.SoftIce zatrzymuje dziaanie programu na wywoaniu funkcji GetDlgItemTextA.Poniewa s dwa okienka edycyjne jeden raz naciskamy F5 a za drugim razem F11.Po paru F10 widzimy taki oto kod:
...
:004339E9 E80EFEFFFF              call 004337FC<--funkcja sprawdzjca
:004339EE 83C408                  add esp, 00000008
:004339F1 85C0                    test eax, eax<--czy eax=0
:004339F3 0F848A000000            je 00433A83<--skok do ZA_REJESTRACJA jeeli eax=0
...
6.Gdy bdziemy w miejscu call 004337FC naciskamy F8(Trace Into).Po paru F10 widzimy kod
...
:00433810 8BD0                    mov edx, eax<--edx=dugo name
:00433812 83FA04                  cmp edx, 00000004<--czy=4
:00433815 7D04                    jge 0043381B<--jeeli =>4 to skok
:00433817 33C0                    xor eax, eax<--zerowanie eax
:00433819 EB5E                    jmp 00433879<--skok do wyjcia
...
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00433819(U), :00433872(U)
|
:00433879 5E                      pop esi
:0043387A 5B                      pop ebx
:0043387B 8BE5                    mov esp, ebp
:0043387D 5D                      pop ebp
:0043387E C3                      ret

Wida wic,e jeeli dugo naszego wprowadzonego imienia jest mniejsza ni 4 to nastpuje zerowanie eax i skok do wyjcia z procedury.A gdy eax=0 to wywietlana jest wiadomo o bdnej rejestracji.Jeeli dugo imienia jest wiksza bd rwna 4 to nastpuje skok do procedury tworzenia prawidowego s/n ze wprowadzonego imienia:
...
:00433821 0FBE0C06                movsx ecx, byte ptr [esi+eax]<--ecx kolejne kody liter imienia
:00433825 03D9                    add ebx, ecx<--dodawane s do siebie
:00433827 40                      inc eax<--zwiksz licznik
:00433828 3BD0                    cmp edx, eax<--czy ju koniec
:0043382A 7FF5                    jg 00433821<--id po kolejn liter

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043381F(C)
|
:0043382C 8BC3                    mov eax, ebx<--suma kodw hex liter do eax z ebx
:0043382E C1E003                  shl eax, 03<--przesu eax w lewo o 3
:00433831 2BC3                    sub eax, ebx<--odejmij od eax ebx
:00433833 0547F41000              add eax, 0010F447<--dodaj do eax 10F447h
:00433838 8BD8                    mov ebx, eax<--eax=ebx
:0043383A 53                      push ebx<--ebx na stos
...
Algorytm tworznia jest nastpujcy
-dodaje kolejno do siebie kody hex liter wprowadzonego imienia
-wynik dodawania kopiowany jest z ebx do eax
-wynik w eax poddawany jest operacji shl 3(przesunicie bitw w lewo o 3 pozycje)
-potem od eax odejmowana jest warto sumy kodw z ebx
-do eax dodawana jest warto 10F447h
Jeeli dalej przeledzimy kod zobaczymy,e warto z eax zostanie zamieniona na dziesitn posta a na pocztku cigu pojawi si 3 znaki OL-.Gdy bedziemy nad 43383A wystarczy napisa ?ebx i pojawi nam si druga cz poprawnego s/n spisujemy warto dziesitn.Wystarczy teraz doda na pocztku OL- i mamy kompletny s/n.Dla moich danych to wyglda tak

IMIE  :Bart
SERIAL:OL-1113862

W archiwum z tym tutem powinien znajdowa si keygenerator dla OsciLab w pascalu.
Do zobaczenia nastpnym razem.