Author Topic: [TIPS]: Ambil serial number hard disk untuk copy protection software Anda.  (Read 254 times)

0 Members and 1 Guest are viewing this topic.

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.449
    • Foxy Land
Hello guys.....

Siapa yang senang programnya di-bajak? Kalau Anda gak senang, gimana kalau Anda bikin copy protection supaya software yang sudah capek-capek Anda buat gak dijalankan oleh orang yang tidak mempunyai ijin (alias dapat dari copy --- alias gak bayar ke Anda). Ada banyak teknik sebenarnya; yang akan saya bagikan sekarang hanya inti nya saja. Disclaimer: ini bukan fungsi yang bisa Anda langsung drag-and-drop dan berjalan tanpa harus Anda mikir. Yang saya bagikan cuma fungsi aja. Pemanfaatannya kembali ke kreatifitas Anda. Tentu saja kalau Anda mau berdiskusi di thread ini, saya yakin banyak yang bisa ikutan urun-rembug dan (mungkin) bersedia membagikan kreatifitas masing-masing yang pasti canggih-canggih  :icon_biggrin: .
Anyway.... ini fungsinya:

Code: [Select]
MessageBox("Serial Number for HD0 is: " + Chr(13) ;
+ "   " + GetSN_HD0())
Return 0

*--------------------------------------------------------------
* Function    : GetSN_HD0
* Entry with  : none
* Return with : hard disk 0 serial number
*--------------------------------------------------------------
Function GetSN_HD0
LOCAL objWMI,colClass,objClass,strComputer, lcSerial
lcSerial = ""
strComputer = "."
objWMI = GetObject("winmgmts:\\" +strComputer + "\root\cimv2")
colClass = objWMI.ExecQuery("Select * from Win32_PhysicalMedia",,48)

For Each objClass in colClass
If !IsNull(objclass.serialnumber)
lcTag = Alltrim(objclass.Tag)
lcDrive = Right(lcTag, 1)
If lcDrive = '0'
  lcSerial = Alltrim(objclass.serialnumber)
  EndIf
  EndIf
Next
Return lcSerial

Salah satu kelebihan fungsi ini adalah bisa dijalankan tanpa harus memiliki otorisasi Administrator (tidak perlu run as Administrator).

Menarik? Monggooooooooooooooooo......

:D

foxy

« Last Edit: January 11, 2017, 05:31:12 PM by foxy »
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline doditasik

  • Full Member
  • *
  • Posts: 68
   :thumbsup: :thumbsup:

   Boleh di tambahin..,
  1. Create file text, extention DLL (Biar di sangka file DLL) (contoh WINSTT.DLL apa saja), simpan di Windows\System...
      ntar waktu Load cek file tersebut..
  2. Create file modul2 penting, simpan di Flash Donggle, setiap nambah client cass biaya donggle (modul) + PPN

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.449
    • Foxy Land

 :thumbsup: :thumbsup: :thumbsup:

   :thumbsup: :thumbsup:

   Boleh di tambahin..,
  1. Create file text, extention DLL (Biar di sangka file DLL) (contoh WINSTT.DLL apa saja), simpan di Windows\System...
      ntar waktu Load cek file tersebut..

... jangan lupa isi nya di-encrypt. Jadi kalau pun ada yang bisa nebak dan membuka file tersebut, tetap gak bisa baca --- jadi gak bisa menghubungkan dengan serial number hard disk.

This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline agooze

  • Junior Member
  • *
  • Posts: 131

mas foxy, beda dengan function ini apa ya?

MessageBox("Serial Number for HD0 is: " + Chr(13) ;
         + "   " + NOMORSERI())
Return 0


FUNCTION NOMORSERI
   LOCAL LCCOMPUTERNAME, LOWMI, LOWMIWIN32OBJECTS, LOWMIWIN32OBJECT,HDDID
   LCCOMPUTERNAME = GETWORDNUM(SYS(0),1)
   LOWMI = GETOBJECT("WinMgmts://" + LCCOMPUTERNAME)
   LOWMIWIN32OBJECTS = LOWMI.INSTANCESOF('Win32_LogicalDisk')
   FOR EACH LOWMIWIN32OBJECT IN LOWMIWIN32OBJECTS
      WITH LOWMIWIN32OBJECT
         IF .NAME="C:"    && untuk drive C
            ZZZ=.VOLUMESERIALNUMBER
         ENDIF
      ENDWITH
   ENDFOR
   RETURN (ZZZ)

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.449
    • Foxy Land

