PDA

View Full Version : يك مقاله در مورد جلوگيري از decompile شدن پروژه



combo_ci
شنبه 11 خرداد 1387, 22:50 عصر
اين مقاله رو يك نگاه بندازين...مطالب جالبي در مورد محافظت سورس ها گفته
http://www.codebreakers-journal.com/content/view/123/97/

يكي از دوستان ميتونه راهنمايي كنه چطوري ميشه از اووون كدهاي IL كخ توي مقاله گفته ميشه براي محافظت از سورس ها استفاده كرد؟

ASKaffash
یک شنبه 12 خرداد 1387, 08:40 صبح
سلام
دوست عزیز مطلب خیلی مفیدی است ولی مختصر آیا شما برنامه DotFuscator را دارید؟

Mahdi.Kiani
یک شنبه 12 خرداد 1387, 09:28 صبح
خود ویژوال استودیو شامل این برنامه می شود
البته ویرایش community اون

start => All Programs => Microsoft Visual Studio 2005 (2008) => visual studio tools => dotfuscator commounity edition

gdevnb
یک شنبه 12 خرداد 1387, 09:43 صبح
سلام
من پیشنهاد میکنم یه سر به کتاب زیر بزنید
Apress Expert dot NET 2.0 IL Assembler

ASKaffash
یک شنبه 12 خرداد 1387, 10:24 صبح
سلام
دوستان دیگر هم اگر اطلاعاتی دارند ومیتوانند راهنمائی کنند ممنون میشوم.

combo_ci
یک شنبه 12 خرداد 1387, 11:03 صبح
آخه من قبلا شنيده بودم كه با كد هاي اسمبلي خاص ميشه جلوي decompil شدن برنامه رو گرفت ....اگه برنامه nlite http://www.nliteos.com/ رو ديده باشين كه با .net نوشته شده و با reflector بازش كنين همش كد هاي چرت و پرت نشون ميده....

البته هر كاري كردم نتومستم كدهاي assemly رو تو c# اجرا كنم كه برنامه هايي مثل reflector نتونن بازش كنن

برنامه dotfuscator هم كار زيادي انجام نميده !!! همه كد ها در reflector نمايش داده ميشه

ASKaffash
یک شنبه 12 خرداد 1387, 15:36 عصر
سلام
آیا دوستان میدانند چگونه میشود با DotFuscator کد یک متد یا ... را مشاهده کرد؟

رضا عربلو
یک شنبه 12 خرداد 1387, 17:34 عصر
در هر صورت مطمئن باشید کدهای IL را می توان Reflect کرد چرا که در غیر این صورت CLR نمی تواند کد شما را کامپایل و اجرا کند.
ولی کاری که ابزارهای Obfucasting انجام می دهند این است که نام های معنا دار شما را به نام های بی معنی تبدیل می کنند، کدهای اضافی در IL تزریق می کنند، رشته ها Decrypt می کننند ... تا فهمیدن کدهای IL را مشکل کنند.

Programmer.G
یک شنبه 12 خرداد 1387, 17:41 عصر
در هر صورت مطمئن باشید کدهای IL را می توان Reflect کرد چرا که در غیر این صورت CLR نمی تواند کد شما را کامپایل و اجرا کند.
ولی کاری که ابزارهای Obfucasting انجام می دهند این است که نام های معنا دار شما را به نام های بی معنی تبدیل می کنند، کدهای اضافی در IL تزریق می کنند، رشته ها Decrypt می کننند ... تا فهمیدن کدهای IL را مشکل کنند.

مشکل کنند یا غیر ممکن؟
به نظر من بعضی از Obfuscator ها کاری با کدها می کنند که 99 درصد افراد قادر به درک آنها نیستند.

combo_ci
یک شنبه 12 خرداد 1387, 21:59 عصر
مشکل کنند یا غیر ممکن؟
به نظر من بعضی از Obfuscator ها کاری با کدها می کنند که 99 درصد افراد قادر به درک آنها نیستند.
ميشه لطف كنين بگين چطوري اين كار انجام ميشه...من همين امروز يه بار ديگه تست كردم ...اما وفتي با Obfuscator برنامه رو دوباره comile كردم بازم هيچ تغييري رخ نداد

