ساخت پلاگین برای حذف مشکل امنیت فایلهای بیلدر

m javad

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

loo30fer

کاربر متخصص مولتی مدیا بیلدر
میشه در مورد نحوه تامین امنیت فایلهای بیلدر توضیح بدین چون همینطور که میدونید پروژه ما رو برای خودش تفسیر میکنه و اگه تخییری تو این پروژه یا هگزش بوجود بیاد برنامه یا اجرا نمیشه یا با خطایی مواجه میشه.
ولی فکر میکنم که مانند Molebox عمل کردین؟
ولی خودم برای پروژه هایی که مینویسم همه کارکردها رو به پلاگین میدم حتی دستورات خود بیلدر رو و اگه فایل من رو کسی دکمپایل کنه چیزی جز PluginRun دستگیرش نمیشه و تمامی پلاگینها از کار میفتن.
به امید اتمام پلاگینتون هستم تا کارتون رو ببینم.
آرزوری موفقیت رو برای شما دارم.
 

Aref_Alikhani

Well-Known Member
میشه گفت من هیچی از پلاگین نویسی نمی دونم...اما به نظر با پلاگین فکر نکنم بشه...اما اینکه یه برنامه بسازید که روی فایل compile شده یه تغییراتی ایجاد کنه یه چیزی...به هر حال شاید هم عملی باشه.

تشکر فراوان...:rose:
 

m javad

کاربر متخصص
میشه در مورد نحوه تامین امنیت فایلهای بیلدر توضیح بدین چون همینطور که میدونید پروژه ما رو برای خودش تفسیر میکنه و اگه تخییری تو این پروژه یا هگزش بوجود بیاد برنامه یا اجرا نمیشه یا با خطایی مواجه میشه.
ولی فکر میکنم که مانند Molebox عمل کردین؟
خیر از روشی مانند روش Molebox استفاده نمیکنم
چون اون روش مشکلات خاص خودش رو داره که همه میدونیم و من در اون باره توضیح نمیدم
روش کار بسیار سادست، حتی ساده تر از اون چیزی که فکرش رو بکنید
البته فعلا در مورد نحوه کار توضیحی نمیدم
تنها نکته ارزشمند توی این روش اینه که پلاگین قدرت تشخیص کدها رو بر اساس برنامه ای که اولین بار براش تعریف میشه رو داره
یعنی وقتی پلاگین آماده میشه، ما تنها یه فایل dll داریم که همه اون رو دارند
وقتی از این پلاگین استفاده میشه این پلاگین تنها برای همون بار اول اطلاعات رو ذخیره میکنه و دیگه اگر دیکامپایل بشه کار نمیده
این اصل روش استفاده از این پلاگین هست، نه روش کار

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

ali guard

Member
بانظر من پلاگینی جالبی میشه‌ موافق باشید
من هم برای خودم یك جنید جیزی نویشتم من هم اگر فرصتش كردم یك كار برای بالا بردن امنیت برنامه‌ انجام میدم همین جامیزرم
 

ali guard

Member
میشه در مورد نحوه تامین امنیت فایلهای بیلدر توضیح بدین چون همینطور که میدونید پروژه ما رو برای خودش تفسیر میکنه و اگه تخییری تو این پروژه یا هگزش بوجود بیاد برنامه یا اجرا نمیشه یا با خطایی مواجه میشه.
ولی فکر میکنم که مانند Molebox عمل کردین؟
ولی خودم برای پروژه هایی که مینویسم همه کارکردها رو به پلاگین میدم حتی دستورات خود بیلدر رو و اگه فایل من رو کسی دکمپایل کنه چیزی جز PluginRun دستگیرش نمیشه و تمامی پلاگینها از کار میفتن.
به امید اتمام پلاگینتون هستم تا کارتون رو ببینم.
آرزوری موفقیت رو برای شما دارم.

