֯
s    SSSSSSSSSS  iiii  GGGGGGG    MMM            MMM   @@@@@@@@@@            s
s   SSSSSSSSSS  iiii  GGGGGGGGG   MMMM          MMMM  @@@@@@@@@@@@@          s
s   SSSS             GGG          MMMMM       MMMMM  @@          @@  	     s
s   SSS        iiiii GGG          MMM MM    MMM MMM @@   @@@@@   @@          s
s   SSSS      iiiii  GGG          MMM  MM  MM   MMM @@  @@   @@  @@          s
s    SSSSS    iiii   GGG  GGG     MMM  MM  MM  MMM  @@  @@   @@  @@  	     s
s      SSS    iiii   GGG  GGGG     MMM  MMMM  MMMM  @@  @@   @@  @@          s
s       SSS   iiii   GGG    GGG    MMM   MM   MMMM  @@  @@@@@@@  @@          s
s      SSSSS  iiii   GGG     GG   MMM          MMM  @@   @@@@@@@@@           s
s       SSS   iiii   GGG     GG   MMM (c) by    MMM @@               	     s
s SSSSSSSSS  iiiii   GGGGGGGGGG  MMM  bORNbURNT MMM  @@@@@@@@@@@@@ Founder   s
sSSSSSSSSS  iiiii     GGGGGGGG   MMM             MMM  @@@@@@@@@@@  LukasW    s
CL
                                                                              
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                           A b o u t   t h i s   f i l e                       
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
                                                                               
  [ ] crack                      Writer: Creeper^
                                                                               
  [x] tutorial                   Writers homepage: http://strony.poland.com/creeper
                                                                               
  [ ] full program               Writers E-Mail: creepy@poland.com
                                                                               
  [ ] serial number              Date: 18/9/2000
                                                                               
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
	S i G M @  -  P L     -     http://sigmapl.webprovider.com                
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
                                                                               
Co bedziemy lamac:NukeMe by Pokropek

-Bonus - Jak zrobic aby odblokowac zabezpieczenie NukeMe ze bedziemy go odpalali
iles tam razy a nie tylko raz. - Nie zadnym Patchem!!! Chociaz...
                                                                               
Narzedzia:                                                                     
SoftIce v3.2 albo lepszy                                                       
NukeMe by Pokropek (Crackmes4U - www.crackmes.prv.pl)

Ok,dzisiaj rozwalimy NukeMe by Pokropek.Wlaczamy To NukeMe i widzimy
fajne przyciski,koleczka itp.Wciskamy na "O NukeMe" zeby dowiedziec sie
czegos o tym gownie (Autor -> Bez obrazy :)) Widzimy ze skill jest Easy wiec
w dupie to mamy :) widzimy ze jest Thanx itd. I widzimy ze historia o bombie
jest nieprawdziwa itd itd.Widzimy takze ze wystarczy ze zlamiemy jeden z 3 kodow
i to nam wystarczy.Ja opisuje ten pierwszy z tego wzgledu ze drugiego nie doczekalem :)
Klikamy na Ok i ten kto chce znac historie nukeme niech se ja przeczyta itd za to
my zaczynamy lamac. Klikamy na jakies cyferki z tego cyferblatu ktory autor
zaproponowal sila :) i klikamy np na : 12345 Ok! Teraz jak juz sie skaplem
to powiem od razu ze pulapki standardowe takie jak GetWindowTextA i GetDlgItemTextA
nie dzialaja !!! (Skandal :)) Wlaczamy od razu na Hmemcpy czyli wchodzimy do SoftIce
(Ctrl+D) i pulapka:

bpx hmemcpy

Teraz wychodzimy z SoftIce (F5) i klikamy na "OK" SoftIce sie pokazal wiec
musimy teraz znalesc sie w kodzie CrackMesa. (Ten kto czytal co nie co o hmemcpy
wie jak to zrobic) Zeby nie bylo potem gadania to powiem ze wciskamy F11 i
OK 6 razy F12 a po tym 5 Razy F12 i jestesmy w kodzie CrackMika :)

Teraz widzisz takie cos w SoftIce :