mas foxy, beda dengan function ini apa ya?

MessageBox("Serial Number for HD0 is: " + Chr(13) ;
         + "   " + NOMORSERI())
Return 0


FUNCTION NOMORSERI
   LOCAL LCCOMPUTERNAME, LOWMI, LOWMIWIN32OBJECTS, LOWMIWIN32OBJECT,HDDID
   LCCOMPUTERNAME = GETWORDNUM(SYS(0),1)
   LOWMI = GETOBJECT("WinMgmts://" + LCCOMPUTERNAME)
   LOWMIWIN32OBJECTS = LOWMI.INSTANCESOF('Win32_LogicalDisk')
   FOR EACH LOWMIWIN32OBJECT IN LOWMIWIN32OBJECTS
      WITH LOWMIWIN32OBJECT
         IF .NAME="C:"    && untuk drive C
            ZZZ=.VOLUMESERIALNUMBER
         ENDIF
      ENDWITH
   ENDFOR
   RETURN (ZZZ)

Fungsi di atas mengembalikan Volume Serial Number, bukan Disk Serial Number. Di Windows, volume serial number bisa didapatkan dengan cara mengetikkan VOL di command prompt atau juga terlihat di baris kedua saat mengetikkan perintah DIR. Volume serial number bisa dengan mudah diubah dengan banyak utility yang bertebaran di internet (salah satunya dari sysinternal: https://technet.microsoft.com/en-us/sysinternals/bb897436.aspx ). Volume serial number juga akan sama kalau Anda menggunakan utility disk cloning. Jadi kalau Anda menggunakan volume serial number untuk copy protection, ya masih bisa diakalin. Kalau disk serial number, setau saya tidak mungkin diubah. Setiap hard disk mempunyai disk serial unik yang gak mungkin sama. Jadi kalau dimanfaatkan untuk copy protection akan lebih reliable.

hth,
foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline agooze

  • Junior Member
  • *
  • Posts: 131

trims info nya mas foxy.

Tapi apakah sudah di coba untuk HDD yg ukuran sama & type yang sama dan merk yang sama PASTI MEMPUNYAI nomor seri yang beda?
Soalnya ada juga function membaca PROCESOR ID tapi ternyata untuk merk yang sama PROCECOR ID nya sama semua.

Contoh function nya sbb:

FUNCTION GetProcID
   LOCAL lcComputerName, loWMI, lowmiWin32Objects, lowmiWin32Object,ProcessorId
   lcComputerName = GETWORDNUM(SYS(0),1)
   loWMI = GETOBJECT("WinMgmts://" + lcComputerName)
   lowmiWin32Objects = loWMI.InstancesOf("Win32_Processor")
   FOR EACH lowmiWin32Object IN lowmiWin32Objects
      WITH lowmiWin32Object
         ProcessorId=TRANSFORM(.ProcessorId)
      ENDWITH
   ENDFOR
    RETURN ProcessorId

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.449
    • Foxy Land

trims info nya mas foxy.

Tapi apakah sudah di coba untuk HDD yg ukuran sama & type yang sama dan merk yang sama PASTI MEMPUNYAI nomor seri yang beda?


Processor id memang tidak dijamin unik. Bahkan bisa saja processor tidak mempunya processor id (atau ditutup di BIOS-nya. Beberapa BIOS seperti BIOS di server Dell bisa menutup informasi ini).

Serial number hard disk dijamin unik. Paling tidak itu pengalaman saya menggunakan serial number hard disk untuk copy protection sejak tahun 2004.

hth,
foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline agooze

  • Junior Member
  • *
  • Posts: 131

sekali lagi trims atas info nya mas foxy.