delphi4arab منتديات دلفي للعرب

نسخة كاملة : حماية البرنامج
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
لقد اكملت برنامجي بعد تعب استمر لعدة شهور والان عندي مشكلة وهي حماية البرنامج ,كيف استطيع ان اجعل البرنامج يعمل على حاسوب واحد فقط اي اذا تم نسخه الى حاسوب اخر فلن يعمل البرنامج ,طبعا انا اعلم ان حماية البرنامج بشكل 100% غير ممكن فكما يقال (كل برنامج قابل للتنفيذ قابل للكسر)كل ما اريده هو ان يكون اصعب للكسر
يمكمك استعمال رقم السيريال للهارد ديسك وهذا الاجراء مع الخبراء يمكن كسره فلا برنامج يمكن حمايته

وعليكم السلام ورحمة الله

يمكن التحقق من رقم الMAC address لكرت الشبكة
يمكن استخدام حمايات تجارية...
تصفح مواضيع قسم الامن و تحليل التطبيقات البرمجية
http://delphi4arab.net/forum/forumdisplay.php?fid=31
(11-12-2019, 12:08 PM)bouh25 كتب : [ -> ]يمكمك استعمال رقم السيريال للهارد ديسك وهذا الاجراء مع الخبراء يمكن كسره فلا برنامج يمكن حمايته
لا مانع اذا كان الخبراء يستطيعون كسره المهم صغار الكراكرز لا يستطيعون كسره 
طيب ممكن ايضاح كيف يمكن ذلك ؟؟؟
اليك هذه المكتبة لمعرفة السيريال للرقم التسلسلي للديسك hdd

[size=small][size=small]اليك هذه المكتبة لمعرفة السيريال للرقم التسلسلي للديسك hdd[/size]
[/size]
عن خبرة في حماية مشاريع VBA اكسس .. طبعا لا أنصحك بأستخدام سريال بارتيشن الهارد لانه يتغير بعد فرمات 
بعد بحث استغرق أكثر من نصف سنه أنصحك بأستخدام UUID أبحث عن طريقة أستخراجة من الجهاز 

فهو أفضل من الهارد والمعالج والماذربورد .. 
وأفضل من رقم الماك ادرس الذي يسبب مشاكل أذا كان العميل مثبت لدية النظام الوهمي وكذلك يتطلب اتصال مع الشبكة
(12-12-2019, 10:10 AM)qathi كتب : [ -> ]عن خبرة في حماية مشاريع VBA اكسس .. طبعا لا أنصحك بأستخدام سريال بارتيشن الهارد لانه يتغير بعد فرمات 
بعد بحث استغرق أكثر من نصف سنه أنصحك بأستخدام UUID أبحث عن طريقة أستخراجة من الجهاز 

فهو أفضل من الهارد والمعالج والماذربورد .. 
وأفضل من رقم الماك ادرس الذي يسبب مشاكل أذا كان العميل مثبت لدية النظام الوهمي وكذلك يتطلب اتصال مع الشبكة
شكرا على المساعدة ولكن ماهو UUID فانا لم اسمع به من قبل ياليت لو يكون هناك شرح او كود او ماشابه
شكرا على المساعدة ولكن ماهو UUID فانا لم اسمع به من قبل ياليت لو يكون هناك شرح او كود او ماشابه
[/quote]

(12-12-2019, 02:25 PM)qathi كتب : [ -> ]شكرا على المساعدة ولكن ماهو UUID فانا لم اسمع به من قبل ياليت لو يكون هناك شرح او كود او ماشابه
[/quote]

أخي هذا رقم طويل مكون من ارقام وأحرف 

يمكنك البحث في جوجل عن هذا كود من مصادر دلفي

حاليا لدي كود VBA لاستخراج الرقم وهو:

كود :
'--------------- Universally Unique Identification Number (UUID) --------------------- Public Function GetUUID() On Error Resume Next Dim strComputer As String Dim objWMIService, colItems, objItem     strComputer = "."     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")     Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48)         For Each objItem In colItems                 GetUUID = objItem.UUID     Next End Function


أما أستخراجة عبر دلفي فلا اعرف حاليا
<p><a href="https://github.com/graemeg/onguard">TurboPower OnGuard</a><br></p>
(12-12-2019, 02:25 PM)qathi كتب : [ -> ]شكرا على المساعدة ولكن ماهو UUID فانا لم اسمع به من قبل ياليت لو يكون هناك شرح او كود او ماشابه

(12-12-2019, 02:25 PM)qathi كتب : [ -> ]شكرا على المساعدة ولكن ماهو UUID فانا لم اسمع به من قبل ياليت لو يكون هناك شرح او كود او ماشابه
[/quote]



أخي هذا رقم طويل مكون من ارقام وأحرف 



يمكنك البحث في جوجل عن هذا كود من مصادر دلفي



حاليا لدي كود VBA لاستخراج الرقم وهو:



كود :
'--------------- Universally Unique Identification Number (UUID) --------------------- Public Function GetUUID() On Error Resume Next Dim strComputer As String Dim objWMIService, colItems, objItem     strComputer = "."     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")     Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48)         For Each objItem In colItems                 GetUUID = objItem.UUID     Next End Function




أما أستخراجة عبر دلفي فلا اعرف حاليا

[/quote]
PHP كود :
program GetWMI_Info;

{
$APPTYPE CONSOLE}

uses
  SysUtils
,
  ActiveX,
  ComObj,
  Variants;


procedure  GetCIM_ConfigurationInfo;
const
  WbemUser            ='';
  WbemPassword        ='';
  WbemComputer        ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService  : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject  : OLEVariant;
  oEnum        : IEnumvariant;
  iValue        : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService  := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('Select * from Win32_ComputerSystemProduct','WQL',wbemFlagForwardOnly);
  oEnum        := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln
(Format('UUID        %s',[String(FWbemObject.UUID)]));// String
  // Writeln(Format('Description    %s',[String(FWbemObject.Description)]));// String

    Writeln('');
    FWbemObject:=Unassigned;
  end;
end;


begin
 
try
    CoInitialize(nil);
    try
      GetCIM_ConfigurationInfo;
    finally
      CoUninitialize;
    end;
 
except
    on E
:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 
end;
 
Writeln('Press Enter to exit');
 
Readln;
end.