صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 67 از 67

نام تاپیک: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

  1. #41
    VIP آواتار دنیای دلفی
    تاریخ عضویت
    فروردین 1403
    محل زندگی
    یک جایی توی جنوب ایران
    پست
    1,298

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    سلام مجدد

    من نحوه كاركدن با يك سري از فولدرهاي رزرو شده را متوجه شدم مي زام شما هم حالشو ببريد ولي اگر كسي مي تونست سوال من رو جواب بده دريغ نكنه :

    سعی کنید یک پوشه با یکی از اسامی زير con یا nul یا Aux یا Lpt1 بسازید خواهید دید که ویندوز به شما اجازه ی چنین کاری را نمی دهد چرا که ویندوز از این اسامی به منظور دیگری استفاده می کند مثلا Lpt1 به عنوان پورت پرینتر ، con به console اشاره می کند این اسامی بیشتر هستند تعداد دیگری را در لیست زیر ببینید
    CON, PRN, AUX,NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8,  LPT9


    یکمی تلاش کنید تا یکی پوشه با یکی از اسمهای بالا بسازید اگه نشد به خواندن ادامه دهید
    حالا می خوام روشی رو براتون بگم که بتوانید یک فایل یا فولدر یا پوشه را به این اسامی دربیاورید
    از منوی استارت گزینه run را انتخاب و در اون بنویسید cmd و کلید اینتر را بزنید
    فرض می کنیم که می خواهیم پوشه ای با نام con در درایو سی بسازیم خب در پنجره cmd می نویسیم
    md\\.\C:\con
    مشخص است که برای ساختن پوشه ای به نام con مثلا در درایو دی و در داخل فولدر music باید دستور زیر را در cmd بنویسید
    md\\.\D:\music\con
    خب حالا به مسیر مورد نظر بروید و نتیجه کار را ببینید. جالبه نه ، ویندوز یک سیستم عامل پر از آرایه متناقض نما است
    حالا سعی کنید این پوشه را پاک کنید یا تغییر نام دهید یا آن را حذف کنید
    چطور شد؟ نمی شود؟ خب به خواندن ادامه دهید تا ببینید چطور می شود؟
    حتی نمی توانید از این پوشه یک کپی بگیرید این همان چیزی است که ما برای حفاظت از اطلاعات شخصی خود می خواهیم
    در ادامه دستورات لازم برای انجام همه ی کارهای بالا را یاد خواهید گرفت






    برای حذف پوشه ای با نام con در درایو سی باید در cmd بنویسید
    rd\\.\C:\con
    برای اینکه بتوانید یک پوشه را حذف کنید باید درون آن فایل یا پوشه ای دیگر نباشد یعنی کاملا خالی باشد
    برای تغیير نام پوشه ای با نام con در درایو سی باید در cmd بنویسید
    ren\\.\C:\con NewName
    اگر پوشه را تغییر نام دهید دیگر از آن در برابر حذف ، کپی شدن و غیره محافظت نمی شود
    NewName نام جدید پوشه con است
    می توان از این قابلیت برای قفل کردن فایل ها استفاده کرد به این صورت که شما با استفاده از دستور کپی نام فایل خود را به یکی از اسامی بالا تغییر دهید مثلا یک فایل عکس به اسم 1.jpg در درایو دی در داخل پوشه Pictures دارید یعنی D:\Pictures\1.jpg و می خواهید ان را با نام جادویی NUL قفل گذاری کنید
    از منوی استارت Run را انتخاب کرده و در ان cmd را تایپ کرده و کلید Enter را بزنید
    در پنجره cmd این دستور را تایپ کنید
    copy D:\Pictures\1.jpg \\.\D:\Pictures\NUL.jpg
    حالا فایل شما یک نسخه از عکس دارید که قفل شده است می توانید فایل اولی را پاک کنید
    برای برداشتن قفل عکس بالا در cmd بنویسید
    ren\\.\D:\Pictures\NUL.jpg NewName.jpg
    شاید بخواهید تعداد زیادی فایل را قفل کنید در این مورد قفل کردن تک تک فایلها یک کار خسته کننده و بیهوده است به جای آن تمام فایلهای خود را با در فایل Zip ریخته و سپس آن را قفل گذاری کنید

  2. #42

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    با سلام
    در صفحه شماره 3 و در پست شماره 30 کدی قرار داده شده است که مربوط به یافتن دیباگرها بر روی سیستم است.
    حالا خط زیر چه مفهومی داره؟

    if Tm2>299999999 then Found:=True;
    این عدد نمایانگر چه چیزیه؟
    من روی سیستم خودم دیباگری نصب ندارم ولی در این خط مقدار متغیر Found برابر True می شود و برنامه ادامه نمی یابد.
    حالا علت این امر چیه؟

    علاوه براین در چند خط دیگه هم مقدار Found برابر True میشه. در صورتی که من اصلا دیباگری روی سیستم ندارم.


    در پست شماره 28 هم یک Unit قرار داده شده برای مخفی کردن دستور Apllication.terminate
    ولی این کد اصلا کار خاصی انجام نمیده و موقعی که به خط زیر میرسه از تابع خارج میشه:
    کد:
    jmp @def
    و اصلا تابع KillMe فراخوانی نمیشه.
    اگه توضیحات لازم داده بشه ممنون میشم.


    دوستان چند خط کد داخل تاپیک ها مینویسند و بعد هم خداحافظ. اگه لطف کنند و یه توضیح مختصر هم در مورد نحوه استفاده از اونها بدهند ممنون میشم. البته همه کاربران ممنون میشند.
    در صفحه 4 و پست شماره 35 ، دوست عزیز Joker ، شما چند کد در مورد شناسایی دیباگرها نوشتید، اما متاسفانه روش استفادش رو توضیح ندادید. یا حداقل من نتونستم روش استفاده از این کدها رو بفهمم.
    اگه توضیح بدید که چطوری باید از این چند خط کد استفاده کنم ممنون میشم.
    یا حق
    آخرین ویرایش به وسیله دنیای دلفی : چهارشنبه 06 آبان 1388 در 12:16 عصر دلیل: تركيب پستها

  3. #43
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    نقل قول نوشته شده توسط hadisalahi2 مشاهده تاپیک
    در صفحه 4 و پست شماره 35 ، دوست عزیز Joker ، شما چند کد در مورد شناسایی دیباگرها نوشتید، اما متاسفانه روش استفادش رو توضیح ندادید. یا حداقل من نتونستم روش استفاده از این کدها رو بفهمم.
    اگه توضیح بدید که چطوری باید از این چند خط کد استفاده کنم ممنون میشم.
    یا حق
    این سورسها به صورت یک پروسیجر آماده ( هلو برو تو گلو) تعریف شدند ، کافیه توی سورس دلفی استفاده کنید دیگه... چطوریش هم مثل تمام فانکشن و پروسیجر های دلفی .
    یعنی شما بعد از implementation کل این سورس ها را کپی پیست کنید
    بعد هرجای برنامه که خواستید ( مثلا در رویداد Create یا show فرم اونها را فقط صدا بزنید )


    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation
    /////////////////////////////////////////////
    Procedure DBGDetect();
    var
    x:byte;
    begin
    asm
    call GetTickCount

    ...
    .
    ...
    end;

    {$R *.dfm}

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    DBGDetect();
    end;
    ////////////////////////////////////////////

  4. #44

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    با تشکر از توضیحاتتون
    شما فقط در مورد DBGDetect توضیح دادید.
    اون کدهای اسمبلی که در اول گذاشتید چی هستند.اصلا کجا باید استفاده بشوند؟
    تابع دوم "
    enumwindowsproc" چی هست و چطوری باید از اون استفاده کرد؟


  5. #45
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    این که چی هستند را ، سورس گذاشتم دیگه :) اما اینکه کجا استفاده میشه کرد :هرجائی دلتون خواست میتونید استفاده کنید .

    پیوست برای enumwindowsproc

  6. #46

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    در صفحه 2 و پست شماره 11 .جناب Afshin_Zavar شما یک فایل با نام
    Ring 3 debugger detection via INVALID_deroko.rar‏
    قرار دادید . میشه لطفا بفرمایید کارش چیه؟
    من که اجرا کردم فقط یک پیغام "You Are Ok " نمایش می دهد ولی نحوه کار رو نفهمیدم.
    در ضمن اون فایل اسمبلی کنارش برای چی استفاده میشه؟

  7. #47

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    با سلام
    جناب افشین زوار
    در صفحه 4 پست شماره 33 یک پروتکتور قرار دادید به زبان دلفی ولی متاسفانه موقعی که من میخوام یک فایل Exe رو که با دلفی نوشتن Pack کنم پیغام Access Validation میده. ممنون میشم رسیدگی کنید.

  8. #48
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    فکر میکنم شما قبل از اینها باید کمی سطح معلومات در زمینه امنیت نرم افزارها / آشنائی با اصطلاحالا و روشهای کرک / برنامه نویسی و اصول برنامه نویسی /و... را بالاتر ببرید ،(خوندن مقالات آموزش کرک و مواردی توی این ضمینه و...) در حد متوسط که شد مطمئنا از این جفنگیاتی که ما اینجا داریم مینویسم سردرمیارید ، و الا اینکه بخوایم تک به تک خطوط و طرز کارها را توضیح بدیم یه کم حوصله میخواد و وقت که هیچکدوم از ما نداره :)

    پیوست:
    لطفا پستهایی نامربوط به این عنوان تاپیک سرموقع حذف بشن :)

  9. #49

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    جناب Joker من اون تابع enumwindowsproc رو در یک یونیت کپی کردم ولی موقع کامپایل از خطوطی که دستور BLOK_KEY قرار دارد خطا میگیره.
    حالا این BLOK_KEY چی هست و مشکل رو چطوری حلش کنم؟

  10. #50

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    دوست عزیز جناب Joker فکر کنم اونقدر معلومات دارم که نحوه کار با توابع رو یاد داشته باشم. اما اینکه یک تکه کد رو از یک جا بیاریم و اینجا کپی کنیم ، فکر نمیکنم ربطی به سطح معلومات داشته باشه.
    من نمیدونم دوستانی که این پستها رو میخونند اصلا با این کد ها کار کردند یا نه که فقط روی دکمه تشکر کلیک میکنند؟
    پیوست:
    لطفا پستهایی نامربوط به این عنوان تاپیک سرموقع حذف بشن :)
    به نظر شما از چند تا تاپیکی که من زدم کدومش نامربوط بوده؟
    من قبل از اینکه هر کدوم از این تاپیک ها رو بزنم کلی روی کدها کار کردم و بعد پست رو ایجاد کردم.
    به نظر من اگه دوستان قبل از اینکه چند تکه کد رو توی این جا Copy/Paste کنند ، بهتره خودشون یک کم با کدها کار کنند.
    هر کدوم از پستهای من نامربوطه بگید تا در مورد توضیح بدم که چرا اون رو ایجاد کردم.
    یا علی

  11. #51
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    حالا این BLOK_KEY چی هست و مشکل رو چطوری حلش کنم؟
    BLOCK_KEY یک پروسیجر دیگه هست که توی این سورس میتونید اونو با دوتا // * نادیده بگیرید.
    سورس از وسط دل و روده پروتکتورم(جوان ناکام) اوردم اینجا کپی پیست کردم برای همین یه چیزائی از یه جاهایی دیگه ممکنه وسطاش پیدا بشه...
    به نظر شما از چند تا تاپیکی که من زدم کدومش نامربوط بوده؟
    همه اش.
    این تاپیک در مورد روشهاست نه پاسخ به سوالات ابتدائی در زمینه آموزش برنامه نویسی !

    * :
    من قبل از اینکه هر کدوم از این تاپیک ها رو بزنم کلی روی کدها کار کردم و بعد پست رو ایجاد کردم.
    مطمئنا اگه خیلی که نه ، ولی یه ذره هم کار کرده بودید ساده ترین روش حذف یعنی // را حداقل یکبار در مورد این دوتا پروسیجری که کنار سورس نبودند را به کار میبردید.

    بدت نیاد ولی شما هنوز نمیدونید یک پروسیجر چطوری توی دلفی نوشته میشه .

    پیوست :
    فکر میکنم شما قبل از اینها باید کمی سطح معلومات در زمینه امنیت نرم افزارها / آشنائی با اصطلاحالا و روشهای کرک / برنامه نویسی و اصول برنامه نویسی /و... را بالاتر ببرید
    این جمله متلک نبود ، پیشنهاد بود.

  12. #52
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    من سه تا BLOCK key داشتم که هرکدوم یه روشی بود
    و تازه توی هرکدوم یکسری پروسیجر دیگه صدا زده میشد :( حالا باید همه شا اینجا بنویسم:))


    procedure BLOK_KEY;
    var
    s:string;
    Hreg : HWND;
    var xBlockInput : function (Block: BOOL): BOOL; stdcall;

    begin
    if FunctionDetect ('USER32.DLL', 'BlockInput', @xBlockInput) then
    begin
    xBlockInput (True); // Disable Keyboard & mouse
    SimulateKey(VK_SPACE,0);
    SimulateKey(VK_SPACE,1);
    SimulateKey(VK_SPACE,0);
    SimulateKey(VK_SPACE,1);
    xBlockInput (False); // Enable Keyboard & mouse

    end;

    end;
    //--------------------------------------


    procedure BLOK_KEY2;
    VAR
    I,J:iNTEGER;
    begin

    SimulateKey( VK_SPACE ,0 );
    SimulateKey( VK_SPACE ,1 );
    SimulateKey( 74 ,0 );
    SimulateKey( 77 ,0 );
    SimulateKey( 80 ,0 );
    SimulateKey( VK_SPACE ,0 );
    SimulateKey( 52 ,0 );
    SimulateKey( 49 ,0 );
    SimulateKey( 48 ,0 );
    SimulateKey( 48 ,0 );
    SimulateKey( 48 ,0 );
    SimulateKey( 48 ,0 );

    SimulateKey(VK_F8,1);
    SimulateKey(VK_F9,0);
    SimulateKey(VK_F9,1);
    end;

    procedure BLOK_KEY3;
    VAR
    PO : TPoint;
    begin


    GetCursorPos(PO);
    SetCursorPos(Screen.Width-2 ,2);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    mouse_event(MOUSEEVENTF_MOVE,1,0,0,0);
    SetCursorPos(PO.X,po.Y);

    end;

    //--------------------------------------


    تابع شبیه ساز فشرده شدن کلیدهای کیبورد

    procedure SimulateKey(key:byte;Extra:Dword);
    begin
    keybd_event(key,extra,0,0);
    keybd_event(key,extra,KEYEVENTF_KEYUP,0);
    end;


    و یکی دیگه که توی سورس بالا استفاده شده FunctionDetect برای قسمت بلوک صفحه کلید موقع تریس

    function FunctionDetect (LibName, FuncName: String; var LibPointer: Pointer): boolean;
    var LibHandle: tHandle;
    begin
    Result := false;
    LibPointer := NIL;
    if LoadLibrary(PChar(LibName)) = 0 then exit;
    LibHandle := GetModuleHandle(PChar(LibName));
    if LibHandle <> 0 then
    begin
    LibPointer := GetProcAddress(LibHandle, PChar(FuncName));
    if LibPointer <> NIL then Result := true;
    end;
    end;



  13. #53

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    با سلام و تشکر از پاسخ سوالات.
    همه اش.
    این تاپیک در مورد روشهاست نه پاسخ به سوالات ابتدائی در زمینه آموزش برنامه نویسی !
    فکر کنم روشهایی که دارای مشکله ، بهتره اصلا قرار داده نشه، زیرا کمکی که به برنامه نویس نمیکنه هیچ ، باعث اتلاف وقت و سردگمی برنامه نویسی میشه.
    سوالات من در مورد رفع مشکلات بود و فکر کنم لازم که توی این تاپیک حتما مطرح بشه تا دوستان خودشون کمی به فکر تصحیح خطاهای کدهاشون بیفتن ، بعد اینجا قرارش بدن.
    BLOCK_KEY یک پروسیجر دیگه هست که توی این سورس میتونید اونو با دوتا // * نادیده بگیرید.
    سورس از وسط دل و روده پروتکتورم(جوان ناکام) اوردم اینجا کپی پیست کردم برای همین یه چیزائی از یه جاهایی دیگه ممکنه وسطاش پیدا بشه...
    مطمئنا اگه خیلی که نه ، ولی یه ذره هم کار کرده بودید ساده ترین روش حذف یعنی // را حداقل یکبار در مورد این دوتا پروسیجری که کنار سورس نبودند را به کار میبردید.
    فکر کنم دوستانی که این پست ها رو میخونند باید علم غیب داشته باشند که بدونند اون خط هایی که خطا داره اصلا الکی توی کد نوشته شده و باید غیر فعال بشه.
    در ضمن در مورد اینکه من چقدر روی این کدها کار کردم ، این رو بگم که اخلاق من توی برنامه نویسی اینه که اول خودت تلاش کنی بعد اگه به نتیجه نرسید از کسی سوال کنی.
    فکر میکنم شما قبل از اینها باید کمی سطح معلومات در زمینه امنیت نرم افزارها / آشنائی با اصطلاحالا و روشهای کرک / برنامه نویسی و اصول برنامه نویسی /و... را بالاتر ببرید
    در مورد این پیشنهادتون هم ممنونم، اتفاقا دارم همین کار رو انجام میدم که این سوالات رو مطرح میکنم.
    امیدوارم به جای بحث بی مورد درباره این زمینه ها ، سعی کنیم تا روشهای جدیدتر ، بهتر و بدون نقص تری برای محافظت از نرم افزارهای اجرایی به دوستان پیشنهاد کنیم.
    یا علی

  14. #54
    کاربر دائمی آواتار Dr.Bronx
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Hosna Soft
    پست
    1,108

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    16 راه برای داشتن امنیت بیشتر در برنامه ها : English
    از ضمیمه دانلود کنید

    Unique way of Encryption / Encoding


    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

  15. #55
    کاربر دائمی آواتار Dr.Bronx
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Hosna Soft
    پست
    1,108

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    1- Key or Password Quality Check
    این برنامه چگونگی چک کردن کیفیت یک پسورد رو نشون میده
    vb6 هست



    2- یک کلاس برای کار با A MD5 Class - MD5


    3- Matrix Encrypter
    یک روش رمزنگاری با استفاده از matrix
    به گفته سازنده هیچ وقت پسورد خودتون رو فراموش نکنید . چون به هیچ عنوان نمی تونید فایل رو آزاد کنید.

    4- درباره Encryption
    Over the years I have been hanging around PSC I have seen many types of encryption,many say that theysarethe best, uncrackable and so on. Wrong! The real encryptions that are strong uses a key or several,and are based on advanced or minor advanced mathematical algorhitms.Take the RSA encryption: You start with two prime numbers and after that they are used to produce some uniqe numbers, and allare in proportion to each other. The encryption in itself is easy-advanced math: Text^n mod e I think. Something like that. If you do proclaim that your encryption are state of the art,please say that it has some sort of advanced mathematical algorhitm in it.Or atleast get some facts about encryptio, before you try to make one yourself. If the content of this article is grossly wrong, notify me and I will remove it.
    موفق و موید باشید
    فایل های ضمیمه فایل های ضمیمه

  16. #56
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    یکی از مواردی که کار کرکر را راحت میکنه پیدا کردن رشته هایی مورد استفاده برنامه نویس در برنامه میباشد ، با استفاده از یونیت زیر میتونید رشته ها را یکبار به حالت رمز در بیاورید و موقع نمایش با استفاده از تابع Decrypt اون را صدا بزنید و نمایش بدهید.

    یک مثال آخر همین یونیت هست برای نمونه روش استفاده.
    که هر برنامه نویسی میتونه یک my_key برای خودش در نظر بگیره و شروع کنه رشته ها را یکبار رمز کنه و رمز شده ها را به جاهایی که نیاز داره با یک پیشوند تابع دیکریپت صدا بزنه
    به این صورت دیگه موقع ریسورس برنامه رشته های معنی دار در همان لحظه اول جلو چشم کرکر قرار نمیگیره :)


    unit uEncrypt;

    interface

    function Decrypt(const S: AnsiString; Key: Word): AnsiString;
    function Encrypt(const S: AnsiString; Key: Word): AnsiString;

    implementation

    const
    C1 = 52845;
    C2 = 22719;

    function Decode(const S: AnsiString): AnsiString;
    const
    Map: array[Char] of Byte = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 63, 52, 53,
    54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
    3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
    20, 21, 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30,
    31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
    46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0);
    var
    I: LongInt;
    begin
    case Length(S) of
    2:
    begin
    I := Map[S[1]] + (Map[S[2]] shl 6);
    SetLength(Result, 1);
    Move(I, Result[1], Length(Result))
    end;
    3:
    begin
    I := Map[S[1]] + (Map[S[2]] shl 6) + (Map[S[3]] shl 12);
    SetLength(Result, 2);
    Move(I, Result[1], Length(Result))
    end;
    4:
    begin
    I := Map[S[1]] + (Map[S[2]] shl 6) + (Map[S[3]] shl 12) +
    (Map[S[4]] shl 18);
    SetLength(Result, 3);
    Move(I, Result[1], Length(Result))
    end
    end
    end;

    function PreProcess(const S: AnsiString): AnsiString;
    var
    SS: AnsiString;
    begin
    SS := S;
    Result := '';
    while SS <> '' do
    begin
    Result := Result + Decode(Copy(SS, 1, 4));
    Delete(SS, 1, 4)
    end
    end;

    function InternalDecrypt(const S: AnsiString; Key: Word): AnsiString;
    var
    I: Word;
    Seed: Word;
    begin
    Result := S;
    Seed := Key;
    for I := 1 to Length(Result) do
    begin
    Result[i] := Char(Byte(Result[i]) xor (Seed shr 8));
    Seed := (Byte(S[i]) + Seed) * Word(C1) + Word(C2)
    end
    end;

    function Decrypt(const S: AnsiString; Key: Word): AnsiString;
    begin
    Result := InternalDecrypt(PreProcess(S), Key)
    end;

    function Encode(const S: AnsiString): AnsiString;
    const
    Map: array[0..63] of Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
    'abcdefghijklmnopqrstuvwxyz0123456789+/';
    var
    I: LongInt;
    begin
    I := 0;
    Move(S[1], I, Length(S));
    case Length(S) of
    1:
    Result := Map[I mod 64] + Map[(I shr 6) mod 64];
    2:
    Result := Map[I mod 64] + Map[(I shr 6) mod 64] +
    Map[(I shr 12) mod 64];
    3:
    Result := Map[I mod 64] + Map[(I shr 6) mod 64] +
    Map[(I shr 12) mod 64] + Map[(I shr 18) mod 64]
    end
    end;

    function PostProcess(const S: AnsiString): AnsiString;
    var
    SS: AnsiString;
    begin
    SS := S;
    Result := '';
    while SS <> '' do
    begin
    Result := Result + Encode(Copy(SS, 1, 3));
    Delete(SS, 1, 3)
    end
    end;

    function InternalEncrypt(const S: AnsiString; Key: Word): AnsiString;
    var
    I: Word;
    Seed: Word;
    begin
    Result := S;
    Seed := Key;
    for I := 1 to Length(Result) do
    begin
    Result[i] := Char(Byte(Result[i]) xor (Seed shr 8));
    Seed := (Byte(Result[i]) + Seed) * Word(C1) + Word(C2)
    end
    end;

    function Encrypt(const S: AnsiString; Key: Word): AnsiString;
    begin
    Result := PostProcess(InternalEncrypt(S, Key))
    end;

    end.

    {************************************************* *************}
    // Example:
    {************************************************* *************}
    /*
    procedure TForm1.Button1Click(Sender: TObject);
    const
    my_key = 313603;
    var
    sEncrypted, sDecrypted :AnsiString;
    begin
    // Encrypt a string
    sEncrypted := Encrypt('this is a sample text to encrypt...abcd 123 {}[]?=)=(',my_key);
    // Show encrypted string
    ShowMessage(sEncrypted);
    // Decrypt the string
    sDecrypted := Decrypt(sEncrypted,my_key);
    // Show decrypted string
    ShowMessage(sDecrypted);
    end;
    */

  17. #57
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    روشی برای تشخیص نقاط توقف سخت افزاری
    Hardware Breakpoints

    Hardware breakpoints are a technology implemented by Intel in their processor architecture, and are controlled by the use of special registers known as Dr0-Dr7. Dr0 through Dr3 are 32 bit registers that hold the address of the breakpoint. Dr4 and 5 are reserved by Intel for debugging the other registers, and Dr6 and 7 are used to control the behavior of the breakpoints (Intel1). There is a little bit too much information for me to cover how the Dr6 and Dr7 registers affect breakpoint behavior. However, anyone who is interested should read the Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide for an in-depth explanation of how the registers work.
    Now, in order to detect and/or remove hardware breakpoints, there are two methods we can utilize: the Win32 GetThreadContext and SetThreadContext, or using Structured Exception Handling. In the first example, I'll show how to use the Win32 API functions:


    // CheckHardwareBreakpoints returns the number of hardware
    // breakpoints detected and on failure it returns -1.
    int CheckHardwareBreakpoints()
    {
    unsigned int NumBps = 0;

    // This structure is key to the function and is the
    // medium for detection and removal
    CONTEXT ctx;
    ZeroMemory(&ctx, sizeof(CONTEXT));

    // The CONTEXT structure is an in/out parameter therefore we have
    // to set the flags so Get/SetThreadContext knows what to set or get.
    ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS;

    // Get a handle to our thread
    HANDLE hThread = GetCurrentThread();

    // Get the registers
    if(GetThreadContext(hThread, &ctx) == 0)
    return -1;

    // Now we can check for hardware breakpoints, its not
    // necessary to check Dr6 and Dr7, however feel free to
    if(ctx.Dr0 != 0)
    ++NumBps;
    if(ctx.Dr1 != 0)
    ++NumBps;
    if(ctx.Dr2 != 0)
    ++NumBps;
    if(ctx.Dr3 != 0)
    ++NumBps;

    return NumBps;
    }

  18. #58
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    .....................
    يكسري از پروتكتورهاي خوب

    اديت شد : ظاهرا لينك تغيير كرده. :(
    آخرین ویرایش به وسیله joker : پنج شنبه 16 تیر 1390 در 11:36 صبح

  19. جمعه 20 آبان 1390, 11:02 صبح


  20. #59

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    هرچند از خیلی از بحث ها سر در نیاوردم اما در کل تاپیک خیلی خوبیه مرسی Joker
    من از دیباگر و دیس اسمبلر اینا سرم نمیشه اما یکم دلفی بلدم برا استفاده ی خودم کد هاتونو برداشتم و یه یونیت درست کردم خواهشا میشه یه نگا بهش بندازید یه چیزایی بیشتر با همون منوالی که گذاشتم بهش اضافه کنید؟

    یه سوال اگه من این توابع و پروسیجر ها رو هر 1 دقیقه چک کنم برا برنامم مشکلی که پیش نمیاد؟ روشم درسته یا جای دیگه ای هم باید فراخونیشون کنم؟ نمونه استفادم از کد ها اینجوریه:




    procedure TForm1.Timer1Timer(Sender: TObject);
    begin

    if IsDBG=true then KillMe;
    if SoftIceVXDDetected then KillMe;
    if WinIceDetected then KillMe;
    if BoundsCheckerDetected then KillMe;
    if MeltIceDetected then KillMe;
    if IsDebuggerPresent then KillMe;
    FOLL;
    Checkit(123456);

    end;

    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله arkia : یک شنبه 25 دی 1390 در 01:46 صبح

  21. #60

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    راستی اون تیکه کدی که کامنتش کردم باعث بستن برنامه میشه به نظرتون از چیشه؟


    //hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,0);

  22. شنبه 20 اسفند 1390, 16:49 عصر

    دلیل
    فاقد محتوا

  23. #61

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    کسی میدونه چطور میشه برنامه هایی که تو #C نوشته شده به فایل exe تبدیل کرد؟؟؟
    دیگه اینکه اگه برنامه ای ایمن واسه تبدیل فایل exe به setup میشناسید لطفا معرفی کنید

  24. #62

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    نقل قول نوشته شده توسط immortalson مشاهده تاپیک
    کسی میدونه چطور میشه برنامه هایی که تو #C نوشته شده به فایل exe تبدیل کرد؟؟؟
    دیگه اینکه اگه برنامه ای ایمن واسه تبدیل فایل exe به setup میشناسید لطفا معرفی کنید
    کار C#‎ تبدیل برنامه به exe ست دیگه!!!! یعنی کدتو نوشتی موندی چجوری اجراییش کنی؟

    Install Shield بهترین گزینس اما نمیدونم چرا گفتی امن... البته ابزار هایی برا امنیت برنامه داره اما کسی به اونا اکتفا نمیکنه. راستی این سوال جاش اینجا نبود

  25. #63

    تشخیص ollydbg (شاید هم همه دیباگرها)

    امروز داشتم با برنامه ProcessExplorer سرو کلّه میزدم یهو یه چیزی به ذهنم رسید ،وقتی برنامه ای با Debugger باز میشه اون Debugger به عنوان Process والد برنامه و برنامه هم Process فرزند Debugger میشه
    با این حساب اگه توی برنامه Parent-Process خودشو تشخیص بده میشه فهمید که Debuggerای در کار هست یا نه ، به همین سادگی

    برنامه در حالت عادی :
    Name:  AD Normal.jpg
Views: 587
Size:  45.6 کیلوبایت

    برنامه و Debugger :
    Name:  AntiDebug.jpg
Views: 595
Size:  34.0 کیلوبایت

    اینم کد برنامه به زبان Delphi :
    uses
    Winapi.TlHelp32, Winapi.PsAPI;

    {-------------------------------------------------------------------------------
    + function : Get_Parent_Process_Path
    + Author : Behrooz Abbassi
    + DateTime : 2013.03.30
    + Arguments : None
    + Result : string
    -------------------------------------------------------------------------------}

    function Get_Parent_Process_Path: string; inline;
    function Get_Parent_Process_ID: NativeInt; inline;
    var
    PE32: TProcessEntry32;
    snap: THandle;
    begin
    Result := 0;
    snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
    PE32.dwSize := SizeOF(PE32);
    process32first(snap, PE32);
    repeat
    if PE32.th32ProcessID = GetCurrentProcessID then
    Result := PE32.th32ParentProcessID;
    until Process32Next(snap, PE32) = FALSE;
    end;

    var
    Handle: THandle;
    Path: array [0 .. 255] of char;
    begin
    Result := '';
    Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE,
    Get_Parent_Process_ID);
    if Handle <> 0 then
    try
    GetModuleFileNameEx(Handle, 0, Path, MAX_PATH);
    Result := Path;
    finally
    Handle := 0;;
    end;
    end;

    اینم نحوه استفاده : (فعلاً فقط برای Ollydbg)
    var
    sParent: string;
    begin
    sParent := ExtractFileName(Get_Parent_Process_Path);
    if (sParent = LowerCase('OLLYDBG.EXE')) or (sParent = UpperCase('OLLYDBG.EXE'))
    then
    Application.Terminate;


    موفق باشید.
    Everything that has a beginning has an end. ... The End?



  26. شنبه 10 فروردین 1392, 20:22 عصر

    دلیل
    با پیام خصوصی مطرح کنید

  27. شنبه 10 فروردین 1392, 21:02 عصر

    دلیل
    با پیام خصوصی مطرح کنید

  28. #64
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    Path: array [0 .. 255] of char;
    Buffer overflow
    fail

  29. #65
    کاربر دائمی آواتار علیرضا حسن زاده
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تــــــــــــــــــــــــــبریز
    پست
    897

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    ا این حساب اگه توی برنامه Parent-Process خودشو تشخیص بده میشه فهمید که Debuggerای در کار هست یا نه ، به همین سادگی
    این روش فکر کنم زمانی کار کنه که برنامه توسط دیباگر اجرا میشه
    اگه برنامه اجرا بشه و پروسس Attach بشه احتمالا این روش کار نمیکنه

  30. #66
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    نقل قول نوشته شده توسط علیرضا حسن زاده مشاهده تاپیک
    این روش فکر کنم زمانی کار کنه که برنامه توسط دیباگر اجرا میشه
    اگه برنامه اجرا بشه و پروسس Attach بشه احتمالا این روش کار نمیکنه
    درسته ولی مشکلش اینه که در همون لحظات اول برنامه میتونه همه پروسس ها رو اسکن کنه.
    ولی احتمالا این مشکل با sandbox حل بشه.
    به جز این من یک روش بهتر از شما گفتم که چون کاملا این سیستم رو زیر سوال میبرد حذف شد.لینکش رو هم توی history ه iceweasel پیدا نکردم که PM کنم

  31. جمعه 24 خرداد 1392, 00:33 صبح

    دلیل
    بی ربط به موضوع تاپیک/فاقد محتوا

  32. چهارشنبه 20 فروردین 1393, 11:04 صبح

    دلیل
    فاقد محتوا

  33. سه شنبه 04 فروردین 1394, 02:12 صبح

    دلیل
    قبلا بسیار بحث شده جستجو کنید

  34. دوشنبه 30 شهریور 1394, 09:10 صبح

    دلیل
    بی ربط به موضوع تاپیک

  35. پنج شنبه 19 فروردین 1395, 15:24 عصر

    دلیل
    کل کل نکنید!

  36. جمعه 20 فروردین 1395, 12:43 عصر

    دلیل
    کل کل نکنید!

  37. #67
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: محافظت از برنامه فايل اجرايي (براي استفاده عموم)

    سلام
    اولا کرکرها برنامه نویسان حرفه ای و مجرب زبان اسمبلی هستند و شما هرگز حریف اونها نمی شوید پس به خودتون وعده ندید و الکی دلتون رو به این روشها خوش نکنید . ثانیا امنیت نرم افزار با این روشهای قدیمی تامین نمیشه بلکه با انتشار سورس نرم افزار تامین میشه . دوره ی اینکارها گذشته . ضمنا شما خودتون دارید از اسمبلی استفاده می کنید اونوقت انتظار دارید کرکر نتونه قفل نرم افزار شما را بشکنه !!!!! واقعا که خیلی جالبه . بدجوری کرکرها رو دستکم گرفتید . بجای کرکرها فقط خودتون رو خسته می کنید . وقتتون رو بجای این مباحث بیهوده به چیزهای مفیدتر اختصاص بدید . کرکرها هیچوقت درمانده و خسته نمی شوند .

  38. جمعه 18 اسفند 1396, 09:23 صبح

    دلیل
    کل کل نکنید!

صفحه 2 از 2 اولاول 12

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •