MapEdit v2.64

amois

Program Url: w*w.boutell.com/mapedit
Program Tipi: Utility

Araηlar:

 

SoftICE

Basit ( )  Orta (x)  Zor ( )  Pro ( )

Başlangıη

??

 

Yazı


Unlock bolumune “19071907” sallama seriali girelim. [bpx MessageBoxA] --> [F11]

0167:0041644A CALL 00416270                 <-- kontrol
0167:0041644F TEST EAX,EAX
0167:00416451 JNZ 0041646D                  <-- iyi cocuk
0167:00416453 PUSH EBX
0167:00416454 CALL 00416560                 <-- HATA

41644A da iken [d eax] ile girdigimiz sallama seriali gorebiliriz. Kontrol sonucunda eax degerimiz 0 olarak geri dondu ve hataya sebep oldu. [bpx 41644A] --> [F8]

...
0167:00416288 PUSH 00449C1C                 <-- “BKMNBKBA”
0167:0041628D PUSH 00449BF0                 <-- “19071907”
0167:00416292 XOR EBX,EBX
0167:00416294 MOV [ESP+1C],ESI
0167:00416298 CALL 004329A0                 <-- esitler mi ?
0167:0041629D ADD ESP,0C
0167:004162A0 TEST EAX,EAX
0167:004162A2 JZ 0041631D                   <-- degiller
0167:004162A4 PUSH 08
0167:004162A6 PUSH 00449C10                 <-- “BJJNBKBA”
0167:004162AB PUSH 00449BF0                 <-- “19071907”
0167:004162B0 CALL 004329A0                 <-- esitler mi ?
0167:004162B5 ADD ESP,0C
0167:004162B8 TEST EAX,EAX
0167:004162BA JZ 0041631D                   <-- degiller

Bu kontrol ilk basta sazan gibi atlamamiza neden olsa da, sonradan kendimizi hizlica toparliyoruz. Cunku, 41631D ye zipladiktan sonra eax degerimiz 0 oluyor.


0167:004162BC XOR EAX,EAX
0167:004162BE XOR ECX,ECX
0167:004162C0 MOV CL,[EAX+00449BF0]         <-- 31h --> “1”
0167:004162C6 ADD ECX,-41                   <-- FFFFFFF0
0167:004162C9 CMP ECX,0F
0167:004162CC JA 0041631D                   <-- 15 den kucukse cik
0167:004162CE MOV EDX,ESI
0167:004162D0 IMUL EDX,ECX
0167:004162D3 ADD EBX,EDX
0167:004162D5 SHL ESI,04
0167:004162D8 INC EAX
0167:004162D9 CMP EAX,08
0167:004162DC JL 004162BE

Buradaki dongude girdigimiz serial karakter bazinda bir isleme giriyor. Karakterin ASCII degerinden 41h cikarilip 15 den kucuk olup olmadigi kontrol ediliyor. 15 den buyuk ciktigi anda 41631D ye ziplayarak hata veriyor. 4162DC deki kontrolden girmemiz gereken serialin 8 basamak oldugunu da anliyoruz. Sonuc olarak girmemiz gereken serial “A” ile “P” harfleri arasinda ve 8 basamakli olmali. Girdigimiz serilalin buyuk harfe cevrildigini de unutmayalim.

Sallama serialimizi “ABCDEFGH” seklinde girince, dongu sonucunda ebx = 76543210 oldu. Bunun anlami --> Serialimizi olusturan harflerin “A” ya olan uzakliklari, sagdan sola dogru diziliyor. Son harfimiz “H” nin “A” ya olan uzakligi --> H – A = 7, G – A = 6 ...


0167:004162DE CMP EBP,EBX                   <-- ebx = 76543210
0167:004162E0 JAE 0041631D
0167:004162E2 MOV ECX,[0044A808]            <-- ecx = 61E
0167:004162E8 MOV EDX,[0044A80C]            <-- edx = 1
0167:004162EE MOV EAX,[ESP+10]              <-- eax = 1
0167:004162F2 ADD EBP,EDI
0167:004162F4 ADD EDI,EAX
0167:004162F6 CMP EDI,ECX
0167:004162F8 JZ 004162FE
0167:004162FA CMP EDI,EDX
0167:004162FC JNZ 00416304
0167:004162FE NEG EAX
0167:00416300 MOV [ESP+10],EAX
0167:00416304 CMP EBP,EBX                   <-- gecerli serial mi ?
0167:00416306 JZ 00416312                   <-- iyi cocuk
0167:00416308 JB 004162EE
0167:0041630A XOR EAX,EAX
0167:0041630C POP EDI
0167:0041630D POP ESI
0167:0041630E POP EBP
0167:0041630F POP EBX
0167:00416310 POP ECX
0167:00416311 RET
0167:00416312 MOV EAX,00449BF0              <-- iyi cocuk
0167:00416317 POP EDI
0167:00416318 POP ESI
0167:00416319 POP EBP
0167:0041631A POP EBX
0167:0041631B POP ECX
0167:0041631C RET

416304 de ebx in ebp ye esit olmasi gerekiyor. Ancak bu sekilde eax degerimiz 0 olmaktan kurtulacak.

 

416304 de iken ebp = 01A1D991 --> “A” ya olan uzaklik cinsinden yazarsak --> “BJJNBKBA”. Olay biraz daha acikliga kavustu. Normalde bu serial yukarida program tarafindan eleniyor. 4162EE ile 416308 arasinda bir dongu var. Dongu sirasinda ebp nin aldigi ikinci deger 01A1DCA1 --> “BKMNBKBA”. Bu deger de yukarida eleniyordu. Ucuncu aldigi deger ise --> “01A1DF??” --> “??PNBKBA” --> Gecerli seriali bulduk.

Burada kucuk bir noktaya dikkat cekmek istiyorum. Denemelerimiz sirasinda girecegimiz sallama seriale bagli olarak program kilitlenmis havasi verebiliyor. Yani, 4162EE ile 416308 arasindaki dongude uzun zaman takilip kalabiliyor.

Kuvvetli bir koruma olmasa da, bence en azindan zarif. Olayi anlayamayan birinin gecerli serial bulmasi zor. Yani, 4162EE ile 416308 arasindaki donguyu en az 2 kez gecince, gecerli serial bulunabiliyor.


 

Son Notlar

Bir programı kullanarak para kazanıyorsanız, programı satın alın.