AKINSOFT Ticari Modul s2.04d

amois

Program Url: w*w.akinsoft.com
Program Tipi: Muhasebe Seti

Araçlar:

 

SoftICE

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

Başlangıç

Komple bir Muhasebe seti.

 

Yazı


Delphi ile yazilmis. Cari Modulunu ucretsiz olarak Lisansli yapabiliyoruz. Sadece programin verdigi numarayi firmaya bildirince, Cari modul icin gerekli numarayi size gonderiyorlar. Peki ya diger moduller ne olacak ?
WTM2-C-XXXX-XXXX-XXXX --> Eklenen modullere gore C degisken, WTM2 ve XXXX-XXXX-XXXX sabit degerler.

Not: XXXX-XXXX-XXXX а Makineden makineye degisiyor.


19071907” sallama seriali girelim. [bpx hmemcpy] --> [F12] --> Delphi ile yazilmis programlarda, “hmemcpy” breakpoint’inden sonra cok miktarda RET ile geriye donmek gerekiyor.
[d eax], [d edx] ile Memory de birseyler yakalayana kadar.

017F:00586828 MOV EAX,[EBP-04] Я [d eax]         <-- “19071907
017F:0058682B MOV EDX,00586B30 Я [d edx]         <-- “DEMO
017F:00586830 CALL 00404260                      <-- ecx = 7091
017F:00586835 JZ 005869F1
017F:0058683B MOV EDX,[005C752C]
017F:00586841 MOV EDX,[EDX]                      <-- [d edx] --> “WTM2
017F:00586843 LEA EAX,[EBP-0C]
017F:00586846 MOV ECX,[005C716C]                 <-- [d ecx] --> “-C
017F:0058684C CALL 0040419C
017F:00586851 MOV EAX,[EBP-0C]
017F:00586854 LEA ECX,[EBP-08]
017F:00586857 MOV EDX,[EBX+0000036C]
017F:0058685D MOV EDX,[EDX+34]
017F:00586860 MOV EDX,[EDX+2C]
017F:00586863 CALL 005207E4                      <-- Gecerli Serial
017F:00586868 MOV EAX,[EBP-08]                   <-- [d eax] :)
017F:0058686B PUSH EAX
017F:0058686C LEA EDX,[EBP-04]
017F:0058686F MOV EAX,[EBX+000002D8]
017F:00586875 CALL 004350A0
017F:0058687A MOV EDX,[EBP-04]                   <-- [d edx] --> “19071907
017F:0058687D POP EAX                            <-- [d eax] :)
017F:0058687E CALL 00404260                      <-- esit mi ?
017F:00586883 JNZ 005869A9                       <-- kotu cocuk

Aslinda soyleyecek fazla birsey kalmadi. Hata mesaji yerine gecerli seriali MessageBoxA da gostermeye calisalim.

017F:0058686B PUSHAD                             <-- Register leri sakla
017F:0058686C PUSH 00                            <-- MessageBoxA basliyor
017F:0058686E PUSH EAX
017F:0058686F PUSH EAX
017F:00586870 PUSH 00
017F:00586872 CALL USER32!MessageBoxA
017F:00586877 POPAD                              <-- Register lar eski durumuna
017F:00586878 JMP 005869A9                       <-- Hata bolumune git

58686B de iken [d eax] ile gecerli seriali gorebiliyorduk. Yani, eax su anda gecerli offset degerine sahip ve direkt PUSH edilebilir.

KeyGen algoritmasina da bir goz atalim. [bpx 586863] --> [F8] --> Memory kontrol esliginde ilerleyelim.

017F:00520901 MOV EAX,ECX                        <-- eax = Bize verilen Serial uzunlugu
017F:00520903 SUB EAX,0B                          
017F:00520906 JL 0052091D
017F:00520908 INC EAX                            
017F:00520909 MOV EDX,0000000B                   <-- sayac = 11
017F:0052090E MOV ECX,[EBP-24]                   <-- [d ecx] --> “WTM2-C
017F:00520911 MOVZX ECX,BYTE PTR [EDX+ECX-01]    <-- ecx = W T M 2 C
017F:00520916 ADD [EBP-2C],ECX                   <-- Ascii degerlerini buraya ekle
017F:00520919 INC EDX                            
017F:0052091A DEC EAX
017F:0052091B JNZ 0052090E
017F:0052091D LEA ECX,[EBP-30]
017F:00520920 IMUL EAX,EBX,000008FF              <-- ilk 10 karakterlik bolum
017F:00520926 ADD EAX,63 
017F:00520929 MOV EDX,00000006
017F:0052092E CALL 00409408
017F:00520933 PUSH DWORD PTR [EBP-30]
017F:00520936 PUSH 005209EC
017F:0052093B LEA ECX,[EBP-34]
017F:0052093E IMUL EAX,[EBP-2C],000004BD         <-- kalan bolum
017F:00520945 ADD EAX,63

Program, firmaya bildirmemiz gereken numaranin ilk 10 hanesini 8FF, kalanlari 4BD ile carpip, sonuca 63h ekliyor. Yani, 10 hanenin ASCII toplamlarinin 8FF ile carpimina 63h ekleyerek serialin birinci kismini, kalanlarin ASCII toplamlarinin 4BD ile carpimina 63h ekleyerek serialin ikinci kismini olusturuyor. Gecerli serial olmasi icin bu degerlerin HEX e cevrilmeleri gerekiyor. Butun modullerin Lisansli olmasi durumunda, bildirilecek serialin uzunlugu 28 karakter oluyor.

KeyGen algoritmasinin VB deki karsiligini su sekilde yazdim.

sifre = "WTM2-C-XXXX-XXXX-XXXX"
bolum_1 = Mid(sifre, 1, 10)
bolum_2 = Mid(sifre, 11)
Call ascii_topla(bolum_1)                        <-- ascii_topla rutinini de siz yazin
serial_1 = Hex(bolum_1 * &H8FF + &H63)
Call ascii_topla(bolum_2)
serial_2 = Hex(bolum_2 * &H4BD + &H63)
sonuc = serial_1 + "-" + serial_2

Not: serial uzunluklari 6 karakterden az cikarsa baslarina 0 eklemek gerekiyor.


Son Notlar

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