Excel Link 2000

amois

Program Url: w*w
Program Tipi: AutoCAD Plugin

Araçlar:

 

SoftIce

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

Başlangıç

 

"Karsilastigimiz herhangi bir problem, o problemi yaratmis oldugumuz zamandakiyle ayni olan dusunce duzeyinde cozulemez."

 

Yazı


Verilen bir Request Code (bendeki deger 12B9684A99CDA5FE4D8B3E9B06BDAA27) icin serial isteniyor. "1907" -> [bpx hmemcpy] -> [F12] ->

0167:100130BD CALL 1001798A
0167:100130C2 LEA ECX,[ESP+0C]             <- buradayiz
0167:100130C6 CALL 100179A2
...

Memory kontrol ve [F10] esliginde ilerleyelim ->

0167:1001311C PUSH EAX                     <- 1907
0167:1001311D MOV ECX,EDI
0167:1001311F CALL 10014DD0                <- ??
0167:10013124 MOV EDI,EAX
0167:10013126 CMP EDI,EBX
0167:10013128 JZ 100131A2
0167:1001312A PUSH 00000200
0167:1001312F LEA ECX,[ESP+14]
...
0167:10013188 MOV BYTE PTR [ESP+30],03
0167:1001318D CALL 100177B6                <- Hata

[bpx 1001311F] -> [F8] ->
 

...
0167:10014E4F PUSH ECX
0167:10014E50 PUSH EDX                     <- 12B9684A99CDA5FE4D8...
0167:10014E51 PUSH EDI                     <- Excellink
0167:10014E52 MOV ECX,ESI
0167:10014E54 CALL 100150A0                <- ?
0167:10014E59 TEST AL,AL
0167:10014E5B JNZ 10014E67                 <- kotu cocuk
0167:10014E5D MOV EAX,00000001             <- iyi cocuk
0167:10014E62 JMP 10015008
0167:10014E67 CMP [ESP+14],BL

[bpx 10014E54] -> [F8] ->

0167:100150B4 PUSH ECX                     <- 12B9684A99CDA5FE4D8...
0167:100150B5 PUSH EDX
0167:100150B6 PUSH EAX                     <- Excellink
0167:100150B7 CALL 10015C30                <- ?
0167:100150BC MOV EDX,[ESP+2C]             <- 1907
0167:100150C0 LEA ECX,[ESP+10]             <- :)
0167:100150C4 PUSH ECX
0167:100150C5 PUSH EDX
0167:100150C6 CALL [1001B5C0]              <- esitler mi ?
0167:100150CC TEST EAX,EAX
0167:100150CE SETZ AL
0167:100150D1 ADD ESP,24
0167:100150D4 RET 0010

Gecerli seriali bulduk. Peki Keygen ? -> [bpx 100150B7] -> [F8] ->

0167:10015CF5 LEA EAX,[ESP+14]
0167:10015CF9 LEA ECX,[ESP+24]             <- Excellink12B9684A99CDA...
0167:10015CFD PUSH EAX
0167:10015CFE PUSH ECX
0167:10015CFF LEA ECX,[ESP+14]
0167:10015D03 CALL 10017530                <- ?
0167:10015D08 MOV EDX,[ESP+14]             <- edx = E99E12BA
0167:10015D0C LEA EAX,[ESP+18]             <- sonuc buraya
0167:10015D10 PUSH EDX
0167:10015D11 PUSH 10023D34                <- %08X
0167:10015D16 PUSH EAX
0167:10015D17 CALL [1001B5BC]              <- cevir

10015D03'deki cagri oncesinde, "Excellink" ve Request Code birlesmis durumdalar. Daha sonra cagri sonucu cikan deger "%08X" formatina cevriliyor. [bpx 10015D03] -> [F8] ->

0167:10017587 MOV EDI,[EBP+08]             <- Excellink12B9684A99CDA...
0167:1001758A MOV BL,[EDI]
0167:1001758C TEST BL,BL
0167:1001758E JZ 100175B4
0167:10017590 MOV EDX,[ESI]                <- baslangicta FFFFFFFF
0167:10017592 AND EBX,000000FF
0167:10017598 MOV EAX,EDX
0167:1001759A AND EAX,000000FF
0167:1001759F XOR EAX,EBX
0167:100175A1 MOV EBX,[ECX+04]             <- sabit tablo
0167:100175A4 SHR EDX,08
0167:100175A7 MOV EAX,[EAX*4+EBX]          <- tablodan deger al
0167:100175AA XOR EAX,EDX
0167:100175AC INC EDI
0167:100175AD MOV [ESI],EAX                <- dongu sonucu buraya
0167:100175AF JMP 1001758A
0167:100175B1 MOV ESI,[EBP+0C]
0167:100175B4 MOV ECX,[ESI]                <- 1661ED45
0167:100175B6 MOV EAX,[EBP-14]
0167:100175B9 NOT ECX                      <- E99E12BA