combo_ci
یک شنبه 12 خرداد 1387, 22:01 عصر
تازه يه چيزه باحال ديگه......
امروز يه برنامه رو پيدا كردم كه ميتونه بدون اينكه كد باز بشه يك exe رو تغيير بده ...اعم از نام متغير ها ...رشته هاي توي برنامه....تغيير پارامتر هاي يك تابع و.....

اين ديگه فاجعه هست ...آقا يه راهي بگيد كه بشه جلوي اين كارو گرفت !!!!!!!!!!

sinpin
دوشنبه 13 خرداد 1387, 10:32 صبح
مشکل کنند یا غیر ممکن؟

به نظر من بعضی از Obfuscator ها کاری با کدها می کنند که 99 درصد افراد قادر به درک آنها نیستند.
حتي اگر اين آمار درست باشه همون 1 درصد باقي مونده نشون دهنده ي مشكل بودن كار است و نه غيرممكن بودن.

linux
سه شنبه 14 خرداد 1387, 01:01 صبح
حتي اگر اين آمار درست باشه همون 1 درصد باقي مونده نشون دهنده ي مشكل بودن كار است و نه غيرممكن بودن.
شما خودتان از چه ابزاری برای این کار استفاده می کنید؟

hdv212
سه شنبه 14 خرداد 1387, 04:05 صبح
ظاهرا Obfuscation خود Visual Studio 2005 اونطور که باید هکرها رو سر در گم نمیکنه، برای جلوگیری از Reflect شدن نرم افزارتون، میتونید از ابزارهایی مانند Xenocode PostBuild (http://www.xenocode.com/) استفاده کنید، ابزار فوق العاده ای هست، البته فعلا خودم از CodeVeil (http://www.xheo.com/products/codeveil/) استفاده میکنم که اینم عالیه، ابزار CodeGenerator منو که لینکشو در امضای من میبینید، با این برنامه Encrypt کردم، میتونید با Reflector تستش کنید ببینید میتونه باز کنه یا نه!
با این ابزارها، کارای دیگه ای هم میتونید بکنید، مثلا Optimize کردن کد، Compress کردن فایل اجرایی شما، که پس از اجرا خودش به طور اتوماتیک در حافظه باز میشه که در سرعت اجرای برنامه تاثیر فوق العاده ای داره.

combo_ci
سه شنبه 14 خرداد 1387, 12:33 عصر
ابزارها و نرم افزارهاي زيادي تو اينترنت هست كه اين كارو انجام ميدن ...من خودم از Themida استفاده ميكنم....اما واقعا شما به اين نرم افزار ها اعتماد ميكنين؟ با توجه به اين كه ما اين نرو افزار ها رو نخريديم و همشون ك ر ك شده اند...

در ضمن كار اين نرم افزار هار (تا اونجايي كه من ميدونم ) تغيير header فايل exe يا dll هست كه با اين كار هيچ decompiler نميتونه فايلو باز كنه اما اگر به چند تا پست قبل من تئ اين تاپيك مراجعه كنين من لينك برنامه nlite رو گذاشتم كه با .net نوشته شده و كارش customize كردم سي دي win xp هست....اگه اين نرم افزار رو با decompilser مثل reflector باز كنين ميبينين كه كدها نشون داده ميشن اما همش چرتو پرت هست و كسي از اووون چيزي نميفهمه....

يعني واقعا راهي وجود نداره كه مثلا چند خط كد به ابتداي يك كلاس اضافه شه يه يك decompilser رو گيج كنه ؟
كسي راهي ميتونه پيشنهاد كنه؟

gdevnb
سه شنبه 14 خرداد 1387, 13:10 عصر
برنامه nlite رو گذاشتم كه با .net نوشته شده و كارش customize كردم سي دي win xp هست....اگه اين نرم افزار رو با decompilser مثل reflector باز كنين ميبينين كه كدها نشون داده ميشن اما همش چرتو پرت هست و كسي از اووون چيزي نميفهمه...
سلام
اگه دنبال ابزاری میگردی که این کار رو انجام بده از SmartAssembly استفاده کن.
در هر صورت هیچ راهی که کاملاً مطمئن باشه وجود نداره.
فقط سعی کن کرکر رو خسته کنی.
موفق باشی

hdv212
سه شنبه 14 خرداد 1387, 13:15 عصر
من که با ابزار CodeVeil (http://www.xheo.com/products/codeveil/) کار کردم نمیتونه Reflector بازش کنه، اصلا اونو به عنوان اسمبلی دات نت نمیشناسه!

gdevnb
سه شنبه 14 خرداد 1387, 13:51 عصر
من که با ابزار CodeVeil (http://www.xheo.com/products/codeveil/) کار کردم نمیتونه Reflector بازش کنه، اصلا اونو به عنوان اسمبلی دات نت نمیشناسه!
بله DotNet Reactor هم همین کارو انجام میده.ولی باز هم کاملاً نمیشه رو این ایزارها حساب باز کرد.
من خودم از DotNet Reactor استفاده می کنم.

combo_ci
سه شنبه 14 خرداد 1387, 15:40 عصر
ولي در هر صورت كار با اين نرم افزار ها قابل اطمينان نيست ....بايد يه راهي پيدا كرد كه توي كد decompiler ها رو گيج كرد

hdv212
سه شنبه 14 خرداد 1387, 15:51 عصر
بله DotNet Reactor هم همین کارو انجام میده.ولی باز هم کاملاً نمیشه رو این ایزارها حساب باز کرد.
من خودم از DotNet Reactor استفاده می کنم.
یادم نیست که چرا خودم از DotNet Reactor استفاده نکردم ولی به هر حال، ابزار CodeVeil (http://www.xheo.com/products/codeveil/) همانطور که در وب سایت شرکت سازنده ش میتونید بخونید، عملیات بیشتری رو روی اسمبلی شما در برابر Decompile شدن انجام میده :
Full MSIL encryption. After obfuscation with a standard obfuscator, your MSIL code is still exposed to readers like ILDASM and Reflector. With CodeVeil your MSIL is encrypted and cannot be read.
Resource and String Encryption. Now your data is protected too! Strings embedded in your code, and resources like images and form text can now be encrypted.
Blob Encryption. CodeVeil can selectively encrypt data stored in the blob heap. This data includes parameters for attributes, default values for fields, and method signature information.
Encrypt both EXEs and DLLs. Most encryption technologies require full control of the application to work, thus eliminating use by component developers. CodeVeil works hand in hand with the .NET runtime to protect either EXEs or DLLs.
Obfuscation. CodeVeil will still obfuscate the names of your public classes, methods, properties and fields.
Anti-Debugging, Anti-Tracing. Something that cannot be achieved with other obfuscators. CodeVeil includes anti-debugging and anti-tracing logic during the decryption process.
Modification Resistance. Strong names provide guarantees only to the end user. CodeVeil creates dependencies on the unmodified source so that a user cannot modify your assembly without making it completely unusable.

علاوه بر این من ابزار Code Generator رو که با CodeVeil محافظت کردم، نه تنها در Reflector باز نشد، بلکه Fox هم اونو نشناخت.

gdevnb
سه شنبه 14 خرداد 1387, 17:05 عصر
سلام
البته من با CodeVeil مشکلاتی داشتم ولی خوب بعضی امکاناتی که DotNet Reactor داره اون نداره.و به نظر من کار قوی تری eziriz انجام داده.CodeVeil ورژن 1.3 ش که اومد سریع کرک شد و تو اینترنت پخش شد در صورتی که آخرین ورژنی از DotNet Reactor که کرکشو من دیدم 1.9 بود که ورژنش در حال حاضر 3.8 هستش(شاید هم من ندیده باشم)
DotNet Reactor از همون مکانیسمی که از کد شما محافظت میکنه از خودش محافظت میکنه.
http://www.eziriz.com/dotnet_reactor.htm
در هر صورت برای اینها ابزارهایی وجود داره که کل کدتونو ازش بیرون میکشن.
من پیشنهاد میکنم اول با Dotfuscator کدتون رو یه سری تغییرات بدید بعد با این ابزارها کار رو تکمیل ترش کنید.
زیاد هم حساس نباشید.

top7news
سه شنبه 14 خرداد 1387, 19:23 عصر
سلام به دوستای خوبم
دوستای عزیز hdv212 , gdevnb شما هر دو دوتا ابزار خوب رو معرفی کردین که مطمئنا همه استفاده میکنن
منم یه خواهش و یه پیشنهاد دارم
شما هر دوتون با این نرم افزار ها کار کردین و جواب گرفتین
میشه برای ما ها که تازه کاریم یه خلاصه کوچیک و مختصر از طرز کار با این نرم افزار ها رو اینجا بذارین
منم خیلی به طرز استفاده از این دو تا نرم افزار و مشابه اونا احتیاج دارم
ممنون

gdevnb
پنج شنبه 16 خرداد 1387, 14:18 عصر
سلام
کار کردن با این نرم افزارها سخت نیست مثلاً در .net reactor تو قسمت Main assembely اسمبلی اصلی پروژه رو میزارید و در قسمت Additional Files تمام فایلها و اسمبلی های دیگه ای رو که قراره تو فایل خروجی پک بشه رو قرار می دید(بانک اطلاعاتی رو تو این قسمت نذارید و البته بعضی از کمپوننت ها )
در قسمت Quake Setting گزینه های Necro bit و Obfuscation رو در صورت نیاز تیک بزنید(این کار رو حتماً انجام بدید)
در قسمت License Manager می تونید روی پروژه قفل بزارید
Evaluation Time
Expiration Date
Hardware Look
Number Of use
پس از تنظیمات روی دکمه Protect کلیک کرده تا کار کامل شه.

موفق باشید.

mohammed
یک شنبه 24 شهریور 1387, 13:53 عصر
سلام
ابتدا از ارائه اطلاعات فوق از همگی تشکر می کنم برای من بسیار مفید بودند.

سپس:

دوستان عزیزی که ابزارهای مختلف را تست کرده اید ممکن است مقایسه ای بین dotfoscator که مایکروسافت ویرایش community آنرا در vs.net قرار داده است با ابزارهای پیشنهادی فوق بدهید؟

آیا این ابزار (لا اقل ویرایش Professional این ابزار) خیلی ضعیف است؟ اگر بلی، پس چرا مایکروسافت آنرا انتخاب کرده است. :متعجب:

قاعدتا بحث قیمت نباید باشد چون، خوب قیمتش را از خریدار (یعنی اون برنامه نویسای اون ور آبی که مثل ماها بی کپی رایت نیستند :لبخند:) می گیرد و چون روی تیراژ است پس نباید چندان گران در بیاید.

با تشکر

mohammed
دوشنبه 25 شهریور 1387, 08:00 صبح
کسی از dotfoscator استفاده نکرده است؟ یا من سوالم خیلی پیش پا افتاده بود؟:افسرده:

Amir Oveisi
دوشنبه 25 شهریور 1387, 12:09 عصر
dotfuscator ها براساس تغير نام فيلدها كار ميكنن و فقط درك كد رو سخت ميكنن، مثلا مياد اسم متغير ها و متدها رو تغير ميده. ولي نرم افزارهاي ديگه معمولا اعمال pa
ck و compress انجام ميدن.
مطمئنا تركيب اين اعمال نتيجه بهتري خواهد داشت.
البته dotfuscator هايي هستند كه به جاي rename ساده از رمزنگاري استفاده ميكنن.
روش هاي فراواني براي محافظت از كد وجود داره، مثلا با يه تغير كوچيك تو كد مياني برنامتون ميتونين جلوي باز شدن اون تو reflector و xenocode رو بگيرين!
به هر حال نبايد فراموش كنيم كه هر موجودي قابل disasemble شدنه حتي برنامه هامون!

موفق باشيد
jooje

fat_roze2000
دوشنبه 25 شهریور 1387, 14:51 عصر
http://barnamenevis.org/forum/showthread.php?p=595138#post595138

mohammed
سه شنبه 02 مهر 1387, 11:17 صبح
dotfuscator ه
روش هاي فراواني براي محافظت از كد وجود داره، مثلا با يه تغير كوچيك تو كد مياني برنامتون ميتونين جلوي باز شدن اون تو reflector و xenocode رو بگيرين!

jooje

با تشکر از جوابی که دادید

اگر امکان دارد یک توضیح بیشتری در مورد آن تغییر کوچیک فوق الذکر بفرمایید.

bhroz1234
جمعه 22 مرداد 1389, 13:54 عصر
سلام
من یه برنامه رو دیکامپایل کردم احساس میکنم بعضی از کد ها اشتباه هستند ایا به علت استفاده از برنامه
های محافظ کد میتواند همچین حالتی اتفاق بیوفته