این كار دروست هست من هم همین روش ایستفاده‌ میكنم ولی یك نقس دارد باید كاری بكنید كه‌ اون dll
فقط تو بروزه‌ی شوما بشه‌ اجرا كرد مسلن اگر توی یك پروژه‌ی دیگه‌ بكار بردن كار نكند چون شاید بیان عكسو اینتر فیس برنامه‌ كاملا تغیر بدن یانی در كل باید كاری بكنید فقط روی اولین فایل اجرای كار كند یانی اگر ریسورس هم كردن نتونن جیزی با برنامه‌ اضافه‌ كنن موافق باشید
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
این كار دروست هست من هم همین روش ایستفاده‌ میكنم
بنده تو این پست گفتم و الانم میگم که این همون روشی بود که شما استفاده کرده بودین و یک نمونه رو برای بنده ارسال کردین ولی فقط یک نمونه بود و اینکه چطور مقادیر رو به برنامه دیگه مانند برنامه های فلش که دستورات بیلدر رو بهش میدیم و اون به برنامه ارسال میکنه رو باید فرستاد رو خودم دنبال کردم و به نتیجه رسیدم. از این بابتم ازتون ممنون جناب ali guard :rose:
ولی یك نقس دارد باید كاری بكنید كه‌ اون dll
فقط تو بروزه‌ی شوما بشه‌ اجرا كرد مسلن اگر توی یك پروژه‌ی دیگه‌ بكار بردن كار نكند چون شاید بیان عكسو اینتر فیس برنامه‌ كاملا تغیر بدن یانی در كل باید كاری بكنید فقط روی اولین فایل اجرای كار كند یانی اگر ریسورس هم كردن نتونن جیزی با برنامه‌ اضافه‌ كنن
اگه تو متن بنده توجه کرده بودین گفتم که اگه فایل من رو کسی دکمپایل کنه چیزی جز PluginRun دستگیرش نمیشه و تمامی پلاگینها از کار میفتن.
یعنی اگه کسی بخواد مجددا اون پروژه رو کمپایل کنه یا در حالت Debug دستوراتی رو که به برنامه ارسال بشه رو ببینه بی فایدست چون پلاگین همون اول هنگام لود پلاگین تو برنامه متوجه اجرا شدن توسط برنامه دیگر میشه و همه پلاگین ها باعث کرش کردن خودشون میشن تا یک پیغام Send Error ظاهر بشه و برنامه سریع بسته بشه. البته یک چیز دیگه هم که بهش اضافه کردم کد کردن اطلاعات ارسالی بوده چون اگه این اطلاعات و دستورات رو به شکل معمول به تابع بدیم که به برنامه ارسالش کنه اگه مهاجم برنامه مارو از رم Dump کنه یا از طریق برنامه های هگز عمل کنه یا برنامه های دکمپایلر میتونه تمامی اون دستورات رو ببینه و بفهمه که پلاگینها چیکار میکننن و کار اون پلاگین ها مون بی فایده میشه.
 
آخرین ویرایش:

m javad

کاربر متخصص
سلام

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

میشه‌ بیشتر توزیح بدید مگر نمیتواند تواند باد از دیكامپایل كردن تو خود پروزه‌ی شوما دوباره‌ كامپایل كند ؟

چرا دقیقا میشه. این همون اشکال کار تو اون روش هست.
یه مثالی میزنم:
روشی که شما و آقای لوسیفر به کار میبرید این هست که تمام کدهاتون رو داخل یه dll میکنید و از اون استفاده میکنید
این کار چنتا مشکل داره:
1- اینکه برای هر برنامه باید بشینید و این کار رو بکنید و یه پلاگین بنویسید و دستورات داخل پلاگین رو تغییر بدید.
2- اینکه این کار برای کسانی که با دلفی کار میکنن میسر هست و دوستانی که با دلفی کار نکردن نمیتونن از این روش استفاده کنن
3- اینکه فرض کنیم شما دستوراتتون رو داخل dll بردید و بعد پلاگین رو ساختید
حالا یه نفر میاد و برنامه رو دیکامپایل می کنه
درسته که نمی تونه تو اسکریپت نویسی تغییری بده، ولی میتونه بیاد و مثلا اونجایی که نامتون رو وارد کردید رو تغییر بده و نام خودش رو بزاره و یا رنگ یا عکس بکگراند برنامه رو تغییر بده و یا موقعیت اشیا رو تغییر بده و دوباره فایل رو کامپایل کنه
حالا برنامه همون کارها رو که قبلا انجام میداد، باز هم میده با این تفاوت که یه سری از تغییرات هم توی اون اعمال شده
اما تو این پلاگین این اتفاق امکانپذیر نیست
یعنی اگر کسی برنامه رو دیکامپایل کرد و تغییر توی اون اعمال کرد و بعد دوباره کامپایلش کرد دیگه پلاگین و در نتیجه دستورات مربوط به اسکریپت نویسی از کار خواهد افتاد وبرنامه دیگه کاربرد نداره
 

