PDA

View Full Version : استفاده از dll در برنامه



mousa1992
پنج شنبه 09 شهریور 1391, 13:59 عصر
سلام دوستان
متد هایی رو برای جلوگیری از استفاده از برنامه بر روی سیستم های متفاوت نوشته ام و برای جلوگیری از مشاهده ی کدها در قالب dll قرار دادم
متدی وجود دارن که به صورت public تعرف شده برای برگرداندن کد نهایی تولید شده و قرار نیست که با استفاده از برنامه هایی بتوان خروجی dll رو دید و یا از اون در برنامه های دیگه استفاده بشود ، برای این کار چه راهکاری رو پیشنهاد میکنید ؟؟
ممنون از توجهتون

nunegandom
پنج شنبه 09 شهریور 1391, 18:43 عصر
سلام
دقیقا متوجه نشدم قراره چیکار کنی، ولی با استفاده از encode فکر کنم بتونی کاری انجام بدی، و همینطور با ارسال یه سری پارامتر اولیه بتونی از دور زدنه برنامه‌ت جلوگیری کنی

mousa1992
جمعه 10 شهریور 1391, 10:24 صبح
ممنون از پاسخ
توضیحات بیشتر :
dll ای که ساختم با استفاده از متد هایی کد امنیتی رو برمیگردونه برای اینکه اشکار نشه از چه روشی استفاده شده اونو در قالب dll نوشتمش
و dll همونطور که گفتم مقداری رو برمیگردونه خب این مقدار برگشتی نباید بشه با هر برنامه ای خوندش !!
چیکار کنم برای این مشکل ؟؟
ممنون از راهنمایی دوستان منتظر پاسختون هستم

nima.sh
جمعه 10 شهریور 1391, 10:59 صبح
سلام دوست عزیز....
اگه میخوای از برنامه محافظت کنی من یه پیشنهاد دارم:
میتونی یه DLL بذاری برای برنامه اصلی به دور از دید کاربر،کار این DLL اینه که از برنامه محافظت کنه،چطور...؟
اگه فایل های این برنامه تغییری به وجود اومد DLL بعدی فعال میشه،کار اون DLL خرابکاریه،حالا از هر نوعی که خودت دوست داری،میتونی یه DLL دیگه بذاری،کار اون DLL اینه تمامی اطلاعات سیستم رو بگیره یه جا ذخیره کنه هر دقیقه بررسی کنه که سیستم به اینترنت متصل هست یا نه؟اگه متصل بود اون فایلی رو که اطلاعات سیستم در اون ذخیره شده بود رو برات send کنه....
یادت باشه DLL ها رو حتما تو startup رجستری بذار....
سوالی هست من در خدمتم...
موفق باشی...

mousa1992
جمعه 10 شهریور 1391, 11:23 صبح
سلام دوست عزیز
ممنون از پاسخ
چطوری dll رو از دید کاربر پنهان کنم ؟

کار این DLL اینه که از برنامه محافظت کنه،چطور...؟
خب این dll سریال های سخت افزار های سیستم رو میگیره و تغییراتی رو روش انجام میدم و این میشه رمز سریال برنامه که کاربر اطلاعاتی رو که من میخوام برام سند میکنه و سریال رو دریافت میکنه و برنامه در هر اجرا سریال وارد شده رو با سریالی که dll میده چک میکنه در صورت دست بودن برنامه کار میکنه

nima.sh
جمعه 10 شهریور 1391, 12:13 عصر
اون DLL دوم رو که بهت گفتم،خرابکاری....
میتونی همون فایل اصلی رو پاک کنه یا یه سورس دیگه بهش نشون بده،بسته به سلیقه و فکر خودت داره که چیکار کنی...
موفق باشی...

nunegandom
جمعه 10 شهریور 1391, 12:33 عصر
این کارتو راه میندازه
http://www.codeproject.com/Articles/32744/Driver-to-Hide-Processes-and-Files

Mahmoud.Afrad
جمعه 10 شهریور 1391, 19:10 عصر
سلام

میتونی داخل متدهای dll تشخیص بدی dll توسط چه برنامه ای فراخوانی میشه اگر برنامه ای که dll را فراخوانی می کند برنامه شما بود کدهای شما اجرا بشه وگرنه هیچ.
if (System.Reflection.Assembly.GetCallingAssembly().F ullName.Split(',').FirstOrDefault() == "application name")
{
// ...
}

mousa1992
شنبه 11 شهریور 1391, 08:17 صبح
میتونی داخل متدهای dll تشخیص بدی dll توسط چه برنامه ای فراخوانی میشه اگر برنامه ای که dll را فراخوانی می کند برنامه شما بود کدهای شما اجرا بشه وگرنه هیچ.
سلام دوست عزیز روش خوبیه و ممنونم از پاسختون و برا برنامه من فک کنم جوابگو هست ، ولی بازم زیاد امن نیست چون dll من سریال برنامه رو برمیگردونه و کافیه با برنامه ای خیلی ساده و با همین نام مقدار بازگشتی رو گرفت ( البته خب اگه به فکرشون برسه از همچین روشی استفاده شده :چشمک:)

FirstOrDefault() داخل چه namespace ی قرار داره ؟
متشکرم

Mahmoud.Afrad
شنبه 11 شهریور 1391, 14:04 عصر
using System.Linq; نیاز هست و این کار برای جدا کردن نام برنامه هست.
میتونی به جای FullName خصوصیات دیگر برنامه اصلی را چک کنید.

راه دیگر میتونه این باشه که در dll چک بشه که آیا فایل های اجرایی برنامه شما کنار dll هست یا نه.
راه دیگر میتونه این باشه که متدهایی که در dll مینویسید یک پارامتر ورودی مثلا از نوع رشته داشته باشه(در حکم رمز برای اجرای کدها) در داخل بدنه متدها چک میکنید اگر این رشته ارسالی با آنچه شما تعیین میکنید یکی باشه. به کد زیر نگاه کن
public void method(string key)
{
if (key == "password")
{
// ...
}
}
در صورتی که با همون کلید فراخوانی صورت بگیره کدهای داخل بلوک اجرا میشند.

و در آخر اینکه میتونید از تلفیقی از همه این روش ها استفاده کنید.