:0042FE1E 8B55FC                  mov edx, dword ptr [ebp-04]
:0042FE21 8BC6                    mov eax, esi
:0042FE23 E88037FDFF              call 004035A8
:0042FE28 8B06                    mov eax, dword ptr [esi]
:0042FE2A E8A139FDFF              call 004037D0
:0042FE2F 83F804                  cmp eax, 00000004
:0042FE32 0F8E1D010000            jle 0042FF55

Krotko mowiac przechodzimy (F10) do CMP eax,00000004 i sprawdzamy co jest w
EAX :

d eax

I nic! no to

? eax

i pokazuje sie nam

 5	5     cos tam (No moze tak : 00000005 :))
HEX    DEC     ASCII

Czyli 5 porownywana jest z 00000004 czyli 4 a w nastepnej linii jest skok
jesli mniej albo rowne.To MNIEJ ALBO ROWNE cos mnie tu  niepokoi...
Jak by bylo Skok jesli mniej (JL) to widac by bylo ze skok do :
"Spadaj bo masz za malo znakow" ale jesli kurcze jest albo rowne to cos tu musi byc.

No to nam sie nie udalo z tym skokiem bo mamy 5 znakow :( ale wychodzimy z SoftIce (F5)
wylaczajac zarazem poprzednia pulapke czyli : bd * i wciskamy na CLR - wyczyscilismy
sobie nasze pole i teraz klikamy na "1" "2" "3" i "4" i mamy w okienki "1234" :)

Teraz robimy to co poprzednio i udalo nam sie skoczyc do 0042FF55.
Teraz widzimy takie cos:

:0042FF55 8D55FC                  lea edx, dword ptr [ebp-04]
:0042FF58 8B83DC010000            mov eax, dword ptr [ebx+000001DC]
:0042FF5E E801A3FEFF              call 0041A264

Przechodzimy przez to gowno (F10) nawet przez CALLA i wydzimy ze wywalilo nas 
gdzies hen daleko od naszego nukeme...Teraz znowu 1 raz F11 i 6 razy F12
a potem 5 razy F12 i widzimy takie oto dziwactwo :) :

:0042FF63 8B55FC                  mov edx, dword ptr [ebp-04]
:0042FF66 8BC6                    mov eax, esi
:0042FF68 E83B36FDFF              call 004035A8
:0042FF6D 8B06                    mov eax, dword ptr [esi]
:0042FF6F E85C38FDFF              call 004037D0
:0042FF74 85C0                    test eax, eax
:0042FF76 7E2A                    jle 0042FFA2
:0042FF78 C7059839430001000000    mov dword ptr [00433998], 00000001

O fuck! Duzo sie tego nazbieralo ale pocieszymy sie faktem ze zabralo nas
to dwa bodajze przejscia dalej :) Ok powyzszy kawalek kodu olewamy.


-------Poczatek kodu-------
:0042FF82 8B16                    mov edx, dword ptr [esi]
:0042FF84 8B0D98394300            mov ecx, dword ptr [00433998]
:0042FF8A 0FB6540AFF              movzx edx, byte ptr [edx+ecx-01]
:0042FF8F 8917                    mov dword ptr [edi], edx
:0042FF91 8B17                    mov edx, dword ptr [edi]
:0042FF93 0115A0394300            add dword ptr [004339A0], edx
:0042FF99 FF0598394300            inc dword ptr [00433998]
:0042FF9F 48                      dec eax
:0042FFA0 75E0                    jne 0042FF82

Tutaj trzena powyjasniac ze na samym koncu JNE 0042FF82 zabiera nas spowrotem
do poczatku powyzszego kodu i widzimy ze jest to petla i przy jej
kazdym obiegu INCREMENTOWANE jest DWORD PTR czyli o jeden znak wiecej z 00433998
a Decrementowane jest eax.

INCREMENTOWANE - zwiekszane o jeden
Dec... zmniejszane o jeden.

Nie bede mieszal tylko powiem ze ten fragmencik kodu pobiera kody ASCII
naszych znakow i sumuje je.

:0042FFA2 813DA0394300D9000000    cmp dword ptr [004339A0], 000000D9
:0042FFAC 0F85B9010000            jne 0043016B

