-
بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
دوستان عزیز سلام.
میخواستم با دوستان جمع بشیم و بحثی پیرامون امنیت برنامه ها در مقابل کرک شدن راه بندازیم.
منظور از این تاپیک اینه که انواع روش های ممکن رو برای سخت تر شدن کرک کردن برنامه ها یاد بگیریم.
توجه کنید گفتم سخت تر شدن؛ نه غیر قابل کرک شدن. چون هیچ چیز قطعی نیست.
از دوستان میخوام که هر چیزی که به ذهنشون میرسه بگن. نظر دوستان هرچند ساده؛ قابل بحث هست. پس دریغ نکنید.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
مطلب اول رو خودم مینویسم.
یکی از راههای متداول برای سخت کردن عمل کرک شدن برنامه ها؛ استفاده از Toolsهایی به نام Packer هست که این ابزارها معمولا 2 کار انجام میدهند.
الف) Pack کردن برنامه که باعث میشه کرکر در زمان کرک کردن برنامه با اشتباهاتی روبرو بشه که بعدا در مورد این موضوع صحبت میکنیم.
ب) معمولا ابزارهای Packer میتونن حجم برنامه های Compile شده شما رو تا حد زیادی کم کنن. من خودم این کاهش حجم رو به میزان چهار پنجم تجربه کردم.
اما داستان به همینجا ختم نمیشه.
این Toolsهای خوب و کارآمد مثل یک چاقوی دوطرفه عمل میکنن.
توضیح: اگه شما برنامتون رو با UPX پک کنین. میتونین اون رو با همون UPX آنپک (UnPack) کنین.
نکته: میتونین از Packer های پولی استفاده کنین. تا کرکر امکان دسترسی به اون رو نداشته باشه.
نکته: اگه تونستید از سایت های Crack & Serial رجیستر Packer مورد نظر رو پیدا کنین پیشنهاد من به شما اینه که اونو فراموش کنید. چرا که برنامه ای که نتوانسته از خود دفاع کنه؛ چطوری میتونه از برنامه شما دفاع کنه؟
منتظر نظرات شما دوستان هستم.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
خوب مطلب بعدی رو هم خودم مینوسم.
همونطور که میدونید اصل کرک کردن بر پایه به هم زدن دستورات شرطی دربرنامه هست. به طور مثال شرط زیر را:
If StrRegCode = "123" Then
MsgBox "Register Success!"
End If
به شرط زير تغيير ميدهند:
If StrRegCode <> "123" Then
MsgBox "Register Success!"
End If
شما میتونید دستورات چک کردن رجیستر بودن/نبودن برنامه را به تعداد بیشتر از یک بار در برنامه؛ و در جاهای مختلف به کار ببرین.
نکته: معمولا برنامه ها یک بار و آن هم موقع Start یا Load شدن برنامه؛ رجیستر را چک میکنند.
نکته: معمولا کرکرها برفرض عادی بودن برنامه دست به کار میشن. و اگه جایی رو دستکاری کنن و برنامه کرک نشده باشه؛ فکر میکنن شرط رو اشتباه پیدا کردن. و اونو به حالت اول برمیگردونن تا کار برنامه مختل نشه و به دنبال شرط بعدی میرن.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نه. مثل اینکه کسی افتخار نمیده تا یه بحث راه بندازیم.
اشکالی نداره. مطلب بعد رو هم خودم مینویسم.
یکی از بحث های مهم در امنیت برنامه؛ لو رفتن الگریتم Coding یا Encoding هست که برنامه نویس از اون برای ساخت RegCode یا همون Register Code استفاده میکنه. که در صورت کشف این الگریتم توسط کرکر؛ ایشون میتونن برای برنامه شما KeyGen بسازن.
توصیه: همیشه سعی کنین از پیچیده ترین روش Encode/Decode که میتوانید استفاده کنید.
نکته: بعضی از برنامه نویسان هنگام رجیستر کردن Userها اطلاعاتی مانند نام – میل و مثلا تلفن رو از اونها میگیرن و RegCode از کد شدن این اطلاعات درست میشه.
توصیه: سعی کنید به این اطلاعات؛ اطلاعاتی که از سیستم User گرفتید هم اضافه کنید. یعنی هر سیستم RegCode مخصوص خود را داشته باشد. چون در غیر این صورت اولین RegCodeی که صادر میکنید؛ آخرین هم هست. زیرا اون RegCode به سرعت بین Userها پخش میشه.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
خوب اگه فقط رجیستری رو مد نظر قرار بدیم انتی های پیشرفته روز دنیا این قابلیت رو دارن که مسیر تغیرات رجیستری رو به شما نشون بدن (البته خودم هم قبول دارم که خودشون هم از رجیستری برای این کار استفاده میکنن)پس بد نیست علاوه بر رجیستری جاهای مختلف دیگه هم این کد هالحاظ بشه
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
majjjj
خوب اگه فقط رجیستری رو مد نظر قرار بدیم انتی های پیشرفته روز دنیا این قابلیت رو دارن که مسیر تغیرات رجیستری رو به شما نشون بدن (البته خودم هم قبول دارم که خودشون هم از رجیستری برای این کار استفاده میکنن)پس بد نیست علاوه بر رجیستری جاهای مختلف دیگه هم این کد هالحاظ بشه
دوست عزيز majjjj ممنون که در بحث شرکت کردين.
اما من در هيچ کدوم از پست هاي قبلي از رجيستري ويندوز صحبت نکردم.
و فکر ميکنم شما منظور منو اشتباه متوجه شديد. منظور من از RegCode اون SerialNumber ي هست که بعد از خريد برنامه به User ميدين. به هر حال پست شما دليلي شد که در اين تاپيک از Windows Registery هم سخني به ميان بياد.
امنيت برنامه ها و Windows Registry
همونطور که دوست خوبمون جناب majjjj اشاره کردن؛ بعضی از Programmerها میان و کد رجیستر برنامه رو در رجیستری قرار میدن. یا اینکه میان و یه کلید تو رجیستری میسازن که نشان دهنده رجیستر شدن برنامه هست.
نکته: برنامه هایی هستند به نام Registry Monitor که کارشون زیر نظر داشتن تغییرات رجیستری ویندوز هست. و میتونن تمام کار هایی رو که شما انجام میدین رو لیست کنن.
نکته: از SerialNumber که بگذریم؛ بعضی از برنامه نویسان تنظیمات و اطلاعات برنامه رو تو رجیستری ذخیره میکنن. مثلا: یکی از برنامه های مطرح Folder Security که من Analyze کردمش؛ آدرس پوشه های Lock شده رو تو رجیستری قرار میداد. که من تونستم با اضافه کردن یک کاراکتر به آدرس پوشه؛ و ReStart کردن سیستم. پوشه رو از قفل بودن در بیارم.
توصیه: همیشه سعی کنید مشخصات رجیستر برنامه، اطلاعات کلیدی برنامه و غیره رو به صورت رمز یا EnCode شده در یک فایل در مسیر برنامه قرار بدید. به دو ولیل:
الف) سخت تر شدن دسترسی دیگران به اطلاعات شما.
ب) با عوض شدن ویندوز اطلاعات شما از بین نمیرود.
ج) Backup و Restore به سادگی و با سرعت بیشتری انجام میشود.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
برای اینکه برنامه هایی بنویسید که در مقابل کرکر های مقاوم باشند باید خودتون کرکر خوبی باشید .
پیشنهاد می کنم اول برید کرک کردن یاد بگیرید .
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نظرتون در مورد Hex editor چی هست؟
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
برای سخت تر شدن کرک می تونید از Hash ها ، CRC,... استفاده کنید . ولی اینها هم فقط باعث می شوند که برنامه دیرتر کرک بشوند!
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
برای اینکه برنامه هایی بنویسید که در مقابل کرکر های مقاوم باشند باید خودتون کرکر خوبی باشید
دوست عزيز M8SPY . من نميگم کرکر خوبي هستم. اما اينقدر که بدونم روش هاي متداول Crack چيه؛ از اين مقوله سر رشته دارم. و اينکه من نميخوام اينجا درس بدم. فقط ميخوام تبادل اطلاعات داشته باشيم.
نقل قول:
نظرتون در مورد Hex editor چی هست؟
دوست خوبم KeyhanCPU من منظور شما رو نميفهمم! خوب HexEditor هم يک Tools هست که در معمولا در کرک کردن برنامه ها ازش استفاده ميشه. لطف کنيد واضحتر بنويسيد.
نقل قول:
برای سخت تر شدن کرک می تونید از Hash ها ، CRC,... استفاده کنید . ولی اینها هم فقط باعث می شوند که برنامه دیرتر کرک بشوند!
آقاي Smart_Boy عزيز.
1) اگه اطلاعاتي داريد که به درد عموم ميخوره لطفا اونو براي استفاده ديگران بنويسيد.
2)به پست اول دقت کنيد عبارت سخت تر شدن کرک کردن برنامه ها رو ميبينيد.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
در رابطه با نحوه کار کرکرها با hex editor ها بگید
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
.:KeihanCPU:.
در رابطه با نحوه کار کرکرها با hex editor ها بگید
دوست من KeihanCPU ما ميخوايم اينجا ياد بگيريم که چگونه امنيت برنامه هامون رو ببريم بالا. نه اينکه کرک کردن ياد بديم.
تازه اگه بخوايم کرک هم ياد بديم چون به برنامه نويسي با VB مربوط نميشه. ادمين محترم پست رو ميبنده:لبخند::چشمک:
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
اینطور که میبینم دوستان هیچ علاقه ای به این مبحث ندارن. در صورتی که این یکی از جنجالی ترین مباحث بین برنامه نویسان هست. چرا که هر برنامه نویسی بعد از پیشرفت در کار خود؛ به فکر کسب درآمد از راه برنامه نویسی هست. و فرض کنید ساعت های طولانی و کسل کننده رو پشت سر میگذارین و از سالیان سال تجربیات خود استفاده میکنین تا یک برنامه بنویسین. و به جای کسب درآمد از آن؛ باید دست روی دست بگذارید و شاهد استفاده غیر مجاز از برنامه خود باشید. برنامه ای با طرفداران زیاد؛ اما دریغ از یک ریال درآمد برای برنامه نویس. فقط و فقط به دلیل رعایت نکردن نکات ساده امنیتی.
پس بیایید تا با به اشتراک گذاشتن تجربیاتمان در زمینه امنیت برنامه ها؛ کابوس کرک شدن برنامه هایمان را هرچه بیشتر از خود دور کنیم.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
من تکنیک های زیر رو پیشنهاد میکنم ، ترجمه و پیاده سازی اون به عهده خودتون.
1. garbage instructions:
insert many many garbage instructions to hide special instructions, disturb analysis and make people fret;
2. garbage loops:
same as the first item;
3. time comparing:
classic method, as step in/over need much longer than normal execution;
4. check parent process:
if target process is debugged, its parent process usually are not explorer.exe :)
5. check debugger:
windows provides some APIs to check if process is being debugged, such as: IsDebuggerPresent/NtQueryInformationProcess.
of course, you could also test CreateFile/PEB(just like IsDebuggerPresent to do).
6. dynamic encrypt/decrypt:
make analysis much more complex; re-encrypt the instructions which are passed could prevent cracker to check the old instructions effectivelly;
7. IAT encrypt:
stop the tools, e.g: ImpREC to recover IAT;
8. Fuzzy the instructions:
there are many ways to fuzzy the instructions, e.g: fuzzy the OEP instructions or fuzzy a random codes in process;
9. call:
use call instruction to confuse the cracker;
10. self-debug:
windows allows only one debugger to debug the target process, so we could use two or more processes. one process used to debug the special process to prevent cracker to debug the special process.
if we let one process to hook one interrupt, we could use this interrupt to decode or fuzzy some part codes;
11. SEH:
raise an exception manually to change process flow, such as: memory access exception, interrupt (int3,int1 or others), invalid instruction, invalid eip and so on;
12. multi-thread:
when a process is debugged and enter a breakpoint, all threads may be suspended. We could use this method to stop cracker:
a. change flow with multi-thread: modify main thread codes in sub thread, if sub thread is suspended, then main thread will fail;
b. use multi-thread decrypt main/sub thread codes;
13. anti-SMC:
use Timer or sub thread to set core memory space to READONLY access in a short time;
14. CRC checksum:
check codes CRC checksum to do a self test;
15. destroy debug environment:
modify DR register, interrtup process (int 1, int 3) or handle special interrupt by ourselves;
16. anti-DUMP:
set some useless memory space to NO_ACCESS, then some dump tools (e.g: LordPE) would not dump this process;
17. monitor keyboard:
monitor keyboard input, e.g: F7, F8, F9, F10;
18. Lock display:
lock display to prevent cracker to see the screen content;
19. destroy SEH environment:
invoke SetUnhandledExceptionFilter to stop debugger to catch exception;
20. debug parent process:
anti-debug;
21. CC protection or CopyMem-II protection:
such as modify all jump to CC (int 3), then we could use INT 3 handler to process the jump to correct address;
CopyMem-II means copy ourselves to another memory space to prevent to dump;
22. anti Attach:
destroy passed instruction to anti-attach; or create a process which doesn't support attach mode (require NT or later system);
23. instruction pre-fetch:
use CPU pre-fetch feature to disturb step trace, e.g:
mov word ptr [@@], 20cdh
@@:
nop
nop
24. create polymorphism packer codes:
25. save sensitive data to random space:
26. P-code:
use virtual CPU to run P-code to anti-debug;
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
خوب شما بگید بیشتر چکار میکنید که برنامهاتون کرک نشن
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
پست قبلی من واضح بود ، پیاده سازی اون تکنیک ها میتونه به امنیت برنامه های شما خیلی کمک کنه ، در ضمن اگه شما یه کراکر خوب باشید بهتر میتونید متوجه بشید که طی فرآیند کرک کردن یه برنامه چی میتونه اعصاب کراکر رو خراب کنه ، پس پیشنهاد میکنم یه سری به کتاب Crack و تکنیک های نفوذ به نرم افزار از انتشارات ناقوس بزنید ، کتاب جامعی هستش.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
Nima NT
پست قبلی من واضح بود ، پیاده سازی اون تکنیک ها میتونه به امنیت برنامه های شما خیلی کمک کنه ، در ضمن اگه شما یه کراکر خوب باشید بهتر میتونید متوجه بشید که طی فرآیند کرک کردن یه برنامه چی میتونه اعصاب کراکر رو خراب کنه ، پس پیشنهاد میکنم یه سری به کتاب Crack و تکنیک های نفوذ به نرم افزار از انتشارات ناقوس بزنید ، کتاب جامعی هستش.
کتاب مزخرف و گندی هست
اگر زبان برنامه نویسی شما وی بی باشه
از این تکنیک ها استفاده کنید
فایل خودتونو به صورت pcode کامپایل کنید ( کرک pcode اسان هست ولی خیلی ها نمی دونن)
از یه چند تایمر برای چک کردن رجیستر شدن برنامه استفاده کنید ( از کار انداختن تایمر راحته ولی خیلی ها بلد نیستن)
از Crc چک و الگوریتم های هش استفاده کنید
هیچ موقع سریال برنامه را تو یه متغییر قرار ندین ( سریال فیش میشه)
تو الگوریتم برنامه خود از فرمول های پیچیده ریاضی استفاده کنید
تا جایی که می تونید به جای if از while استفاده کنید.(تجربه میگه)
از if های تو در تو استفاده کنید
سعی کنید چند فایل را به هم وابسته کنید و چک قفل یا رجیستر شدن برنامه را در انها هم چک کنید
کد را طوری بنویسید که وقتی کرکر خواست پچ کنه سیستم شات داون بشه (تجربه میخواد)
واسه کرکر با توابع Api مزاحمت ایجاد کنید . مثلا با Sleep و Blockinput و ...
در اخر هم برنامه را با پکر نه با یه پروتکتور قوی مثل themida یا Execryptor یا punisher و ... پروتکت کنید
مبحث پکر با پروتکتور جداست
موفق باشید
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
koruir
خوب مطلب بعدی رو هم خودم مینوسم.
همونطور که میدونید اصل کرک کردن بر پایه به هم زدن دستورات شرطی دربرنامه هست. به طور مثال شرط زیر را:
If StrRegCode = "123" Then
MsgBox "Register Success!"
End If
به شرط زير تغيير ميدهند:
If StrRegCode <> "123" Then
MsgBox "Register Success!"
End If
شما میتونید دستورات چک کردن رجیستر بودن/نبودن برنامه را به تعداد بیشتر از یک بار در برنامه؛ و در جاهای مختلف به کار ببرین.
نکته: معمولا برنامه ها یک بار و آن هم موقع Start یا Load شدن برنامه؛ رجیستر را چک میکنند.
نکته: معمولا کرکرها برفرض عادی بودن برنامه دست به کار میشن. و اگه جایی رو دستکاری کنن و برنامه کرک نشده باشه؛ فکر میکنن شرط رو اشتباه پیدا کردن. و اونو به حالت اول برمیگردونن تا کار برنامه مختل نشه و به دنبال شرط بعدی میرن.
این کد هایی که نوشتی اشتباه محض است (هر دوشون )
اینطوری براحتی سریال اصلی برنامه را میشه پیدا کرد . پچ کردنشم فوق العاده راحت است (حتی برای مبتدی)
سریال برنامه یعنی 123 را اصلا نباید دخالت بدی براحتی بدست میاد
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
.:KeihanCPU:.
در رابطه با نحوه کار کرکرها با hex editor ها بگید
دوست عزیز من نمی دونم هگز ادیتور این وسط چه کاره هست
من تا حالا این همه کرک کردم اصلا ازش استفاده نکردم
اصلا هیچ ربطی به مسائل امنیت هم نداره
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
در مورد Encode كردن دوستان ميشه يكم توضيح بديد.
Encode يك دستور تو VB هست يا همين كه برنامه نويس تغييراتي تو كدنويسي با تغيير كاراكترها و سپس با محاسبات رياضي به حالت اول برگرداندن است؟
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
این کد هایی که نوشتی اشتباه محض است (هر دوشون )
اشتباه محض نيستن ! اينها فقط يه مثالن براي شرح كار كراكر .
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
debugger
این کد هایی که نوشتی اشتباه محض است (هر دوشون )
اینطوری براحتی سریال اصلی برنامه را میشه پیدا کرد . پچ کردنشم فوق العاده راحت است (حتی برای مبتدی)
سریال برنامه یعنی 123 را اصلا نباید دخالت بدی براحتی بدست میاد
دوست عزيز سلام. ممنون که در بحث شرکت کردين.
منظود من از نوشتن اين دو کد اين بود که به زبون کاملا ساده به دوستان بفهمونم که چطوري ميشه که دستور شرطي که براي برنامه نوشته ميشه به سادگي کرک ميشه. در واقع ميخواستم فکر دوستان رو به عوض شدن = به <> معطوف کنم. همين.
نقل قول:
در مورد Encode كردن دوستان ميشه يكم توضيح بديد.
Encode و Decode به روشي گفتي ميشه که با اون ميتوني مثلا يه رشته متني رو به رمز بنويسي. و بعد به سادگي خودتون اون متن رو بازيابي کنيد.
نقل قول:
مبحث پکر با پروتکتور جداست
مطلب جالبي هست. صادقانه بگم چيزي در مورد تفاوتشون نميدونستم. ميشه بيشتر توضيح بدين؟ :لبخند: آخه من تا الان فقط از UXP استفاده ميکردم. که فکر کنم فقط Packer باشه!
نقل قول:
واسه کرکر با توابع Api مزاحمت ایجاد کنید . مثلا با Sleep و Blockinput و ...
برام خيلي جالبه بدونم چطوري ميتونم کرکر رو به اين حالت :عصبانی++: در بيارم
نقل قول:
کد را طوری بنویسید که وقتی کرکر خواست پچ کنه سیستم شات داون بشه (تجربه میخواد)
دوست عزيز ميشه خواهش کنم از تجربياتتون ما رو هم بهره مندکنيد؟:خجالت:
نقل قول:
هیچ موقع سریال برنامه را تو یه متغییر قرار ندین ( سریال فیش میشه)
من چيزي که به فکرم نميرسه. ميشه بيشتر توضيح بدين؟
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
از Crc چک و الگوریتم های هش استفاده کنید
از بین بردن این جور تکنیک ها خیلی راحته ، بهتره برید سراغ تکنیک های هش غیر متقارن
نقل قول:
هیچ موقع سریال برنامه را تو یه متغییر قرار ندین ( سریال فیش میشه)
موافقم ولی تولید سریال واقعی و مقایسه اون با کد دریافتی جزو ناشیانه ترین کارهاست :اشتباه:
نقل قول:
تو الگوریتم برنامه خود از فرمول های پیچیده ریاضی استفاده کنید
100 ٪ شکسته میشه ، این گونه روشها 5 سالی میشه که منسوخ شده ، فقط استفاده از شیوه های رمزنگاری RSA و پازل زمانی توصیه میشه.
نقل قول:
تا جایی که می تونید به جای if از while استفاده کنید.(تجربه میگه)
واسه کراکر های حرفه ای بیشتر شبیه یه شوخیه.
نقل قول:
از if های تو در تو استفاده کنید
در همه موارد موثر نیست
نقل قول:
کد را طوری بنویسید که وقتی کرکر خواست پچ کنه سیستم شات داون بشه (تجربه میخواد)
بهش میگن بمب منطقی ، استفاده از این جور تکنیک های نباید تو یه جای برنامه باشه ، فقط هم به شات دان فکر نکنید ، کراکر میتونه با دستور Shutdown -a کل بمب رو خنثی کنه ، به فکر فرمت و از این جور حرفا باشید.
نقل قول:
واسه کرکر با توابع Api مزاحمت ایجاد کنید . مثلا با Sleep و Blockinput و ...
استفاده از این جور توابع زیاد مزاحم کراکر نمیشه ، چون میتونه از بیخ لیست این توابع رو از Import Table حذف کنه.
........................................ از نقطه نظراتتون هم ممنونم.:تشویق:
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
موافقم ولی تولید سریال واقعی و مقایسه اون با کد دریافتی جزو ناشیانه ترین کارهاست
نيما جان خواهش ميکنم راه حل رو همينجا بگين تا همه استفاده ببرن؟
فکر کنم منظور شما اينه که به جاي اينکه سريال واقعي رو درست کنيم.(مثلا نام و ميل طرف رو Encode کنيم) و ببينيم که با سريال وارد شده يکي هست يا نه؟ بيايم و برعکس عمل کنيم و (سريال رو Decode کنيم) و ببينيم که با مثلا نام و ميل وارد شده يکي هست يا نه؟
به عبارت ساده تر سورس Encode تو برنامه نباشه؛ و از Decode استفاده بشه. درسته؟
نقل قول:
استفاده از این جور توابع زیاد مزاحم کراکر نمیشه ، چون میتونه از بیخ لیست این توابع رو از Import Table حذف کنه.
منظورتون اينه که ميشه توابع API رو Enable/Disable کرد؟ لطفا توضيح بدين.
البته شیوه های رمزنگاری RSA و پازل زمانی هم نميدونم چيه!!!
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
Nima NT عزیز من هر چی گفتم شما اومدی یه چیزی روش گزاشتی
اینجا صحبت از امنیت است. صحبت از رتبه کرکر ها نیست
هیچ پروتکشنی تا حالا نتونسته از دست حرفه ای ها سالم بیرون بیاد
شکی نیست که کسی که themida , Asprotect و .... خودشو فول انپک و کیجن می کنن بهترین ها هستن ( مثال بود )
ما اینجا میخواهیم به امنیتی برسیم که همه نتونن کرک کنن . نمی خواهیم بدیم بهترین ها کرک کنن ( که تعدادشون هم کم هست )
من هر چی نوشتم بر حسب تجربه بود. اگر میخوای یه کرک می بنویسم ببینم میتونی کرک کنی
کرک می را با FSG پک می کنم ( که پکر ساده ای است ) اما اینو میدونم که فقط تو انپکش می مونی
چرا ؟ چون من oep و crc32 پکر را تو تایمر و جاهای دیگه چک کردم. اگر فایل را انپک کنی برنامه متوجه میشه که انپک شده بعدش یه بلایی سرت میاره که دیگه نگی خنثی کرد و شوخی بود و موثر نیست و .....
البته این فقط یکی از 100 روتین من بود
=============================
در مورد فرق بین پکر و پروتکتور :
پکر یک برنامه ساده است که حجم برنامه را به میزان قابل توجهی پایین می اورد و جلوی افراد مبتدی از ریسورس کردن برنامه میگیرد.
معمولا برنامه هایی که پک میشن .اولین دستورشون pushad هست. و با استفاده از قانون پشته انپک می شوند. طرز انپک کلی به این صورت است : اولین مقداری که وارد استک میشه روش بریک پوینت میزاریم . همه میدونید که اولین مقدار وارد شده اخرین مقدار خارج شده . وقتی اولین مقدار میخواد خارج بشه دیباگر می ایستد . چون روش قبلا بریک پوینت گزاشته بودیم .در واقع اینجا جایی هست که از کد های پکر خارج شدیم. و به oep رسیدیم . در اینجا دامپ می گیریم و تمام ( به صورت کلی گفتم)
ولی پروتکتور به روش بالا اصلا نمیشه کاری از پیش بد
معمولا پروتکتور ها حجم فایل را بالا می برند
از متد های VM , Antidebug,anti trace , anti dump ,Api redirection ,Stolen byte , Stolen Code,Code redirection,crc check,.....
استفاده می کنن. که کار کرک را بسیار دشوار می کنن.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
koruir
نيما جان خواهش ميکنم راه حل رو همينجا بگين تا همه استفاده ببرن؟
فکر کنم منظور شما اينه که به جاي اينکه سريال واقعي رو درست کنيم.(مثلا نام و ميل طرف رو Encode کنيم) و ببينيم که با سريال وارد شده يکي هست يا نه؟ بيايم و برعکس عمل کنيم و (سريال رو Decode کنيم) و ببينيم که با مثلا نام و ميل وارد شده يکي هست يا نه؟
به عبارت ساده تر سورس Encode تو برنامه نباشه؛ و از Decode استفاده بشه. درسته؟
منظورتون اينه که ميشه توابع API رو Enable/Disable کرد؟ لطفا توضيح بدين.
البته شیوه های رمزنگاری RSA و پازل زمانی هم نميدونم چيه!!!
دوست عزیز نمیشه که APi را enable , Disable کرد. این کار را با LordPe انجام میدن
این توابع را به کل حذف می کنن. همین. باید سررشته داشته باشی
در کل باید بگم که اینا همش مباحث شیرین Reversing هست که به این زودی نمیشه یاد بگیری. اصلا توضیح بدم میگی این چیه اون چیه ؟
در کل داشتم تو انجمن می گشتم که چشمم به این تاپیک خورد . دیگه حوصله کل کل ندارم.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
جناب دیباگر زیاد به روتین های خودتون مطمئن نباشید و لطفا" از لحن مناسب تری استفاده کنید ، به قول شاعر پارسی گو ، سعدی :
گرفتم ز تو ناتوان تر بسی است از تو توانا تر هم آخر کسی است.
به نظره بنده بهتره یه سری به بخش امنیت نرم افزاری بزنید ، یا اینکه دنبال پست های جناب هادی دلفی ( همکار بنده در شرکت ایران نوین ) بگردین ، تا ببینید که کرک کردن برنامه های پک شده زیاد سخت نیست.
در مورد اینکه شما میگین توابع API رو نمیشه حذف کرد باید خدمتتون عرض کنم بنده برنامه ای رو برای خودم کرک کردم که از آوردن اسمش معذورم ( اگه خواستی بهت پیغام خصوصی میدم ) ، که این برنامه 20 تایمر داشت که به صورت Runtime تولید میشد ، وبا سرعت بالا وجود قفل رو چک میکرد اگر کد وجود نداشت برنامه رو خاتمه میداد ، من عوض اینکه از ایجاد 20 تایمر جلوگیری کنم اومدم و با SoftICE تابع مربوطه به ExitProcess رو از توابع Import شده حذف کردم ، حالا اگه این تایمر ها تونستن برنامه رو ببندن.
در ضمن تعداد کراکر های حرفه ای بر خلاف نظر شما خیلی هم کم نیستن.
اگه فقط بخوایم تو ایران دنبال این موضوع باشیم باید بگم با یه لشگر طرفیم.
نقل قول:
چون من oep و crc32 پکر را تو تایمر و جاهای دیگه چک کردم. اگر فایل را انپک کنی برنامه متوجه میشه که انپک شده بعدش یه بلایی سرت میاره که دیگه نگی خنثی کرد و شوخی بود و موثر نیست و .....
این کار شما برای کراکر هایی مثل Magic و گروه هایی مثل Unreal یه شوخیه تا یه Crackme !
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
دوست عزیز
??????????
بقیه دوستان همشون دوستان صمیمی بنده هستن و منو هم میشناسن . من خودم برای هدف دیگه ای اومدم اینجا
یکمی از مباحث reversing میخوام فاصله بگیرم . بنا به دلایل شخصی
در ضمن اصلا شما استاد ما هستین . من فقط اومدم کمی راهنمایی کنم
از گناه ما بگذرید
خداحافظ
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
من نگفتم من استاد کسی هستم ، من از لحاظ علمی قد این حرفا نیستم ، فقط خواستم بگم که دست کم گرفتن کراکر ها شیوه درستی برای نوشتن یه قفل مطمئن نیست ، همشه سعی کنیم حریف خودمون رو خیلی بالاتر از سطح واقعی تصور کنیم تا بتونیم لااقل به جای اینکه با یه برنامه متوسط به یه نبرد بریم با یه برنامه مطمئن و سخت کارزار کنیم ،..
امیدوارم همیشه موفق و موید باشید.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
فکر کنم اگه مدیر بخش اینجا رو ببینه درش رو تخته کنه ، بی زحمت Crackme های خودتون رو تو بخش امنیت نرم افزار بذارید ، این کار شما یه کمی خلاف قانون تالار می باشد ، واسه من فرقی نداره که مدیر تاپیک رو قفل کنه یا نه ولی چون دوست دارم بحث ادامه پیدا کنه اینو میگم ، بحث رو بیشتر واسه ارائه تکنیک ( از لحاظ نظری ) ادامه بدید نه از لحاظ ایجاد چالش.
متشکرم.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
تجربه ثابت کرده که این طور تاپیک ها آخرش یا حذف میشه یا قفل.
شما همتون یا همین حالا استادین یا در آینده استاد خواهید شد.
از بحث های الکی خودداری کنید و فقط به موضوع تاپیک بپردازید.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
فایل خودتونو به صورت pcode کامپایل کنید
با توجه به اینکه گفتین: کرکش آسونتره، چرا توصیه میکنین؟ منظورم اینه که چرا از روش Natıve استفاده نکنیم؟
اگه ممکنه توضیح بفرمایین. ممنون
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
شاید این سوال رو از من نپرسیدین ولی چون دارم از فزولی میمیرم دوست داشتم جواب بدم.
با اجازه جناب دیباگر.
علت اینه که کرک کردن این نوع از فایل های VB آسونه ولی هرکسی بلد نیست ، به عبارتی کل مطلب ساده هستش ولی به علت عدم فراگیر بودن میتونه به دوام برنامه شما در بازار تا حدی کمک کنه.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
فقط هم به شات دان فکر نکنید ، کراکر میتونه با دستور Shutdown -a کل بمب رو خنثی کنه ، به فکر فرمت و از این جور حرفا باشید.
به نظر من اصلا به هيچي فكر نكنيد !!:متعجب:
اخه فرمت كه...
نقل قول:
چون من oep و crc32 پکر را تو تایمر و جاهای دیگه چک کردم. اگر فایل را انپک کنی برنامه متوجه میشه که انپک شده بعدش یه بلایی سرت میاره که دیگه نگی خنثی کرد و شوخی بود و موثر نیست و .....
جهت اطلاع كليه دوستان :
با تغيير دادن حتي يك بايت از يك فايل ، بدونه هيچ گونه استثنا CRC فايلها تغيير پيدا مي كنه !!
يك كار مي شه كرد !! اينكه بيايد فايلو پك كنيد و از طريقه برنامه ي PEiD بياييد و CRC فايل رو عوض كنيد !! ولي اين روش فقط روي برخي برنامه هاي كم امنيت كار مي كنه (مثله fsg)!
برنامه هاي قدرتمند مثله themida اجازه ي همچين كارايي رو نمي ده !! تازه اين روش بر رويه برخي از برنامه ها كار سازه !!
نقل قول:
البته این فقط یکی از 100 روتین من بود
ببخشيد ! ولي مثله اينكه شوخيتون گرفته !!
شما بگو من 100000 تا تايمر مي زارم !! 100 بار در اجراي برنامه چك مي كنم !!!200 بار در وسط برنامه !!!! 300 بار هم در اخره برنامه !!!!!
آقاي ديباگره عزيز !! ايا قبول داريد كه چك كردنه CRC توسط دستورات شرطي (حالا چه if باشه يه هر چيزه ديگه اي) صورت مي گيره !؟
آيا قبول داريد كه دستورات شرطي (به هر تعداد و به هر روش{سخت و اسان}) قابل شكستن هستند !؟
خب پس هيچي ، ولش كن ... :لبخند:
:تشویق:
نقل قول:
در کل باید بگم که اینا همش مباحث شیرین Reversing هست که به این زودی نمیشه یاد بگیری. اصلا توضیح بدم میگی این چیه اون چیه ؟
خداييش اين جمله رو خيلي حال كردم :لبخند:!!
دوست عزيز !! ديباگر جان !!
اينجا انجمن هست !! و افراد زيادي به اينجا ميان تا از همديگه چيزي ياد بگيرن !!
حالا اينكه شما مي گي نمي توني ياد بگيريو ... به اين زوديا نمي شه ياد بگيري قضيه ش چيزه ديگه است !!!!!
يعني بچه ها بايد بشينن ،دست رو دست بزارن ... بعد از 4 -5 ماه ، و بعد از مدتي خود به خود ياد مي گيرن !؟
نه خير جانم !! شما كه بلدي يادشون بده !! از كم شروع كن تا ...
ولي در كل روشهايي كه دوست عزيز نيما گذاشتن بهترين راهه !!
انگليسي هست !! ولي با جستجو در مورد انها در نت به نتيجه خواهيد رسيد :لبخندساده:
نقل قول:
1. garbage instructions:
insert many many garbage instructions to hide special instructions, disturb analysis and make people fret;
2. garbage loops:
same as the first item;
3. time comparing:
classic method, as step in/over need much longer than normal execution;
4. check parent process:
if target process is debugged, its parent process usually are not explorer.exe :)
5. check debugger:
windows provides some APIs to check if process is being debugged, such as: IsDebuggerPresent/NtQueryInformationProcess.
of course, you could also test CreateFile/PEB(just like IsDebuggerPresent to do).
6. dynamic encrypt/decrypt:
make analysis much more complex; re-encrypt the instructions which are passed could prevent cracker to check the old instructions effectivelly;
7. IAT encrypt:
stop the tools, e.g: ImpREC to recover IAT;
8. Fuzzy the instructions:
there are many ways to fuzzy the instructions, e.g: fuzzy the OEP instructions or fuzzy a random codes in process;
9. call:
use call instruction to confuse the cracker;
10. self-debug:
windows allows only one debugger to debug the target process, so we could use two or more processes. one process used to debug the special process to prevent cracker to debug the special process.
if we let one process to hook one interrupt, we could use this interrupt to decode or fuzzy some part codes;
11. SEH:
raise an exception manually to change process flow, such as: memory access exception, interrupt (int3,int1 or others), invalid instruction, invalid eip and so on;
12. multi-thread:
when a process is debugged and enter a breakpoint, all threads may be suspended. We could use this method to stop cracker:
a. change flow with multi-thread: modify main thread codes in sub thread, if sub thread is suspended, then main thread will fail;
b. use multi-thread decrypt main/sub thread codes;
13. anti-SMC:
use Timer or sub thread to set core memory space to READONLY access in a short time;
14. CRC checksum:
check codes CRC checksum to do a self test;
15. destroy debug environment:
modify DR register, interrtup process (int 1, int 3) or handle special interrupt by ourselves;
16. anti-DUMP:
set some useless memory space to NO_ACCESS, then some dump tools (e.g: LordPE) would not dump this process;
17. monitor keyboard:
monitor keyboard input, e.g: F7, F8, F9, F10;
18. Lock display:
lock display to prevent cracker to see the screen content;
19. destroy SEH environment:
invoke SetUnhandledExceptionFilter to stop debugger to catch exception;
20. debug parent process:
anti-debug;
21. CC protection or CopyMem-II protection:
such as modify all jump to CC (int 3), then we could use INT 3 handler to process the jump to correct address;
CopyMem-II means copy ourselves to another memory space to prevent to dump;
22. anti Attach:
destroy passed instruction to anti-attach; or create a process which doesn't support attach mode (require NT or later system);
23. instruction pre-fetch:
use CPU pre-fetch feature to disturb step trace, e.g:
mov word ptr [@@], 20cdh
@@:
nop
nop
24. create polymorphism packer codes:
25. save sensitive data to random space:
26. P-code:
use virtual CPU to run P-code to anti-debug;
چند وقت پيش (هنوز نرفته بودم دانشگاهه لعنتي) يه برنامه ي امنيتي نوشتم كه در جشنواره ي پروفسور حسابي مقام دوم در كليه رشته ها رو كسب كرد ، اين برنامه براي محافظت از فايلهايه اجرايي هست و از كپي برداريه اونا جلوگيري مي كنه !!
نمي گم برنامه غير قابله كركه!! ولي هر كس فكر مي كنه مي تونه كركش كنه ، پيغام خصوصي بده تا براش بفرستم.
روش هاي بالا ، روشهاي خوبي هستند !
ولي روشهاي انتي كركينگ ، رابطه ي مستقيم با ابتكاري كه خوده شما به خرج مي ديد ، داره !!
و هر چه از روشهاي ديگران استفاده كنيد ! برنامه ي شما زودتر كرك مي شه !!
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
شما بگو من 100000 تا تايمر مي زارم !! 100 بار در اجراي برنامه چك مي كنم !!!200 بار در وسط برنامه !!!! 300 بار هم در اخره برنامه !!!!!
دوست عزیز من گفتم روتین : نگفتم تایمر
روتین با تایمر فرق می کنه داداش
اشتباه از من بود که شرکت کردم . شما به بزرگی خودتان ببخشید
در ضمن میگی بیا اینجا یاد بده و ..... من از کرک خیلی وقته زده شدم .و هیچی هم بلد نیستم شما خودت با این حرف های تخصصی که میزنی استادی پس خودت بیا اینجا یاد بده
ماشااله تو جشنواره هم مقام گرفتی
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
دوست عزیز من گفتم روتین : نگفتم تایمر
منظوره منم تایمر نبود ! من گفتم 100000 داشته باشی ... روتین سر جایه خودشه
نقل قول:
روتین با تایمر فرق می کنه داداش
شوخی می کنی !؟ فک می کردم یکیین:گیج:
نقل قول:
در ضمن میگی بیا اینجا یاد بده و ..... من از کرک خیلی وقته زده شدم .و هیچی هم بلد نیستم شما خودت با این حرف های تخصصی که میزنی استادی پس خودت بیا اینجا یاد بده
وقتشو ندارم
:متفکر:
نقل قول:
ماشااله تو جشنواره هم مقام گرفتی
اصلا قابلتونو نداره عزیزم ... :قلب:
در کل فرقی نمی کنه ! وقتی themida کرک شه ! دیگه وای به حاله من و شما :ناراحت:
متاسفانه یا خوشبختانه (به نظر من خوشبختانه) کرک همینجور در حال توسعه بین کاربران رایانه ها هست. علم خیلی جالبی هست!
باید برم ... بای
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
MFiRE
منظوره منم تایمر نبود ! من گفتم 100000 داشته باشی ... روتین سر جایه خودشه
شوخی می کنی !؟ فک می کردم یکیین:گیج:
وقتشو ندارم
:متفکر:
اصلا قابلتونو نداره عزیزم ... :قلب:
در کل فرقی نمی کنه ! وقتی themida کرک شه ! دیگه وای به حاله من و شما :ناراحت:
متاسفانه یا خوشبختانه (به نظر من خوشبختانه) کرک همینجور در حال توسعه بین کاربران رایانه ها هست. علم خیلی جالبی هست!
باید برم ... بای
سلام
به نظر من هر چی قفل امنیتی برنامه ساده تر باشه بهتر ه و قابل کرک شدن نیست من چند روز پیش یک قفل نرم افزاری برای برنامه شرکت خودمون نوشتم که خیلی ساده هست اصلا از هیچ فرمولی استفاده نشده و بسیار بسیار ساده هست.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
یعنی چون ساده ست ، کرک نمی شه !؟
می شه بیشتر توضیح بدین ؟
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
نقل قول:
نوشته شده توسط
MFiRE
یعنی چون ساده ست ، کرک نمی شه !؟
می شه بیشتر توضیح بدین ؟
منظورم اینه که در کل از فرمول های پیش پا افتاده استفاده کنید مثلا شماره سریال مادربرد
را بگیرید این باشه 5699984112 حالا مثلا شما یک دستور شرطی بزارید اگه چهارمین حرف
عدد 9 بود به جاش حرف T و عدد 3 قرار بده که در مجموع کل میشه 569T0984112 حالا یک
دستور شرطی دیگه میزاری . به نظر من اصلا نباید به این شکل عمل کنی که به عدد اول 2 تا
اظافه بشه به عدد هشتم 9 اظافه بشه و الی آخر کراکر ها اولین کاری که می کنند از این
روش استفاده می کنند و بعد ش از راه مختصات شهر و ساعت ساخت و از این جور حرف ها.
-
نقل قول: بحث پیرامون امنیت برنامه ها در مقابل کرک شدن
سلام
چند روزی نبودم :بوس:
ولی دوست عزیز بازهم قابله کرک شدنه !!
خب بازم فرقی نداره ! اخه شما می گی که از دستوراته شرطی استفاده کنیم !
کلیه دستورات شرطی قابله کرک شدنه ! هر چی می خواد باشه !!
اگه نشه براش Patch ساخت ، می شه براش لودر نوشت و خیلی کارهایه دیگه !
به هر حال شما از دستورات شرطی استفاده کردی ! و یک مقدار رو چک می کنی ، حالا این چک کردن با دستوراته شرطی انجام می شه.
یعنی شما می گی:
اگر سریاله مادربورد = XXXXXXXX بود
وارد شو
اگه نبود
پیغام خطا بده
تمام شد رفت پی کارش (خداییش end if رو حال کردین ... جدیده:لبخند:)
حالا کرکر می گه :
اگر سریاله مادربورد = هر چی بود بود
وارد شو
تمام شد
راستی اینم بگم که فرقی نداره که شما از کدوم روش استفاده کردی ! اون اولی که گفتین و دومی ، فرقی نداره !
البته قابله ذکره که این چیزایی که گفتم فقط در مورده برنامه هایی هست که یه سریال دریافت می کنند و مجوز ورود رو می دن !!
من نمی دونم چرا موقع افطار می یام میشینم سایته برنامه نویس رو نگاه می کنم !؟؟ شما می دونین !؟
اقا ما بریم افطار ... هر چند که دیر شده :لبخند::گیج: