نمایش نتایج 1 تا 18 از 18

نام تاپیک: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

  1. #1

    Wink ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    سلام

    مشكلي كه در بيشتر برنامه هاي قفل گذاري شده هست كه باعث شكستن قفل اونها ميشه، نوع قفل و امنيت اون نيست بلكه اينه كه شما هر قفلي بزاريد و هر چقدر هم قفلتون امن باشه بالاخره در جايي از برنامه مي نويسيد

    اگر قفل موجود بود سپس
    اجراي برنامه

    در غير اينصورت
    خاتمه برنامه


    هكر ها هم از همين نکته استفاده مي كنند و دستور شرط شما رو كه كد اسمبلي اون معلومه در فايل برعكس مي كنند و اما يكي از راههاي مقابله با اين كار اينه كه از دستور شرطي استفاده نكنيد ولي چطوري ؟

    با اين روش ما اجراي برنامه رو متوقف نمي كنيم بلكه كاري مي كنيم برنامه درست اجرا نشه و كار نكنه

    فرض كنيد شما يك كد سيستم داريد كه با استفاده از سريال هارد ديسك به دست اومده و كاربر اون رو به شما مي ده و شما طي الگوريتم خاصي اون رو تبديل به كد فعال ساز (ActivationCode) مي كنيد و به كاربر اعلام مي كنيد

    برنامه شما هم به صورت داخلي كد فعال سازي رو خودش توليد مي كنه تا بتونه چك كنه كدي كه كاربر وارد كرده صحيح هست يا خير كه اسم اون رو مي زاريم (ProgramActivationCode)

    طبق روش معمول ما دستور زير رو مي نويسيم

    If  ActivationCode = ProgramActivationCode then
    'Run program
    Else
    'End
    Endif


    اما مسئله اينه كه براي امنيت بيشتر برنامه در مقابل هك شدن برنامه نبايد از دستور شرطي استفاده بشه
    راهي كه پيشنهاد ميدم اينه كه يك تابع كد كننده (Encode) رشته ها با هر الگوريتمي خواستيد بنويسيد كه رشته ورودي و كليد رو بگيره و براساس كليد رشته رو كد كنه فقط طوري نوشته بشه كه اگر كليد برابر پوچ ("") بود خود رشته ورودي رو برگردونه

    حالا اگر كد فعال سازي درست باشه و ما محتويات ProgramActivationCode رو از داخل ActivationCode حذف كنيم و نتيجه رو در متغير Key ذخيره كنيم بايد متغير Key برابر رشته پوچ بشه و اين يعني ActivationCode = ProgramActivationCode
    براي اين كار چنين دستوري رو مي زاريم

    dim Key$
    Key = Replace(ActivationCode, ProgramActivationCode,"")


    مطمئنا ما در برناممون رشته هايي داريم كه اگر درست نباشن برنامه درست كار نمي كنه مثلا مسير ديتابيس برنامه
    كافيه مسير ديتابيس برنامه يك رشته الكي و نادرست باشه اونموقع برنامه با وجود اجرا شدن درست كار نمي كنه
    اينجاست كه از تابع Encode استفاده مي كنيد

    dbasePath = Encode("C:\Test.mdb", Key)


    طبق دستور بالا و توضيحات گفته شده، اگر Key برابر پوچ باشه كه Encode كار خاصي انجام نميده و همون C:\Test.mdb رو توي متغير dbasePath كه مسير بانكمون هست قرار مي ده اما اگر Key پوچ نباشه چون رشته C:\Test.mdb كد ميشه پس مسير برنامه بهم مي‌ريزه و تبديل به يك رشته بي معني ميشه و اين يعني عدم كاركرد صحيح برنامه

    اگر از قفل سخت افزاري استفاده مي كنيد هم ميشه از اين روش استفاده كرد چون معمولا قفلهاي سخت افزاري مثل يك حافظه محافظت شده با پسورد هستند، شما يك رشته رو درون قفل ذخيره و بعدا چك مي كنيد كه رشته خوانده شده از قفل برابر همون رشته كه تو برنامتون وجود داره هست يا نه كه در اين حالت رشته درون قفل حكم ActivationCode و رشته توي برنامه حكم ProgramActivationCode رو داره

    به غير از مسير ديتابيس رشته هاي زياد ديگري نيز در هر برنامه وجود داره كه اجراي صحيح برنامه وابسته به اونها هست و طبق برنامتون مي‌تونيد از هر كدوم كه خودتون خواستيد استفاده كنيد مثلا دستورات Sql، پيامها و ...

    موكدا توصيه ميشه تابع كد كننده رو هم به صورت تابع ننويسيد و هر جا نياز داشتيد عين متن تابع رو بياريد تا امنيت باز هم بالاتر بره

    البته من فقط يك ايده رو مطرح كردم تا از نوشتن دستور شرط جلوگيري بشه و اگر دوستان نظري راجع به اين روش دارند يا روشهاي بهتري رو بلد هستند خيلي خوب هست كه به بقيه هم ياد بدن
    آخرین ویرایش به وسیله vbhamed : یک شنبه 28 مرداد 1397 در 18:46 عصر
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  2. #2
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    دوست عزیز این قفل رو شما یا VB نوشتید. اون وقت چطور می خواهید به برنامه Autorun که ساختید بچسبونید یا Bind کنید ؟
    من این قفل رو نوشتم اما مشکل این دارم که چطوری قفلی که نوشتم رو به فایل Autorun بچسبونم که کسی نتونه فایل قفل رو از فایل Autorun اش جدا کنه . برنامه های exe ذهدیثق زیادی هست اما همشون چون 90% برای ساخت فایل تروجان استفاده می شن . تا قفل رو با فایل Autorun ذهدی می کنی و یروس کش اون رو ویروس می شناسه و اونو پاک میکنه؟ در ضمن مشکل الویت بندی هم هست که چطور می شه بعد بایند کردن الویت بندی کرد که اول فایل قفلی که نوشتم اجرا بشه و تا کد فعال سازی صحیح رو وارد نکرده اتورانی که فایل قفل Bind شده اجرا نشه ؟
    میشه راهنماییم کنی و بگی چطوری میشه این مشکلات رو بر طرف کرد ؟
    و اگر Exe Binder به این صورت داری می شه در اختیارم بزاری؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    2,397

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    حالا اگر كد فعال سازي درست باشه و ما محتويات ProgramActivationCode رو از داخل ActivationCode حذف كنيم و نتيجه رو در متغير Key ذخيره كنيم بايد متغير Key برابر رشته پوچ بشه و اين يعني ActivationCode = ProgramActivationCode
    دوست عزیز شما برای اینکه بررسی کنید ببینید کلید یا رشته پوچ هست یا نه , خوب بازم به شرط نیاز دارید دیگه
    در حال حاضر هم چون خود برنامه کد فعالسازی معتبر رو تولید میکنه میشه با روش Serial Fish برنامه رو کرک کرد.

    به نظر من بهتره برای تولید سریال گذشته از تمامی پیچیدگی ها از الگوریتمهای نامتقارن استفاده بشه تا حداکثر زحمت به کراکر اعمال بشه.
    آخرین ویرایش به وسیله vbhamed : جمعه 28 تیر 1392 در 12:23 عصر

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    سلام
    شما هر کاری انجام بدید باید از یک دروازه که به شرط ختم میشود عبور کنید.
    ولی بازی با الگوریتم قفل کردن باعث امن بودن نیست بلکه موارد زیر رو در برنامه ات باید انجام بدید تا سخت هک بشود.
    1- هر چقدر میتوانید ظرفیت فایل اجرایی را بالا ببرید.
    2- در یک مکان رمز عبور را چک نکنید عمل چک کردن رمز را در سایر توابع هم بکار ببرید.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    2,397

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    1- هر چقدر میتوانید ظرفیت فایل اجرایی را بالا ببرید.
    این مورد تاثیر زیادی نداره , فقط میتونه سیستمهای قدیمی رو کمی کند کنه , با وجود این پردازشگرها کسی رو اذیت نمیکنه.
    2- در یک مکان رمز عبور را چک نکنید عمل چک کردن رمز را در سایر توابع هم بکار ببرید.
    کاملا" درسته , ولی در این مورد اگر از الگوریتمهای متقارن استفاده شده باشه , کراکر اقدام به تولید Keygen میکنه تا کارش راحت تر بشه ولی اگر از الگوریتم غیر متقارن بهره ببرید کار سخت تر میشه.

  6. #6

    Wink نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    نقل قول نوشته شده توسط Nima NT مشاهده تاپیک
    دوست عزیز شما برای اینکه بررسی کنید ببینید کلید یا رشته پوچ هست یا نه , خوب بازم به شرط نیاز دارید دیگه
    سلام

    ما بررسي نمي كنيم كه رشته كليد پوچ هست يا خير يعني از هيچ شرطي استفاده نميشه
    اصلا بحث تاپيك همين هست

    روش كار اينه كه ما توسط الگوريتم كد كننده، رشته اصلي رو با استفاده از رشته كليد كد مي كنيم
    حال به صورت اتوماتيك در دل الگوريتم كد كننده چنانچه رشته كليد پوچ باشه رشته اصلي كد نميشه چون الگوريتم كد كننده رو اينطوري نوشتيم ولي از شرطي استفاده نميشه كه بگيم اگر كليد پوچ بود سپس خود رشته برگرده

    با يك مثال موضوع رو روشن مي كنم

        Dim i%

    For i = 0 To Len(Key)
    'دستورات مربوط به كد شدن رشته
    Next


    همانطور كه مي بينيد در الگوريتم بالا چنانچه Key = "" باشد پس طول رشته برابر صفر است و الگوريتم كد كننده خود بخود رشته را كد نمي كند
    البته مثال بالا فقط براي بيان روش مسئله آورده شده و در عمل پيچيدگيها و شرايط خاص در نظر گرفته ميشه
    و منظور ايده انجام كار است
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    2,397

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    درست ولی فرض کنید رشته دیکد نشد , اون موقع چی کار میکنید ؟

  8. #8

    Wink نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    نقل قول نوشته شده توسط Nima NT مشاهده تاپیک
    درست ولی فرض کنید رشته دیکد نشد , اون موقع چی کار میکنید ؟
    سلام

    رشته يا كد ميشه يا نميشه نه ديكد

    اگر رشته كد بشه به زبان ساده يعني اينكه قفل درست نيست و برنامه كه از اين رشته در جاهاي مختلف استفاده مي كنه به مشكل بر مي خوره، فرض كنيم اگر اين رشته نام بانك باشه و كد بشه همه برنامه به مشكل برخورد مي كنه

    اگر هم كد نشه برنامه بدون مشكل اجرا ميشه
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  9. #9

    Wink نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    نقل قول نوشته شده توسط ehsanocx مشاهده تاپیک
    دوست عزیز این قفل رو شما یا VB نوشتید. اون وقت چطور می خواهید به برنامه Autorun که ساختید بچسبونید یا Bind کنید ؟
    سلام

    اين روش قفلگذاري براي برنامه نويسهاست كه سورس نرم افزار در اختيار خودشونه
    اما شما مي تونيد يك برنامه با ويژوال بيسيك بنويسيد كه نرم افزار مورد نظرتون رو از داخل اون اجرا كنيد و براي اينكه كاربر از بيرون نتونه برنامه اصلي رو اجرا كنه فايلش رو كد كنيد و سپس با برنامه ويژوالتون ديكد كنيد و اجرا كنيد، هر چند امنيت اين كار زياد بالا نيست چون اگر كاربر بفهمه برنامه رو كجا و با چه اسمي ديكد كرديد كار تمومه

    البته راههايي هم وجود داره كه نرم افزار اصلي به جاي هارد روي رم ديكد بشه و از همونجا اجرا بشه و اون قسمت از رم هم قفل بشه كه بايد خودتون بيشتر تحقيق كنيد
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  10. #10
    کاربر دائمی
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    2,397

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    اگر رشته كد بشه به زبان ساده يعني اينكه قفل درست نيست و برنامه كه از اين رشته در جاهاي مختلف استفاده مي كنه به مشكل بر مي خوره، فرض كنيم اگر اين رشته نام بانك باشه و كد بشه همه برنامه به مشكل برخورد مي كنه
    الان کاملا" متوجه شدم , قبلا" تو تاپیک زیر یه نمونه از برنامه قفل گذاری شده با این تکنیک گذاشته شده که خوشبختانه کسی نتونست بدون حضور کد معتبر برای اون کد تولید کنه , ولی این برنامه ها یه مشکل دارن و اون هم اینه که اگر یک بار برنامه فروش بره و کد معتبر دست کراکر بیافته کار تمومه.
    معمولا" برای چنین حالتی که شرط وجود نداره ( یا شاید هم وجود داره ولی عکس اون تفاوتی نمیکنه ) از روش Keygen استفاده میکنن تا کد معتبر برای برنامه تولید کنن.
    برای جلوگیری از این کار هم توصیه میکنم که حتما" از روشهای غیر متقارن استفاده کنید و به یک یا دو الگوریتم رمزنگاری هم اکتفا نکنید و علاوه اگر سورس الگوریتم در دسترستون هست حتما" تغییراتی رو در اون اعمال کنید و از شکل استاندارد اون استفاده نکنید.

    تاپیک مربوطه ...
    در برنامه دوم و در کل در این تاپیک هدف تولید کد معتبر بوده و نه اینکه کراکر بیاد و شرط رو برعکس کنه , لازم به ذکر هست که در برنامه دوم از الگوریتم متقارن استفاده شده ولی با توجه به حضور لایه های Polymorphic درک کد برای پیشبرد روند معکوس بسیار سخت و در مواردی غیر ممکن هست.
    میتونید خودتون ملاحظه بفرمائید...
    https://barnamenevis.org/showthread.php?t=158406

  11. #11

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    اینم یک روش که از این طریق هم میشه به صورت خیلی ابتدایی و ساده از اجرا شدن فایل های اجرایی جلوگیری کرد .

    If Command$ <> "!<run>!" Then End

    Shell "MyProtctedApp.exe !<run>!"
    آخرین ویرایش به وسیله vbhamed : چهارشنبه 14 مرداد 1394 در 06:48 صبح

  12. #12
    کاربر دائمی آواتار ehsanocx
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    گرگان
    سن
    36
    پست
    525

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    با Exe Binder نمیشه فایل قفل و Autorun رو bind کرد ؟ جواب نمیده آقا وحید ؟

  13. #13

    Wink نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    نقل قول نوشته شده توسط .M8SPY. مشاهده تاپیک
    اینم یک روش که از این طریق هم میشه به صورت خیلی ابتدایی و ساده از اجرا شدن فایل های اجرایی جلوگیری کرد .

    If Command$ <> "!<run>!" Then End

    Shell "MyProtctedApp.exe !<run>!"
    سلام
    تو اين دستور از شرط استفاده شده و همه بحث اين تاپيك اين هست كه شرط نداشته باشه
    آخرین ویرایش به وسیله vbhamed : چهارشنبه 14 مرداد 1394 در 06:49 صبح
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  14. #14

    Wink نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    نقل قول نوشته شده توسط Nima NT مشاهده تاپیک
    الان کاملا" متوجه شدم , قبلا" تو تاپیک زیر یه نمونه از برنامه قفل گذاری شده با این تکنیک گذاشته شده که خوشبختانه کسی نتونست بدون حضور کد معتبر برای اون کد تولید کنه , ولی این برنامه ها یه مشکل دارن و اون هم اینه که اگر یک بار برنامه فروش بره و کد معتبر دست کراکر بیافته کار تمومه.
    معمولا" برای چنین حالتی که شرط وجود نداره ( یا شاید هم وجود داره ولی عکس اون تفاوتی نمیکنه ) از روش Keygen استفاده میکنن تا کد معتبر برای برنامه تولید کنن.
    برای جلوگیری از این کار هم توصیه میکنم که حتما" از روشهای غیر متقارن استفاده کنید و به یک یا دو الگوریتم رمزنگاری هم اکتفا نکنید و علاوه اگر سورس الگوریتم در دسترستون هست حتما" تغییراتی رو در اون اعمال کنید و از شکل استاندارد اون استفاده نکنید.

    تاپیک مربوطه ...
    در برنامه دوم و در کل در این تاپیک هدف تولید کد معتبر بوده و نه اینکه کراکر بیاد و شرط رو برعکس کنه , لازم به ذکر هست که در برنامه دوم از الگوریتم متقارن استفاده شده ولی با توجه به حضور لایه های Polymorphic درک کد برای پیشبرد روند معکوس بسیار سخت و در مواردی غیر ممکن هست.
    میتونید خودتون ملاحظه بفرمائید...
    https://barnamenevis.org/showthread.php?t=158406

    سلام

    فعلا بحث ما فقط در مورد قسمت چك كردن كد توليدي هست وگرنه توليد كد اصلي با الگوريتمهاي نامتقارن انجام ميشه
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  15. #15

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    باسلام
    نمونه آماده شده این آموزش با ویژوال بیسیک دارید که من با آن مقایسه کنم
    متشکر می شوم بگذاريد
    یاحق
    آخرین ویرایش به وسیله vbhamed : یک شنبه 17 شهریور 1392 در 06:45 صبح

  16. #16

    Red face نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    مرسي كارتون درسته اما اگه ميشه يه برنامه براي مثالي كه بشه راحتر فهميد درست كنيد ممنون مي شم يه سورس

  17. #17
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    جنوب عشق است
    پست
    1,557

    نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    یک سورسی بزارین خیلی خوبه راستش درست متوجه نشدم !
    کلید های ورودی رو بگیریم بعد مقایسه کنیم ؟ خب مستقیم مقایسه میکنیم
    یک سورس بزارین لطفا
    آخرین ویرایش به وسیله Veteran : جمعه 04 آذر 1390 در 20:49 عصر

  18. #18
    کاربر دائمی آواتار kitcat_m18
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اداره - پشت میز کامپیوتر
    پست
    488

    Post نقل قول: ! قفل يا كد فعال ساز برنامه بدون استفاده از دستور شرطي !

    سلام دوستان،
    با توجه به اينكه شما در قفل از شرط استفاده نكرده ايد قفل شما يه مقدار ديرتر شكسته ميشه نه اينكه قابل شكسته شدن نباشه.
    اگه بحث درباره اصول قفل گذاري هست لازم مي دونم نكاتي رو ياد آوري كنم:

    1- براي قفل گذاري در برنامه بايد از كد گذاري برو روي رشته ها استفاده نمود.
    2 - ساختار قفل بسيار مهم مي باشد. الگوريتم مربوطه بايد داراي حروف، علائم و اعداد باشد.
    3 - مي توان از تكنيك قفل هاي وابسته يا **** Lock استفاده نمود.
    4 - قفل ها را درون شرط هاي برنامه قرار دهيد!
    5 - در بحث معماري معكوس چيزي كه به وضوح قابل رويت است : هر قفلي را مي توان شكست، اما زمان و دقت اينكار بسته به سطح دانش شما دارد.
    6 - حتما قفل را در رويداد هاي مختلف برنامه براي چك شدن قرار دهيد، اينكار باعث ميشود زمان شكسته شدن قفل شما بسيار بالا رود.
    7 - و مهمترين نكته: قفل را وابسته به فايل هاي ديگر كنيد (براي مثال قفل اصلي را به صورت چند تكه در چندين Dll قرار دهيد به اين صورت كه درون هر كدام از DLL ها براي اجراي DLL بعدي هم يك قفل وجود داشته باشد. و به خاطر داشته باشيد كه الگوريتم هر كدام با ديگري متفاوت باشد.)

    پيشنهاد من به شما اينه كه با توجه به قوانين بالا شروع با ساخت يك قفل نماييد و هميشه در برنامه هاي خود استفاده كنيد.
    نكته: قفل را به صورت ماژولار و كاملا انعطاف پذير طراحي نماييد.
    موفق باشيد
    آخرین ویرایش به وسیله vbhamed : شنبه 30 شهریور 1392 در 08:14 صبح

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

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