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

نام تاپیک: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استودیو)

  1. #1

    Question درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استودیو)

    با سلام و احترام؛
    دوستان، آیا ابزاری وجود دارد تا بوسیله آن "نام" تمامی کلاس ها، متدها و متغیرهای سورس پروژه را قبل از کامپایل "تغییر نام تصادفی" بتوان داد؟
    به دنبال نوعی Obfuscate نام ها قبل از ساخت فایل exe یا dll هستم.
    هدف این است که پس از این کار، حتی در صورت unpack شدن نرم افزار، کرکر با مجموعه ای از کلاس ها و متدهای نامفهوم روبرو شود و نتواند براحتی سورس را فهم کند.
    معمولا Obfuscator ها روی exe و dll کار می کنند که در صورت unpack شدن، کرکر به یک سورس خوانا و تر و تمیز برنامه نویس می رسد.

    روش کار را به این صورت فرض کردم که ابتدا از سورس اصلی پروژه یک کپی بگیریم، سپس تمامی اجزا پروژه کپی شده نام های نامفهوم بگیرند و سپس فایل exe را بسازیم و نهایتا با یکی از نرم افزارهای قوی Obfuscate را انجام دهیم.
    آخرین ویرایش به وسیله محمد تارزان : چهارشنبه 03 بهمن 1397 در 11:31 صبح دلیل: اصلاح یک لغت

  2. #2

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

    برای چه پلت فرمی می خواهید چنین کاری انجام بدید؟
    معمولا Obfuscator ها قبل از باینری هم می توانند برنامه را مبهم کنند حداقل من با سی شارپ و جاوا و سی پلاس پلاس که کردم شده هرچند که احتمال باگ های منطقی راهم زیاد میکنه!
    بنابراین این ابزار فقط برای باینری فایل پروژه نیستند! روی سورس هم کار میکنند البته اگر برنامه حرفه ای باشه و تنظیمات قوی داشته باشه، حتما باید این تنظیمات را تا به stable رسیدن خروجی باینری از لحاظ به حداقل رسیدن خطا های منطقی انجام دهید.

  3. #3

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

    ممنون جناب مهندس شیری، مثلا برای Win Form به زبان VB.Net یا C#‎.Net ، اگر نرم افزار و راهکار مناسبی که مورد تایید شما هست بفرمایید ممنون میشم. البته بنده برخی مطالب شما و سایر دوستان را در خصوص مبهم سازی رو توی این سایت خوندم. اگر جمع بندی کنید ممنون میشم.

  4. #4

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

    مطابق لینک https://github.com/0xd4d/de4dot#supp...scatorspackers ، می توان براحتی خیلی از Obfuscator های معروف را کله پا کرد. پیشنهاد شما برای جلوگیری از کرک آسان نرم افزار چیست؟

  5. #5

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

    نقل قول نوشته شده توسط محمد تارزان مشاهده تاپیک
    ممنون جناب مهندس شیری، مثلا برای Win Form به زبان VB.Net یا C#‎.Net ، اگر نرم افزار و راهکار مناسبی که مورد تایید شما هست بفرمایید ممنون میشم. البته بنده برخی مطالب شما و سایر دوستان را در خصوص مبهم سازی رو توی این سایت خوندم. اگر جمع بندی کنید ممنون میشم.
    ببیند دوست عزیز!
    واقعیت این هست که قبلا هم گفتم حفاظت از کد های برنامه هایی که به یک زبان میانی مثل همین CLI در سی شارپ نوشته میشوند اصولا امکانپذیر نیست! بنابراین شما هرقدر هم که از Packer / Obfuscator ها استفاده کنید بالاخره با یک ابزار میشه سورس را استخراج کرد.
    به همین علت پیشنهاد من این هست که بهتره که اگر نرم افزارتون را به صورت متعامد(یعنی نرم افزار را با استفاده از الگوهای مناسب مثل MVC,MVVP,... طراحی کرده باشید) بنا براین باید بتونید به راحتی لایه منطق و اصولا الگوریتم های مهم و حساس نرم افزار را با استفاده از زبانهایی مثل ++C,C به کتابخانه هایی مثل Shared Object , Static Library , Dynamic Link Library تبدیل کنید! تا به این صورت نتونن به سورس کدهای مهم شما دسترسی پیدا کنند چرا که تابحال ابزاری که بتونه از روی کد اسمبلی خروجی سورس کد سی ویا سی پلاس پلاس تولید کنه نداریم! دلیلش هم ساده است چونکه وقتی شما کد را به اسمبلی تبدیل میکنید دیگه توانایی شناسایی صد در صدی سورس کدهای اصلی وجود ندارد برای مثال تصور کنید که 8=3+5 حالا چندتا راه جبری وجود داره تا به 8 برسیم مثلا 2+6 و 7+1 و 4+4 و ... حالا تصور کنید برنامه دی کامپایلر وقتی به چنین دستوراتی برخورد میکنه!

    int main()
    {
    int a = 5;
    int b = 3;
    int c = a+b;
    return 0;
    }

    خوب حالا خروجی اسمبلی و ماشین کدش یه چیزی شبیه این میشه!...

    LOC: MACHINE CODE ASM SOURCE
    0100: B0 05 mov al, 5
    0102: B3 0A mov bl, 3
    0104: 02 D8 add bl, al

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

  6. #6

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

    از پاسخ خوب شما ممنونم، سعی میکنم از راهنماییتون به نحو احسن استفاده کنم. ضمنا میخواستم نظر شما رو در مورد کارآمدی مبهم ساز obfuscar بدونم و با توجه به "اپن سورس" بودن اون، در چه سطحی از تغییرات می تونیم الگوریتم مبهم سازی اون رو سفارشی سازی کنیم.

  7. #7

    نقل قول: درخواست ابزاری برای تغییر نام همه کلاس ها، متدها و متغیرها قبل از کامپایل (برای ویژوال استو

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

تاپیک های مشابه

  1. سوال: تغییر ورژن net framwork در ویژوال استودیو 2010
    نوشته شده توسط goodarziasl در بخش C#‎‎
    پاسخ: 4
    آخرین پست: چهارشنبه 14 تیر 1396, 18:18 عصر
  2. پاسخ: 2
    آخرین پست: پنج شنبه 22 مرداد 1394, 10:02 صبح
  3. پاسخ: 7
    آخرین پست: سه شنبه 15 بهمن 1392, 17:08 عصر
  4. مشکل در تغییر زبان ویندوز 7 از فارسی به انگلیسی و به عکس جهت کد نویسی در ویژوال استودیو
    نوشته شده توسط masoodp666 در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 0
    آخرین پست: سه شنبه 24 خرداد 1390, 12:04 عصر

برچسب های این تاپیک

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

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