Fax Amatic v.a9.46.19

amois

Program Url: w*w.electrasoft.com
Program Tipi: *

Araçlar:

 

SoftIce

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

Başlangıç

 

"Tok acin halinden ne anlar ?"

 

Yazı

 

Modem sayisi = 4, Workstation sayisi = 1000 -> “amois” , “1907” -> [bpx hmemcpy] -> [F12] -> [F10] ile takip

0046DC2F PUSH ECX                          <- Modem sayisi = 4
0046DC30 PUSH EAX                          <- Workstation sayisi = 3E8h = 1000
0046DC31 PUSH 0057EA90                     <- serial buraya yazilacak
0046DC36 PUSH 004D56F8                     <- FaxAmatic
0046DC3B PUSH 0057DC6C                     <- amois
0046DC40 MOV [005802C0],EAX
0046DC45 CALL 0046C380                     <- hesapla

[bpx 46DC45] -> [F10] ile dikkatli takip

0046C475 MOV EAX,[ESP+28]                  <- 3E8
0046C479 MOV EDI,0057E890
0046C47E MOV ECX,EAX                       <- ecx = 3E8
0046C480 SHL ECX,06                        <- ecx = FA00
0046C483 LEA EDX,[EAX+ECX+00011776]        <- edx = 2155E
0046C48A MOV ECX,00000080
0046C48F XOR EAX,EAX
0046C491 PUSH EDX
0046C492 PUSH 004BDDFC                     <- %lu
0046C497 PUSH 0057E890                     <- buraya yaz

Workstation sayimiz bir islemden gecerek 2155Eh degerini aldi ve %lu formatinda [57E890] bolgesine 136542 olarak yazildi. [F10] ->

0046C4CD MOVZX EAX,BYTE PTR [ESP+38]       <- eax = 4
0046C4D3 MOV ECX,EDX
0046C4D5 AND ECX,03
0046C4D8 REPZ MOVSB
0046C4DA LEA ECX,[EAX+0D]                  <- ecx = 11h
0046C4DD ADD EAX,0C                        <- eax = 10h
0046C4E0 IMUL ECX,EAX                      <- ecx = 110h
0046C4E3 AND ECX,0000FFFF                  <- ecx = 110h
0046C4E9 PUSH ECX
0046C4EA PUSH 004BD33C                     <- %u
0046C4EF PUSH 0057E890                     <- buraya yaz


Modem sayisi da bir islemden gecerek 46C4E3’de 110h degerini aldi ve %u formatinda [57E890] adresine 272 olarak yazildi. [F10] ->

0046C576 MOV CL,[0057E090]                 <- “amois136542272FaxAmatic
0046C57C MOV ESI,[ESP+18]                  <- esi = E6h <- sabit
0046C580 CMP CL,BL
0046C582 JZ 0046C5B5
0046C584 MOV EAX,ECX
0046C586 AND EAX,000000FF
0046C58B LEA EDI,[EAX*8+EAX]
0046C58E ADD EAX,EDX
0046C590 LEA EAX,[EDI*2+EAX]
0046C593 ADD ESI,EAX
0046C595 CMP CL,60
0046C598 JAE 0046C59F
0046C59A ADD ESI,15
0046C59D JMP 0046C5A2
0046C59F SUB ESI,15
0046C5A2 MOV CL,[EDX+0057E091]
0046C5A8 INC EDX
0046C5A9 CMP CL,BL
0046C5AB JNZ 0046C584

Burada bir dongu var. [57E090] adresinde, Kullanici adi & Workstation sayisi & Modem sayisi & sabit “FaxAmatic” birlesmis durumdalar. Bu dongu sonucu esi = 8D43h degerini aliyor.


0046C5C1 PUSH ESI                          <- esi = 8D43h
0046C5C2 MOV ESI,[USER32!wsprintfA]
0046C5C8 PUSH 00507AE0                     <- %06lu
0046C5CD REPZ STOSD
0046C5CF PUSH 0057E890                     <- buraya
0046C5D4 CALL ESI                          <- yaz

[57E890] bolgesinde 036163 degeri olustu.

0046C600 MOVSX EDX,BYTE PTR [ECX+0057E890] <- 30 33 36 31 36 33
0046C607 ADD EDX,ECX                       <- sira no kadar ekle
0046C609 LEA EAX,[ECX*2+0057E090]
0046C610 PUSH EDX                          <- 30 34 38 34 ?? ??
0046C611 PUSH 00507AD8                     <- %02X
0046C616 PUSH EAX
0046C617 CALL ESI
0046C619 MOV EAX,[ESP+1C]
0046C61D ADD ESP,0C
0046C620 INC EAX
0046C621 PUSH 0057E890
0046C626 MOV [ESP+14],EAX
0046C62A CALL EBP
0046C62C MOV ECX,[ESP+10]
0046C630 CMP ECX,EAX
0046C632 JL 0046C600


Buradaki dongu sonucunda da gercek serial olustu. KeyGen yazarken su bolumleri olusturacagiz ->

1- Workstation sayisini isleme sok                 -> WS -> 3E8 -> 136542
2- Modem sayisini isleme sok                       -> MS -> 4 -> 272
3- Kullanici Adi & WS & MS & “FaxAmatic” birlestir -> BIRLESMIS
4- BIRLESMIS donguye girecek                       -> 036163
5- Cikan sonucun basamaklarina ekleme yapilacak    -> 30 34 38 34 ?? ??

ws = 1000                                 ; workstation sayisi
ws_ = CStr(ws * 2 ^ 6 + ws + &H11776)     ; ws_ = 136542
ms = 4                                    ; modem sayisi
ms_ = CStr((ms + &HD) * (ms + &HC))       ; ms_ = 272
isim = "amois"
sabit = "FaxAmatic"
birlesmis = isim + ws_ + ms_ + sabit      ; degerler birlestirildi
bir_uz = Len(birlesmis)

edx = 0: esi = &HE6                       ; baslangic degerleri

For i = 1 To bir_uz
digit = Asc(Mid(birlesmis, i, 1))         ; a m o i s 1 3 6 5 4 2 2 ...
eax = digit
edi = eax * 8 + eax
eax = eax + edx
eax = edi * 2 + eax
esi = esi + eax
If digit >= &H60 Then esi = esi - &H15 Else esi = esi + &H15
edx = edx + 1
Next i
esi = CStr(Format(esi, "000000"))         ; 6 basamakli formata cevir


For j = 1 To 6                            ; sira no kadar ekleme yapilacak
harf = Asc(Mid(esi, j, 1))               
harf = CStr(Hex(harf + j - 1))            ; 30 34 38 34 ...
serial = serial + harf                    ; 30 3034 303438 30343834 ...
Next j
 

Son Notlar

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