VCD Cutter v4.03

amois
Program Url: http://vcdcutter.yeah.net
Program Tipi: Video CD islemleri
     Araçlar: SoftIce
Basit (x)  Orta (x)  Zor ( )  Pro ( )


Başlangıç

Video CD lerinizi parcalara ayirabilmenizi sagliyor.
Yazı

Menuden --> Help --> Register --> Sallama bir isim ve code girelim. Yanlis olduguna dair uyari verdi.

[bpx messageboxa] --> bir daha deneyelim.


0167:0042C5A5 MOV EDX,FF500044
0167:0042C5A9 CALL EBX <-- hata
0167:0042C5AB POP EDI  <-- buradayiz

SoftIce in Trace Buffer ozelligini kullanacagiz. [bprw vcdcut t] --> [bpx 42c5A9] --> tekrar deneyelim --> bu sekilde programin nerelere ugradigi bulabilecegiz. Breakpoint calistiktan sonra [show 1] --> yukari dogru cikalim.

...

000019 0167:0041FFB6 MOV CL,DL 
000018 0167:0041FFB8 CMP DL,BL  <-- ?? 
000017 0167:0041FFBA JNZ 0041FFEB <-- ?? 
000016 0167:0041FFEB SBB EAX,EAX 
000015 0167:0041FFED POP EDI 
000014 0167:0041FFEE SBB EAX,-01 
000013 0167:0041FFF1 XOR ECX,ECX 
000012 0167:0041FFF3 TEST EAX,EAX 
000011 0167:0041FFF5 SETZ CL 
000010 0167:0041FFF8 POP ESI 
00000F 0167:0041FFF9 MOV EAX,ECX 
00000E 0167:0041FFFB POP EBX 
00000D 0167:0041FFFC ADD ESP,00000208 
00000C 0167:00420002 RET 
00000B 0167:0042C501 ADD ESP,08 
00000A 0167:0042C504 TEST EAX,EAX 
000009 0167:0042C506 JZ 0042C58F <-- kotu cocuk 
000008 0167:0042C58F PUSH FF 
000007 0167:0042C591 CALL [USER32!MessageBeep] 
000006 0167:0042C597 MOV EAX,[00486B4C] 
000005 0167:0042C59C PUSH 00 
000004 0167:0042C59E PUSH 0044BB44 
000003 0167:0042C5A3 PUSH 0044BAC0 
000002 0167:0042C5A8 PUSH EAX 
000001 0167:0042C5A9 CALL EBX <-- hata

Sansimizi 42C506 yi patch ederek deneyince, girdigimiz serialin dogru oldugunu soyledi. Ama kalici bir etki yaratmadi. Peki, biraz ustte 41FFB8 deki karsilastirma da ne oluyor ? [bpx 41FFB8] --> tekrar deneyelim

0167:0041FFAB LEA EAX,[ESP+00000114] <-- [d eax] 
0167:0041FFB2 MOV DL,[EAX] <-- ? DL 
0167:0041FFB4 MOV BL,[ESI] <-- ? BL
0167:0041FFB6 MOV CL,DL 
0167:0041FFB8 CMP DL,BL 
0167:0041FFBA JNZ 0041FFEB 
0167:0041FFBC TEST CL,CL 
0167:0041FFBE JZ 0041FFD6 
0167:0041FFC0 MOV DL,[EAX+01] <-- ? DL 
0167:0041FFC3 MOV BL,[ESI+01] <-- ? BL
0167:0041FFC6 MOV CL,DL 
0167:0041FFC8 CMP DL,BL 
  ...

41FFB2 de [? DL] yazarsak olmasi gereken code un ilk basamagini elde ederiz. [? BL] ise bizim girdigimiz code un ilk basamagidir. Burada kontrol baslamakta ve 41FFD4 den 41FFB2 ye ziplayarak, girdigimiz kodun tamami kontrol edilmektedir. 41FFAB de [d eax] yazinca olmasi gereken kodun tamamini goruruz. Bu sefer KeyGen yazmak icin ugrasmayacagim. Buyuk ihtimalle cok karmasiktir. Onun yerine, programciyi kendi silahi ile vuracagiz. Hata veren MessageBox da olmasi gereken seriali yazdiracagiz.


:0041FF8C lea ecx, dword ptr [esp+00000114]     
<-- ecx = 0070F140
:0041FF93 push edx
:0041FF94 push eax
:0041FF95 push 0044A3A8
:0041FF9A push ecx <-- ecx = 0044BAC0 olmali
  

* Reference To: USER32.wsprintfA, Ord:02ACh
|
:0041FF9B Call dword ptr [0043C310]
:0041FFA1 mov esi, dword ptr [esp+0000022C]
:0041FFA8 add esp, 00000010
:0041FFAB lea eax, dword ptr [esp+00000114] <-- [d eax] --> dogru serial

41FFAB de iken [d eax] ile dogru seriali bulabilecegimizi yukarida aciklamistim. Su anda serial [0070F140] memory adresinde duruyor. Register degerlerini inceledigimizde bu degere ecx in sahip oldugunu goruyoruz.


* Possible StringData Ref from Data Obj ->"Sorry"
|
:0042C59E push 0044BB44

* Possible StringData Ref from Data Obj ->"Please make sure your user name "
->"and user code "

:0042C5A3 push 0044BAC0 <-- aradigimiz memory bolgesi

Bize hata mesaji yerine dogru serialin soylenmesi icin, WsprintfA fonksiyonunun 0070F140 adresi yerine 0044BAC0 adresine yazmasi gerekir. 41FF8C adresini patch ediyoruz. Hepsi bu kadar. Program "Sorry" diyerek dogru seriali gosteriyor.

 

Son Notlar

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