|
Pop-Up Stopper v3.0 |
|
amois |
|
Program Tipi: Internet Utility |
|
Araçlar:
SoftICE |
|
|
|
|
Istenmeden cikan Popup Window'lari engelliyor.
|
Yazı |
Internet Explorer calistiginda Register ekrani cikiyor --> “123-456-7890”
0167:02ADD56D PUSH
ESI
<-- esi = 49976262h = 1234567890
0167:02ADD56E CALL 02AD88E0
<-- Serial kontrol
0167:02ADD573 ADD ESP,04
0167:02ADD576 TEST EAX,EAX
0167:02ADD578 JNZ 02ADD5DC
<-- iyi cocuk
0167:02ADD57A PUSH 10
0167:02ADD57C PUSH 02AEA2B8
0167:02ADD581 PUSH 02AEB758
0167:02ADD586 PUSH EBX
0167:02ADD587 CALL [USER32!MessageBoxA] <-- Hata
[bpx 2ADD56E] --> [F8]
0167:02AD88E0 MOV EAX,[ESP+04]
<-- eax = 49976262
0167:02AD88E4 PUSH E1E235D1
0167:02AD88E9 PUSH 33C65319
0167:02AD88EE PUSH EAX
0167:02AD88EF CALL 02AD88D0
<-- eax = FC56997B oldu
0167:02AD88F4 XOR EDX,EDX
0167:02AD88F6 MOV ECX,00000BC3
0167:02AD88FB DIV ECX
<-- eax = 157446, edx = 629 oldu
0167:02AD88FD ADD ESP,0C
0167:02AD8900 MOV EAX,EDX
<-- eax = 629
0167:02AD8902 NEG EAX
<-- eax = FFFFF9D7
0167:02AD8904 SBB EAX,EAX
<-- eax = FFFFFFFF
0167:02AD8906 INC EAX
<-- eax = 0
0167:02AD8907 RET
[bpx 2ADD8EF] --> [F8]
0167:02AD88D0 MOV EAX,[ESP+04]
<-- eax = 49976262h = 1234657890
0167:02AD88D4 MOV ECX,[ESP+0C]
<-- ecx = E1E235D1
0167:02AD88D8 XOR EAX,ECX
<-- eax = A87557B3 oldu
0167:02AD88DA IMUL EAX,[ESP+08]
<-- [esp+08] = 33C65319
0167:02AD88DF RET
<-- eax = FC56997B
Olay biraz acikliga kavustu.
1- Girdigimiz serial E1E235D1 ile XOR islemine giriyor.
2- Sonuc 33C65319 ile carpiliyor.
3- Bu deger BC3 e bolunuyor.
4- Cikan sonucun 0 olmasi gerekiyor.
Girdigimiz serialin gecerli olabilmesi icin, 2AD8900 da eax e 0 degerinin
atanmasi gerekiyor. Brute-Force kodumuz su sekilde olabilir.
.data
iksor dd 0E1E235D1h
; orjinal programdan
carpan dd 33C65319h
; orjinal programdan
bolen dd 0BC3h
; orjinal programdan
sonuc db 32h dup(?)
; cikan sonucu buraya atacagiz
tur db "%lu",0
; cikan sonucu decimal’e cevirmek icin
sayac dd 01h
; 1 den baslayarak serial arayacagiz
.code
start:
@basla:
mov eax, sayac
; eax’e 1 den baslayarak deger atiyoruz
xor eax, iksor
; XOR islemi
imul eax, carpan
; carpma islemi
xor edx, edx
; edx bolme islemi oncesi 0 landi.
mov ecx, bolen
div ecx
; bolme islemi
cmp edx, 0
; bolme islemin sonucu kalan deger edx’de
je @yaz
; eger 0 ise gecerli serial bulduk
inc sayac
; degilse sayaci 1 artir
jmp @basla
; bir daha dene
@yaz:
mov ebx, sayac
; gecerli serial ebx’de
mov eax, offset sonuc
;
mov edx, offset tur
;
invoke wsprintf, eax, edx, ebx
; seriali decimal’e cevirip yaz
mov eax, offset sonuc
; sonuc bolgesinin offseti eax’de
invoke MessageBoxA, 0, eax, eax, 0
; gecerli seriali goster
invoke ExitProcess,0
end start
Brute-Force calisinca bize “4??” degerini
verdi --> 000-000-04??
BIRAZ DA MATEMATIK
Peki, Brute-Force yazmadan gecerli serial bulabilir miydik ? Programcinin
matematik bilgisinin biraz eksik olmasi nedeniyle bulabiliyoruz. Cunku yapilan
islemlerde toplama veya cikarma yok. Sadece carpma ve bolme var. Programci,
burada “0” in ozelliklerini unutmus gorunuyor.
Gecerli serialimizi “a” ile gosterelim.
b = a xor E1E235D1
c = b * 33C65319
d = c / BC3
e = kalan
“e” degerinin 0 olmasi
gerekiyor. “c” degerimiz 0
olursa, hem “d” hem de “e”
degerleri 0 olacak. “c”
nin 0 olmasi icin “b”
nin 0 olmasi gerekir. “b”
nin 0 olmasi icin de, “a”
nin ???????? olmasi gerekir. Evet, gecerli
serialimiz ????????
Cracker'dan NOT : ???????? degerini bulamiyorsaniz, bu
siteye bir daha ugramayin.
|
|
Bir programı kullanarak para kazanıyorsanız, programı satın alın.