ali guard

Member
اما تو این پلاگین این اتفاق امکانپذیر نیست
یعنی اگر کسی برنامه رو دیکامپایل کرد و تغییر توی اون اعمال کرد و بعد دوباره کامپایلش کرد دیگه پلاگین و در نتیجه دستورات مربوط به اسکریپت نویسی از کار خواهد افتاد وبرنامه دیگه کاربرد نداره
ولی میشه‌ كاری كرد كه‌ ریسورس شود نشه‌ دوباره‌ كامپایلا كرد
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
میشه‌ بیشتر توزیح بدید مگر نمیتواند تواند باد از دیكامپایل كردن تو خود پروزه‌ی شوما دوباره‌ كامپایل كند ؟
چرا میتواند - در موردش که توضیح دادم
3- اینکه فرض کنیم شما دستوراتتون رو داخل dll بردید و بعد پلاگین رو ساختید
حالا یه نفر میاد و برنامه رو دیکامپایل می کنه
درسته که نمی تونه تو اسکریپت نویسی تغییری بده، ولی میتونه بیاد و مثلا اونجایی که نامتون رو وارد کردید رو تغییر بده و نام خودش رو بزاره و یا رنگ یا عکس بکگراند برنامه رو تغییر بده و یا موقعیت اشیا رو تغییر بده و دوباره فایل رو کامپایل کنه
حالا برنامه همون کارها رو که قبلا انجام میداد، باز هم میده با این تفاوت که یه سری از تغییرات هم توی اون اعمال شده
خیر اینطور نیست چون مهاجم اگه مجددا همون پروژه رو بدون کوچیکترین تغییری کمپایل کنه اون dll ها دیگه کارشون رو انجام نمیدن.
برای عکسها و لیست باکس و ... هم میشه از پلاگین کمک گرفت یعنی عکسها توسط پلاگین نمایش داده بشه و لیست باکسم همینطور ولی همینطور که گفتین باید برای هر برنامه این رو پیاده کرد و دستورات رو تو dll ها تغییر داد و اینکار زمان بر هست ولی امنیت بسیار بالایی رو داره ولی استفاده از این روش برای پروژه های کوچیک زیاد مناسب نیست هم به خاطر زمان بر بودنش و هم فکر نمیکنم کسی حاضر باشه برای چنین پروژه هایی هزینه زیادی رو متقبل بشه.
 
آخرین ویرایش:

m javad

کاربر متخصص
ولی میشه‌ كاری كرد كه‌ ریسورس شود نشه‌ دوباره‌ كامپایلا كرد
خب این همون کاری هست که این پلاگینم میکنه
خیر اینطور نیست چون مهاجم اگه مجددا همون پروژه رو بدون کوچیکترین تغییری کمپایل کنه اون dll ها دیگه کارشون رو انجام نمیدن.
میشه در مورد اون dll ها توضیح بدید، منظورتون پلاگین های دیگری هست که در برنامه استفاده کردید
ولی استفاده از این روش برای پروژه های کوچیک زیاد مناسب نیست چون اینکار زمان بره و فکر نمیکنم کسی حاضر باشه برای چنین پروژه هایی هزینه زیادی رو متقبل شود.
این کار اصلا زمانبر نیست
با یه جابجایی کد صورت میگیره و قرار نیست کسی بشینه خودش dll بسازه - فکر کنم حدود 2 دقیقه زمان بخواد یا شایدم کمتر
البته قبول دارم که پروژه های کوچیک احتیاجی به این کارها ندارند
 

