ايران ويج

نسخه‌ی کامل: ایجاد یک قفل نرم افزاری ( تولید کد با XOR )
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
در اين مقاله مي خواهم در رابطه با روشهاي زيپ كردن و كد كردن و نحوه استفاده كردن از آن در برنامه ها صحبت كنم. ابتدا نمونه هائي از كدهاي استفاده شده در برنامه هاي رايج مانند Windows – Word – WinZip و...

براي نصب سيستم عامل Windows98 عربي كد PCGXQ-PK2XW-894C9-J3K6M-DPVXD و براي نصب Office 2000 كد GC6J3-GTQ62-FP876-93FBR-D3DX8 و ... ! اما اين كدها از كجا مي آيند؟ بايد بكويم كه در واقع اينها يك رمز براي اجراي برنامه هستند كه تبديل به كد شده اند. مانند: سريال CD با ديسك، سريال MOTHERBOARD و.....



حال يك روش ساده كد كردن اطلاعات

يكي از روشهاي كد كردن اطلاعات روش XOR مي باشد. در اين روش از عمليات با بيتها بر روي كد مورد نظر استفاده مي شود بدين صورت كه هر يك از كاراكترهاي كد مورد نظر را با يك عدد XOR نمائيم



حال نمونه يك برنامه كه از آن استفاده مي كند:


کد:
Private Function Encrypt(ByVal strText As String) As String

Dim lngPWIndex As Long
Dim lngDoText As Long
Dim lngChar As Long
Dim strFinal As String
Dim strNewChar As String
Dim lngPWVal as Long

For lngDoText = 1 To Len(strText)
DoEvents
lngChar = Asc(Mid$(strText, lngDoText, 1))
lngPWVal = (lngChar Xor 128)
strNewChar = Chr$(lngPWVal)
strFinal = strFinal & strNewChar
Next lngDoText
Encrypt = strFinal
End Function

اين روتين يك متن را گرفته و آن را با عدد 128 XOR مي كند و يك مقدار كد شده را بر ميگرداند.

و يك نمونه برنامه ديگر كه يك متن را با توجه به يك كليد كد مي كند


کد:
Private Function Encrypt(ByVal strText As String , ByVal strPasswordKey As String) As String

Dim lngPWIndex As Long
Dim lngDoText As Long
Dim lngChar As Long
Dim lngPWChar As Long
Dim lngPWVal As Long
Dim strFinal As String
Dim strNewChar As String

lngPWIndex = 1

For lngDoText = 1 To Len(strText)
    DoEvents
    lngChar = Asc(Mid$(strText, lngDoText, 1))
    lngPWChar = Asc(Mid$(strPasswordKey, lngPWIndex, 1))
    lngPWVal = (lngChar Xor lngPWChar)
    strNewChar = Chr$(lngPWVal)
    strFinal = strFinal & strNewChar
    If lngPWIndex = Len(strPasswordKey) Then
        lngPWIndex = 1
    Else
        lngPWIndex = lngPWIndex + 1
    End If  
Next lngDoText

Encrypt = strFinal

End Function


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

اینم یه برنامه که از این تابع استفاده می کنه.

[attachment=701]
جالب بود دستت درد نکنه
سلام didi جان.

کد:
If EntryCode = TrueActCode Then
MsgBox "ÈÇ ÊÔ˜Ñ ÈÑäÇãå ÔãÇ ÈÇ ãæÝÞíÊ ËÈÊ ÔÏ", vbInformation, "ÈÑäÇãå ÑÌíÓÊÑ ÔÏ"
Else
MsgBox "˜Ï æÇÑÏ ÔÏå ãÚÊÈÑ äãí ÈÇÔÏ. áØÝÇ ˜Ï ÕÍíÍ ÑÇ æÇÑÏ äãÇÆíÏ", vbCritical, "ÎØÇ"
End If
[/php]
آیا تو دیباگر ها و اسمبلر ها نمیشه این دستور شرطی رو تغییر داد؟!؟!؟ اگر بشه چه نیازی به این همه کدینگ هست.؟
لطفا جوابمو بدید تو فکرم BiggrinBiggrin
ممنون
ممکنه طرف 100 تا msgbox تو برنامش داشته باشه یا برای نشان دادن پیغام خطا از msgbox که خودش با فورم ساخته استفاده کرده باشه میشه if رو تغییر داد ولی مهم خسته کردن کرکر هست تا برنامه به این راحتی ها کرک نشه
دوست عزیز

استفاده از قفل سخت افزاری، شماره سریال هاردیسک یا مادربورد، کدهای امنیتی و ..... همه باعث بالاتر رفتن

امنیت برنامه می شن اما هر کدوم از موارد بالا رو اگه بخواین بود یا نبودش رو به همین سادگی تو برنامه تست کنید

که امنیت برنامه تون به صفر هم نمی رسه.

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

آنتی دامپ و آنتی دیباگر و .... استفاده کنید ، سعی کنید از کنترل های CRC چک و یا چک کردن کد وارده شده در اینترنت

و ..... همه و همه رو با هم استفاده کنید تا برنامه تون به یه امنیت نسبی برسه . مطمئن باشید صرف تکیه به