Tutaj z kolei to co wyszlo porownywane jest z D9 czyli z 217 W systemie
dziesietnym.Ok let it be :) ale u nas nie wyszlo :( i dokonamy skoku
w linii 0042FFAC do miejsca o infie ze jestesmy dupkiem :(

Hmmm,Jesli bedziesz sprytny to obliczysz sobie na Turbo Pascalu albo na
SoftIce 4 liczby ktore po zsumowaniu dadza nam 217 czyli D9 Hex.

Progs zrobilem taki :
--------Start-------------
uses crt;
var
a,b,i:integer;
s:string;
{630}
begin
clrscr;
s:='9826'; {Strzelalem}
for i:=1 to length(s) do
begin
a:=ord(s[i]);
b:=b+a;
end;
writeln(b);
readkey;
end.
--------Koniec-------------

Dobra,Wpisujemy to do naszego Crackmisia i robimy to co poprzednio az do tego momentu
i widzimy ze skok nie nastapil! Bo mamy te D9 (Wiem stad bo u goru w softice pisze

ss:tutaj jakis adres=000000D9
Ok,teraz widzimy takie cosik:


:0042FFB2 B884394300              mov eax, 00433984

				  Tutaj jest ->"5479"
                                  |
:0042FFB7 BAB4084300              mov edx, 004308B4
:0042FFBC E8E735FDFF              call 004035A8
:0042FFC1 8B06                    mov eax, dword ptr [esi]
:0042FFC3 8B1584394300            mov edx, dword ptr [00433984]
:0042FFC9 E81239FDFF              call 004038E0    <<<< Tutaj jakis CALL
:0042FFCE 751E                    jne 0042FFEE    <<<OOO! Skok jesli nie zero!!!


Dalej czyli :
:0042FFD0 6A00                    push 00000000

:0042FFD2 6894084300              push 00430894	Tutaj ->"Dupek!"
:0042FFD7 689C084300              push 0043089C Tutaj ->"Brak dostepu!!!"
:0042FFDC 8BC3                    mov eax, ebx
:0042FFDE E8F1DEFEFF              call 0041DED4
:0042FFE3 50                      push eax
:0042FFE4 E87356FDFF              Call 0040565C
:0042FFE9 E996010000              jmp 00430184

Mozemy olac.

Wazne to:

:0042FFC9 E81239FDFF              call 004038E0    <<<< Tutaj jakis CALL
:0042FFCE 751E                    jne 0042FFEE    <<<OOO! Skok jesli nie zero!!!

Ten Call musi cosik sprawdzac bo pozniej jest skok jesli nie zero!
Wchodzimy do niego F8 i widzimy :

	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,EAX
	MOV	EDI,EDX
	CMP	EAX,EDX
	JZ	0040397E
	TEST	ESI,ESI
	JZ	0040395B
	TEST	EDI,EDI
	
Tutaj nie ma nic ciekawego,porownywanie EAX z EDX a w EAX jest 9826 czyli
to co wprowadzilismy a w EDX jest 5479 czyli niby to co ma byc poprawne ale
jak widzimy nie ma zadnego skoku ani infa o zlym kodzie w poblizu.Czyzby
coz nam tutaj smierdzialo??? Idziemy dalej az do zobaczenia takiego czegos:

	CMP	CL,BL
	JNZ	0040397E
	CMP	CH,BH
	JNZ	0040397E

Tutaj sa porownywane wartosci CL i BL czyli znaki z naszego hasla z niby poprawnym.
Musimy za kazdym razem zmienic FLAGE ZERO zeby nie skoczyc (JNZ) do wywalenia nas.
Jak zobaczysz jakis JNZ po drodze to R FL Z czyli zmiana flagi aby nie dokonac skoku
az do miejsca JNZ 00433984.
Tam robimy skok i ladujemy w miejscu:


:0042FFEE A184394300              mov eax, dword ptr [00433984]
:0042FFF3 0FB64001                movzx eax, byte ptr [eax+01]
:0042FFF7 83C005                  add eax, 00000005
:0042FFFA A3A4394300              mov dword ptr [004339A4], eax
:0042FFFF A184394300              mov eax, dword ptr [00433984]
:00430004 0FB64002                movzx eax, byte ptr [eax+02]
:00430008 83C002                  add eax, 00000002
:0043000B A3A8394300              mov dword ptr [004339A8], eax
:00430010 A184394300              mov eax, dword ptr [00433984]
:00430015 0FB600                  movzx eax, byte ptr [eax]
:00430018 83E804                  sub eax, 00000004
:0043001B A3AC394300              mov dword ptr [004339AC], eax
:00430020 A184394300              mov eax, dword ptr [00433984]
:00430025 0FB64003                movzx eax, byte ptr [eax+03]
:00430029 83E803                  sub eax, 00000003
:0043002C A3B0394300              mov dword ptr [004339B0], eax
:00430031 8B06                    mov eax, dword ptr [esi]
:00430033 0FB64001                movzx eax, byte ptr [eax+01]
:00430037 A3C4394300              mov dword ptr [004339C4], eax
:0043003C 8B06                    mov eax, dword ptr [esi]
:0043003E 0FB64002                movzx eax, byte ptr [eax+02]
:00430042 A3C8394300              mov dword ptr [004339C8], eax
:00430047 8B06                    mov eax, dword ptr [esi]
:00430049 0FB600                  movzx eax, byte ptr [eax]
:0043004C A3CC394300              mov dword ptr [004339CC], eax
:00430051 8B06                    mov eax, dword ptr [esi]
:00430053 0FB64003                movzx eax, byte ptr [eax+03]
:00430057 A3D0394300              mov dword ptr [004339D0], eax
:0043005C A1C4394300              mov eax, dword ptr [004339C4]

To wszystko olewamy bo tutaj sa generowane jakies liczby az do tego fragmentu:

:00430061 3B05A4394300            cmp eax,[004339A4]
:00430067 7509                    jne 00430072

W eax widzisz : 38 a 38 to sprawdzimy co to za znak:

?38

Hex=38
Dec=56
ASCII='8'
czyli 8 czyli to co wprowadzilismy to:9826 a ta 8 to 2 znak.Porownywany jest z
004339a4 no to dowiadujemy sie co jest pod tym adresem:

d 004339a4 i w oknie danych widzimy:9 a tutaj cos dalej...

Czyli 2 znak porownywany jest z 9 a potem skok do nastepnego sprawdzania czyli
sprawdzasz wszystko tak samo jak wyzej w tych miejscach:

2	CMP	EAX,[004339A8] - Tutaj EAX=32 a 004339A8=9
	nastepnie
3	CMP	EAX,[004339AC] - EAX=39 a 004339AC=1
	znowu
4	CMP	EAX,[004339B0] - EAX=36 a 004339B0=6

Po podsumowaniu tego wszystkiego wychodzi tak:
1 - 8 czyli 2 znak = 9
2 - 2 czyli 3 znak = 9
3 - 9 czyli 1 znak = 1
4 - 6 czyli 4 znak = 6

Czyli od poczatku znaki:

1=1
2=9
3=9
4=6

				Poprawny kod
				************
				*   1996   *
				************


Kurde ale meczacy ten tutorial,idziesz ze mna na lody? :)

BONUS:
Jak zrobic zeby CrackMes mozna bylo puscic od nowa drugi raz itd???

Zaczynamy:
Wiemy ze jak drugi raz puscimy progs to wywala nam okienko:Program zostal....

Diasmujemy kod Crackmesa i szukamy textu: Program zostal

Ok,znalazl,teraz widzimy takie cos:



* Possible StringData Ref from Code Obj ->"c:\config.bak"
                                  |
:0043123E B8CC144300              mov eax, 004314CC
:00431243 E8C854FDFF              call 00406710
:00431248 84C0                    test al, al
:0043124A 740F                    je 0043125B

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"
                                  |
:0043124C B8E4144300              mov eax, 004314E4
:00431251 E852CFFFFF              call 0042E1A8
:00431256 E8C921FDFF              call 00403424

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043124A(C)
|

* Possible StringData Ref from Code Obj ->"c:\command.bak"
                                  |
:0043125B B810154300              mov eax, 00431510
:00431260 E8AB54FDFF              call 00406710
:00431265 84C0                    test al, al
:00431267 740F                    je 00431278

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"
                                  |
:00431269 B8E4144300              mov eax, 004314E4
:0043126E E835CFFFFF              call 0042E1A8
:00431273 E8AC21FDFF              call 00403424

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431267(C)
|

* Possible StringData Ref from Code Obj ->"c:\sys.dat"
                                  |
:00431278 B828154300              mov eax, 00431528
:0043127D E88E54FDFF              call 00406710
:00431282 84C0                    test al, al
:00431284 740F                    je 00431295

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"
                                  |
:00431286 B8E4144300              mov eax, 004314E4
:0043128B E818CFFFFF              call 0042E1A8
:00431290 E88F21FDFF              call 00403424

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431284(C)
|

* Possible StringData Ref from Code Obj ->"C:\windows\command\move"
                                  |
:00431295 B83C154300              mov eax, 0043153C
:0043129A E815DFFFFF              call 0042F1B4
:0043129F 84C0                    test al, al
:004312A1 740F                    je 004312B2

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"
                                  |
:004312A3 B8E4144300              mov eax, 004314E4
:004312A8 E8FBCEFFFF              call 0042E1A8
:004312AD E87221FDFF              call 00403424

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004312A1(C)
|

* Possible StringData Ref from Code Obj ->"C:\win98\command\move"
                                  |
:004312B2 B85C154300              mov eax, 0043155C
:004312B7 E8F8DEFFFF              call 0042F1B4
:004312BC 84C0                    test al, al
:004312BE 740F                    je 004312CF

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"
                                  |
:004312C0 B8E4144300              mov eax, 004314E4
:004312C5 E8DECEFFFF              call 0042E1A8
:004312CA E85521FDFF              call 00403424

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004312BE(C)
|

* Possible StringData Ref from Code Obj ->"C:\win95\command\move"
                                  |
:004312CF B87C154300              mov eax, 0043157C
:004312D4 E8DBDEFFFF              call 0042F1B4
:004312D9 84C0                    test al, al
:004312DB 740F                    je 004312EC

* Possible StringData Ref from Code Obj ->"Program zostal juz raz puszczony!"



A co to za c:\command.bak itp.Po tych kawalkach kodu mozna poznac ze progs szuka
plikow ktore wczesniej stworzyl po wyjsciu z crackmeka czyli:

c:\command.bak
c:\autoexec.bak
c:\sys.dat
no i katalog ktory nosi nazwa MOVE w C:\tutaj twoja nazwa katalogu windowsa\COMMAND\MOVE

Wlasnie z ta nazwa to widzimy ze jest w niektorych miejscach napisane
c:\win98\...
i
c:\win95\... albo c:\windows\...

Chodzi o to ze progs ma zakodowane szukac tego katalogu w obojetnie jakim
Katalogu Windowsa no bo jakby mial zakodowane tylko szukac w C:\win98
to jak bys mial katalog Windows to nie odszukal by tego pliku tam tylko szukal
by go wlasnie w C:\win98\...
Ale autor postaral sie tez o to ze mogl by byc nawet katalog c:\SHIT98 i tez
by sie NukeMe nie puscil dlatego ze tworzy on jak juz wczesniej wspomnialem
pliki c:\config.bak itd.

Czyli zeby NukeMe znowu dzialal to trzeba wykasowac wszystkie pliki ktore opisalem
i ten katalog MOVE !!!


Ale naprawde meczocy ten tutorial! Idziesz ze mna na te lody czy nie? :)
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                                                                               
                          M e M b E r S   of   S i G M @ - P L                 
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
                                                                               
    President:       lukasw............................founder/coder/cracker   
                                                                               
    VicePresident:   bORNbURNT...............webadmin/graphics/coder/cracker   
                                                                               
    The Bas3:        Slonik....................................coder/cracker   
                     Virking...................................coder/cracker   
                     Hacek.....................................coder/cracker   
                     Creeper^..................................coder/cracker   
                                                                               
                                                                               
    Trial:                                                                     
                     BBerry.............................Trial Member/cracker   
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                                                                               
                                    I N F O                                    
                                                                               
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Jak chcesz wejsc do naszej grupy to napisz E-Mail do bORNbURNT`a, albo do LukasW.
Bedziesz musial zlamac Ich CrackMe`sa ktorego ci podesla...                      
E-mail`e znajdziesz na naszej oficialnej stronie www : http://sigmapl.webprovider.com
Oprocz tego mozesz sie z nimi zkontaktowac w IRC-u na channel-u #sigmapl.            