100150C0'de [d ecx] ile gordugumuz deger E99E12BA'dan farkli bir deger. Cunku, digitlerin yerleri degistirildi. Ayrica, 100175A1'de ebx'e atanan deger, sabit bir tablonun offset degeri. Bu tablonun dump edilmesi gerekiyor. Tablo uzunlugunu 100175A7'deki koddan anliyoruz -> FFh * 4 = 3FCh

0167:10015D17 CALL [1001B5BC]              <- %08X formatina cevir
0167:10015D1D MOV ESI,[ESP+00000250]
0167:10015D24 ADD ESP,0C
0167:10015D27 XOR ECX,ECX
0167:10015D29 MOV EAX,10023D0C             <- tablo baslangici
0167:10015D2E MOV EDX,[EAX]                <- kacinci basamak
0167:10015D30 ADD EAX,04
0167:10015D33 INC ECX
0167:10015D34 CMP EAX,10023D2C
0167:10015D39 MOV DL,[EDX+ESP+18]          <-
0167:10015D3D MOV [ESI+ECX-01],DL          <- 9 E E B ? ? ? ?
0167:10015D41 JL 10015D2E

Burada bir dongu var. [d eax] ile gosterilen Memory bolgesinden deger okunuyor ve buna gore de basamak yerleri kaydiriliyor. [d eax] ->

016F:10023D0C 01 00 00 00 00 00 00 00-03 00 00 00 06 00 00 00 ................ 016F:10023D1C 0? 00 00 00 0? 00 00 00-0? 00 00 00 0? 00 00 00 ................

Yani, gecerli serialin ilk digiti 1.inci basamak olacak (saymaya 0'dan baslayin). 2.inci digitimiz de 0.inci basamak olacak. 3.uncu digit, 3.uncu basamak ve 4.uncu digit 6.inci basamak olacak. Kalanlari kendiniz bulacaksiniz.

.data

app_name    db "Excellink",0                             ; sabit
req_code    db "12B9684A99CDA...",0                      ; request code

sonuc       db 32h dup(?)
birlesmis   db 32h dup(?)
tur         db "%08X",0
basamak     db 01h,00h,03h,06h,0?h,0?h,0?h,0?h,0         ; basamak degistirme
cop         db 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0 ; programdan

tablo       db 000h,000h,000h,000h,096h,030h,007h,077h   ; 3FCh uzunlugunda tablo
            db ...
.code

start:

invoke szCatStr, addr birlesmis, addr app_name       ; Excellink
invoke szCatStr, addr birlesmis, addr req_code       ; Excellink12B9684A99...

lea edi, birlesmis
lea esi, cop

@1001758A:
mov bl, [edi]                                        ; E x c e l l i n k 1 2 B 9 ...
test bl, bl                                          ; sonuna geldik mi ?
jz @100175B4
mov edx, [esi]                                       ; ilk basta FFFFFFFF
and ebx, 0ffh
mov eax, edx
and eax, 0ffh
xor eax, ebx
lea ebx, tablo                                       ; sabit tablo adresi
shr edx, 08
mov eax, [eax*4+ebx]
xor eax, edx
inc edi
mov [esi], eax
jmp @1001758A

@100175B4:
mov ecx, [esi]                                       ; 1661ED45
not ecx                                              ; E99E12BA

invoke wsprintf, addr cop, addr tur, ecx             ; "%08X" formatinda yaz

lea eax, basamak                                     ; 01 00 03 06 ...
xor ecx, ecx                                         ; sayac = 0

@ayar:
movzx edx, byte ptr [eax+ecx]                        ; 1 0 3 6 ...
mov dl, byte ptr [cop+edx]                           ; 9 E E B ? ? ? ?
mov [sonuc+ecx], dl                                  ; sonuc serial buraya
inc ecx                                              ; sayaci artir
cmp ecx, 08                                          ; 8 karakter oldu mu ?
jne @ayar

@cikis:
invoke ExitProcess, 0

end start
 

Son Notlar

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