یک روش یا یک کد هرچند پیچیده نمی تونه به برنامه شما امنیت بده دوست خوبم.
مرسی.
"کنترل های CRC چک و یا چک کردن کد وارده شده در اینترنت" میشه یکم توضیح بدید ؟!؟
و به نظر شما بهترین آنتی دامپ و آنتی دیباگر چیه !؟!؟ از کدوم استفاده کنم آخه من بیام فایل exe برنامه رو Pack کنم بازم Anti Packer داریم که ؟!؟! من باید امیدم چی باشه ؟!! از وقتی که اومدم تو دنیای کرک دیگه حالم از برنامه نویسی بهم خوردSad
اگر میشه منو یکم توجیه کنید. ممنون
(۱۱-اسفند-۱۳۸۷, ۱۶:۲۵:۱۹)dreamvbfox نوشته است: [ -> ]مرسی.
"کنترل های CRC چک و یا چک کردن کد وارده شده در اینترنت" میشه یکم توضیح بدید ؟!؟
چک crc مثل امضای دیجیتال هست شما میتونین روی توابع مهمتون یا code section خودتون یه crc چک بزارین در این حالت اگه در محدوده این crc حتی اگه 1 بیت هم تغییر پیدا بکنه برنامه متوجه میشه و در این حالت شما یا مجبورین این CRCچک رو دور بزنین یا از روشهای inline patching استفاده کنین
چک کردن اینترنت هم معلومه شما به هر برنامتون یک id یکتا اختصاص میدین و طرف رو مجبور میکنین برای استفاده به اینترنت کانکت بشه و شما اون کد و شناسه طرف رو با بانکتون چک میکنین که اگه یه کد خاص زیاد یا هر روز واسه رجیستر کانکت میشه یعنی از اون نسخه تکثیر شده و....
نقل قول: و به نظر شما بهترین آنتی دامپ و آنتی دیباگر چیه !؟!؟
همشون خوبن ولی باید در جاهی حساس ازشون استفاده کنین
نقل قول: از کدوم استفاده کنم آخه من بیام فایل exe برنامه رو Pack کنم بازم Anti Packer داریم که ؟!؟! من باید امیدم چی باشه ؟
اشتباه شما اینه که میخواهین کل محافظت از برنامه میخواهین به یک پکر بسپارین شما بهتره اول یه سری روتین محافظ در قسمتهای حساس و روالهای اصلی برنامتون کار بزارین بعد از یخ پکر مطمئن که نه چندان معروف باشه استفاده کنین البته در کنار استفاده از پکر استفاده از protector به شدت توصیه میشه
سلام.
میشه یکم بیشتر درباره آنتی دامپ و آنتی دیباگر و پکر و پروتکتور صحبت کنید؟
و crc چک رو باید چه جوری ازش استفاده کنم باید داخل خود برنامه بنویسم !؟!؟
تو اون روشی که گفتید از طریق اینترنت چک بکنم بانک باید روی هاست باشه درسته؟ اونوقت چه جوری داخل بانک write کنم ?:-
ببخشید که اینقدر سوالات مبتدی می پرسم ... اما بزودی همشو با لطف شما دوستان یاد میگیرم X:X:

تشکر
(۱۱-اسفند-۱۳۸۷, ۱۹:۵۴:۲۲)dreamvbfox نوشته است: [ -> ]سلام.
میشه یکم بیشتر درباره آنتی دامپ و آنتی دیباگر و پکر و پروتکتور صحبت کنید؟
برای کرک کردن نرم افزار باید اونو انالیز کرد که این کار با استفاده از دیباگر صورت میگیره کدهایی که برای شناسایی این نرم افزارها به کار میرن anti debuger گفته میشه

وقتی طرف میخواهد یه فایل رو unpack کنه وقتی عملیات مزبور تمام شد و برنامه بطور کامل در حافظه قرار گرفت باید اونو dump کنه یعنی از حافظه بدزده به کدهایی که از این کار جلوگیری میکنن anti dump گفته میشه
پکر ها تغییراتی روی فایل خروجی برنامه انجام میدن تا غیر قابل خواندن بشن مثلا کد برنامه ای که پک شده رو با کد پک نشده مقایسه کنین متوجه میشین
protector ها مجموعه روتینهای antidump, anti trace, anti debuger , anti decompile و غیره هستن که به برنامه اضافه می شن و جلوی روند کرک شدن رو میگیرن
نقل قول: و crc چک رو باید چه جوری ازش استفاده کنم باید داخل خود برنامه بنویسم !؟!؟
بله
نقل قول: تو اون روشی که گفتید از طریق اینترنت چک بکنم بانک باید روی هاست باشه درسته؟ اونوقت چه جوری داخل بانک write کنم ?:-
با استفاده از دستور insert و update میتونین اطلاعات تو بانک بریزین و یا اون اطلاعات رو تغییر بدین با یه query همه چی حله
نقل قول: ببخشید که اینقدر سوالات مبتدی می پرسم ... اما بزودی همشو با لطف شما دوستان یاد میگیرم X:X:

تشکر
نپرسیدن عیب نیست ندانستن عیبه