loo30fer

کاربر متخصص مولتی مدیا بیلدر
میشه در مورد اون dll ها توضیح بدید، منظورتون پلاگین های دیگری هست که در برنامه استفاده کردید
خیر تمامی dll های خودم هست که میسازم و تو پروژه استفاده میکنم و میام این dll ها رو جوری به هم ربط میدم که با تداخل یکیشون یا از کار افتادن یکی از پلاگینها دیگر پلاگینها هم براشون نداخل در کار پیش بیاد و از کار بیفتن اینطوری امنیت برنامه در برابر کرکر بسیار بالا میره اتفاقا یک بار میخواستم یک مجموعه نرم افزاری رو بدین شکل پیاده کنم که میتونستم 100% تضمین کنم که هیچ کرکری قادر به کرک کردن برنامه نیست چون هر برنامه رو به شکل Loader پیاده میکردم تا فایلها تنها توسط پلاگینها قابل اجرا باشن و تمامی کارکردها رو پلاگینها انجام میدادن و برای هر برنامه هم یک پلاگین پیاده میشد و تمامی پلاگینها به واسطه یکدیگر کار میکردن یعنی اگه یک پلاگین کرک میشد یا تغییری درش ایجاد میشد تمامی پلاگینها از کار میفتادن یعنی دیگه هیچ دستور و کارکردی رو انجام نمیدادن. پس اگه ما 1000 تا برنامه رو داشته باشیم بیش از 1000 تا پلاگین داریم که اگه مهاجم میخواست شروع به کرک کار ما کنه باید تمامی اون 1000 تا پلاگین رو کرک کنه حالا کی پیدا میشه که هم بتونه چنین وقتی رو صرف کنه و با قدرت و امنیتی که براش پیاده میشد بتونه موفق به کرک بشه اگرم بشه در آخر بی خیال میشه ولی این همه زحمت برای یک مجموعه نرم افزاری ارزش نداره چون کاربر این حق رو داره بتونه از تمامی برنامه های مجموعه نرم افزاری براحتی استفاده کنه یا روی سیستمش کپی کنه مگه اینکه یکی بخواد قدرت کارش رو به نمایش بذاره.
این کار اصلا زمانبر نیست
با یه جابجایی کد صورت میگیره و قرار نیست کسی بشینه خودش dll بسازه - فکر کنم حدود 2 دقیقه زمان بخواد یا شایدم کمتر
البته قبول دارم که پروژه های کوچیک احتیاجی به این کارها ندارند
همیشه که تعداد دستوراتمون یکی نیستن و نمیشه فقط کدها رو تغییر داد چون باید تمامی دستورات به صورت کد شده به پلاگین داده بشن البته اینکه بخوایم دستی اینکار رو انجام بدیم اصلا معقول نیست چون برای چنین کارهایی باید یک برنامه براش نوشت تا ما تنها کاری رو که میکنیم دادن دستوراتمون باشه و بقیه کارها رو برنامه انجام بده اینطوری کار ما بسیار آسون میشه.
 

m javad

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

mmb4us

Member
سلام بر آقا جواد اگه بتونی این کار رو بکنی،لطف بزرگی در حق ما بیلدر کارا کردی ،چون یکی از بزرگترین دغدغه ی ما بیلدر کارا دیکامپایل شدن برنامه ها مونهامیدوارم که تو این کارت موفق باشیراستی می خواستم بدونم اگه همه ی کارات درست پیش بره چند وقت دیگه این پلاگینت آماده میشهیه سوال دیگه هم داشتم اگه برنامه مون دست یه حرفه ای بیفته چقدر وقتش گرفته میشه تا برنامه مون رو دیکامپایل کنه
 

m javad

