autor: massh
groopa: CookieCrK
Tools needed: SoftIce

Bardzo czesto programisci piszacy swoje programy w delphi sa zbyt leniwi, lub po prostu nie umieja
napisac procki generujacej/sprawdzajacej seriala w assemblerze. Zamiast tego uzywaja standardowych
funkcji delphi.
Nie ma nic prostrzego, niz zlamanie tak napisanego programu. Wszystko co wystarczy zrobic,
to znalezc miejsce w pamieci, w ktorym rozpoczyna sie procka porownujaca i zapodac tam bpx.
Obie te rzeczy zrobia za nas macra napisane przez niejakiego smole (Hi :)


MACRO del3="s 0 l c0000000 8b,0e,8b,1f,39,d9,75,58,4a"
MACRO bpdel3="u dataaddr; BPX codeaddr DO \"d esi\"; u eip "


(Obydwa macra trzeba dodac do pliku winice.dat)

Pierwsze z nich szuka w pamieci ciagu bajtow, ktore sa wlasnie poczatkiem procki sprawdzajacej:

s           - Search for data
0           - Adres od ktorego ma zaczac szukac
l           - l oznacza lenght czyli dlugosc
c0000000    - Kolejny parametr to ilosc bajtow jaka ma zostac przeszukana. Dlaczego taka?
              Ano dlatego, ze dalej znajduje sie pamiec, ktora rezerwuje sobie SoftIce i nie 
              znajdziemy tam juz nic ciekawego :)
8b,0e,8b... - Tego wlasnie szukamy ;)

Po odpaleniu tego macra, jesli SI znajdzie zadany ciag znakow i na konsoli wyswietla 'pattern found',
to automatycznie w oknie datawindow wyswietla zawartosc adresu pod ktorym znalazl dane. Zmienna
dataaddr wskazuje wtedy na adres pierwszego bajtu w oknie datawindow.


Drugie macro natomiast zastawia na znalezionym miejscu bpx.

u dataaddr   - Un-assembles instructions. Robi to po prostu tyle, ze pobiera adres z datawindow 
               i ustawia wg. niego adres w oknie codewindow (po wywolaniu del3, dataaddr zawiera 
               adres procedury porownujacej)
BPX codeaddr - W oknie kodu widac teraz procke porownujaca. Zastawiany jest tam bpx
DO \"d esi\" - Display memory. Pokazuje w oknie danych to, na co wskazuje rejestr esi
u eip        - Przywraca poprzednia pozycje w oknie kodu

Wystarczy jedynie dostac sie jakims sposobem do kodu programu, odpalic oba macra,
: del3     // enter
: bpdel3   // enter

(Tutaj mala uwaga... Takich procedur w programie moze byc sporo, dlatego makra nalezy odpalac
do momentu, az SI potwierdzi, iz nie ma ich juz wiecej 'Pattern not found')

uruchomic program i przepisac poprawnego seriala, ktory wskazywany bedzie przez rejestr esi badz edi.
Mogloby sie wydawac, ze jest to zbyt piekne aby bylo prawdziwe :) Ta sztuczka dziala jednak 
bardzo czesto.


Greetigz goes to all crackers around the (virtual :) glob...