کاربر متخصص
سلام بر آقا جواد اگه بتونی این کار رو بکنی،لطف بزرگی در حق ما بیلدر کارا کردی ،چون یکی از بزرگترین دغدغه ی ما بیلدر کارا دیکامپایل شدن برنامه ها مونهامیدوارم که تو این کارت موفق باشیراستی می خواستم بدونم اگه همه ی کارات درست پیش بره چند وقت دیگه این پلاگینت آماده میشهیه سوال دیگه هم داشتم اگه برنامه مون دست یه حرفه ای بیفته چقدر وقتش گرفته میشه تا برنامه مون رو دیکامپایل کنه
ممنون از لطف شما
این پلاگین رو سعی میکنم تا هفته آینده و یا نهایتا دو هفته آینده آماده کنم
امنیت این روش خیلی بالاست
اولا اگر کسی بخواد این روش رو دور بزنه و به اطلاعات دسترسی پیدا کنه باید دوکار رو انجام بده
اول اینکه پلاگینی که با دلفی نوشتم رو به سورسش دسترسی پیدا کنه که اینکار کار ساده ای نیست، چون من پلاگینهام رو با روش خودم پک میکنم و چون روش معمول و با استفاده از برنامه های پک کننده نیست کار بسیار دشواری هست
و دوم اینکه بتونه به الگوریتم کد کردن اطلاعات توسط پلاگین پی ببره.
الگوریتمی که دارم به کار میبرم بسیار پیشرفته هست و به این راحتی کسی نمیتونه اون رو بدست بیاره
یه توضیح کوتاه بدم که این الگوریتم یه کلمه رو به عنوان رمز گرفته و بر اساس اون اطلاعات رو دیکد میکنه و یک فایل رو برای کاربر میسازه
کلمه رمز هیچ جای اون فایل ثبت نمیشه و اگر کسی خودش هم رمز رو فراموش کرد دیگه به هیچ طریق فرمولی نمیشه به اطلاعات و رمز فراموش شده دسترسی پیدا کرد (روشی مانند روش به کار برده شده توی فایلهای zip که کلمه رمز توی فایل ثبت نمیشه و اگر رمز رو فراموش کردی باید از روشهای چک کردن رندم و آزمون و خطا استفاده کنی که عملا هیچ وقت 100% نیست)
البته این روش افزایش حجم برای اطلاعات رو نداره و نکته مهم تو این روش اینکه روش این دیکد کردن ثابت نیست.
مثلا اگر شما متن mohammad javad رو با رمز A2bf دیکد کنید
یکبار Iس‘,D%¬i70  و بار دیگه ']œg”)2‘¸Rè"Iس‘ و هر بار یه عبارت رو برمیگردونه
ولی هر کدوم از عبارات برگشت داده شده رو با همون رمز A2bf کد کنید همون عبارت mohammad javad رو برمیگردونه.
 

loo30fer

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

ehsan_axe

Member
خیلی جالب و پرکاربرد ....
مخصوصا برای ما ایرانی هایی که به راحتی پروژههای دیگران را (م ی د ز د ی م) و به نام خودمون ثبتش میکنیم:mad:
 

m javad

کاربر متخصص
با سلام به همه دوستان
پلاگین رو تقریبا کامل کردم
تنها مونده تست نهایی امنیت فایل و ساخت راهنما برای پلاگین
برنامه دیکد رو هم ساختم که یه نمونه عکسش رو ضمیمه کردم
سعی می کنم هرچه زودتر تمومش کنم

attachment.php
 

پیوست ها

  • abtin1.jpg
    abtin1.jpg
    55.5 کیلوبایت · بازدیدها: 39

M_cover

Member
دوست عزیز m javad از تمام زحمات شما برای خدمت به کاربران مالتی مدیا سپاسگذارم
برنامه دیکد رو هم ساختم که یه نمونه عکسش رو ضمیمه کردم
این برنامه decode برای چی است ؟ مبدل کد ها یا دیکد اطلاعات اینکد شده پلاگین
اگر اطلاعات اینکد شده قرار باشد دیکد شود پس ساخت این پلاگین بیهوده است کاربران چیزی را لازم دارنند که بتوانند به آن اطمینان کنند

با تشکر:rose:
 

جدیدترین ارسال ها

بالا