PDA

View Full Version : سوال: اضافه کردن کد سی شارپ به ابتدای فایل Exe



Tintirio
دوشنبه 28 فروردین 1391, 16:21 عصر
با سلام خدمت برنامه نویسان عزیز
من یک قفل نرم افزاری نوشتم همه ی کاراشو کردم فقط مونده اینکه فایل exe ای که به برنامه میدم چطور میتونم شرطی که برای چک کردن درست بودن کد فعالسازی هست رو روی فایل exe اضافه کنم
من در برنامه ام صفحه ای طراحی کردم که آدرس hard ware id و publickey رو میگیره و یه کد فعال سازی تولید میکنه حالا میخوام این صفحه رو اول هر فایل exe ایی که میخوام این قفل رو روش بزارم قرار بدم این رو چجوری میتونم انجام بدم... لطفا کمک کنید ... ممنون میشم همه جا رو گشتم چیزی پیدا نکردم

omidamiry
جمعه 01 اردیبهشت 1391, 11:11 صبح
کاره سختی نداره با دستورات فایل
using System.IO;
بدست آوردن لیست تمامی درایوها :

listBox1.Items.AddRange(DriveInfo.GetDrives());

بدست آوردن لیست تمامی درایوها و نوع آنها :

foreach (DriveInfo drv in DriveInfo.GetDrives())
listBox1.Items.Add(drv.Name + ":" + drv.DriveType);

بدست آوردن میزان فضای کلی و خالی درایوها:

foreach (DriveInfo drv in DriveInfo.GetDrives())
if (drv.IsReady)
{
listBox1.Items.Add(drv.Name + " - free space: " + drv.AvailableFreeSpace);
listBox1.Items.Add(drv.Name + " - total size: " + drv.TotalSize);
}

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

Tintirio
یک شنبه 03 اردیبهشت 1391, 13:18 عصر
ممنونم که حداقل یکی پیدا شد یه جوابی بده
دوست عزیزم من متوجه نشدم کد هایی که بالا نوشتی چه ارتباطی به این چیزی که من میخواستم داره من میخوام فایل exe ایی که میخوام روش قفل بزارم رو با برنامه ایی که با سی شارپ نوشتم تلفیق کنم و یک فایل exe ایجاد کنم. اون فایل exe با یه زبان دیگه ایی برنامه نویسی شده و قفلی که من نوشتم با سی شارپه اگه میشه در این مورد نظری بدین؟؟

Beginner2013
یک شنبه 03 اردیبهشت 1391, 13:46 عصر
حالا چرا با خود C#‎ نمی نویسید؟!
به هرحال می تونید،یه آرگومنت تابع main رو به عنوان پسورد در نظر بگیرید،و اگر برنامه پیش اجراتون کد تایید کرد،اون آرگومنتو برای برنامه ایجاد شده با C#‎ میفرسته،و در برنامه C#‎ هم چک می کنید اگه درست بود Application.Run رو صدا میزنید

Tintirio
دوشنبه 04 اردیبهشت 1391, 17:53 عصر
ببنید مثلا این یه قفل نرم افزاریه میخوام که بتونه در ابتدای هر فایل exe ای اجرا بشه.. من روش شما رو متوجه نشدم اگه میتونید یه مثالی بزنید. در ضمن اینم بگم که این فایل Exe ای که میخوام روش قفل بزار با Ams برنامه نویسی شده.
در کل حل مشکل من اینکه یه جوری بتونم کد قفل نرم افزاریمو در ابتدای فایل Exe ای که میخوام قفل روش بزارم تزریق کنم مشکلم اینه که نمیدونم چجوری میتونم داخل فایل Exe رو تغییر بدم...

amir3321
سه شنبه 05 اردیبهشت 1391, 11:55 صبح
میتونی برای این کار یک app توسط سی شارپ یا هر زبان دیگه درست کنی و توسط اون برنامه ابتدا قفل رو چک کنی اگر درست بود بعد این exe که می گی رو اجرا کنی این پروزه رو با فایل exe خود بصورت کپسوله در بیار تا هیچ کس به اون هم بصورت مستقیم دسترسی نداشته باشه

Tintirio
سه شنبه 05 اردیبهشت 1391, 20:35 عصر
امیر جان ممنون از راهنماییت فقط اگه میتونی برام توضیح بده چطور فایلو کپسوله کنم که نتونه کسی ببینتش ممنون میشم....

amir3321
پنج شنبه 07 اردیبهشت 1391, 12:45 عصر
این یک نمونه از اجرای یک فایل exe که من اونو ابتدا به Resources پروژه اول اضافه کردم Resources رو public در نظر گرفتم در پروژه دوم این فایل رو خوندم بعد در temp اجراش کردم می تونی قبل از اجرا قفل خودت رو بذاری در مورد فایل داخل temp هم از اسم مشابه اسمهای سیستمی استفاده کن و پس از تمام شدن اجرا اونو پاک کن البته کسی به این اسونی نمی تونه اونو پیدا کنه یا حتی می تونی تو پوشه های خود ویندوز اجراش کنی امیدوارم کمک کرده باشد


86327

Hossenbor
پنج شنبه 07 اردیبهشت 1391, 15:28 عصر
دوسته من شما میخواهید نرم افزاری بسازید که رو فایل اجرایی دلخواه قفل بذاره یا نه رویه نرم افزاری که ساختین میخوایین قفل بذارین؟

Tintirio
پنج شنبه 07 اردیبهشت 1391, 17:19 عصر
امیر جان از کمکت خیلی خیلی ممنون یه نگاه بهش انداختم فقط یه سوال دارم اینکه پروژه ی application17 که گذاشتی به جای فایل Exe یه dll ساخته اینو چجور انجام دادی ؟

خدمت آقای Hossenbor هم سلام دارم بعله دوست من میخوام که روی هر فایل اجرایی دلخواه بتونم این قفل رو قرار بدم؟ اگه شما هم نظری دارین خوشحال میشم بشنوم؟

amir3321
پنج شنبه 07 اردیبهشت 1391, 20:01 عصر
ببین کل این پروژه داخل یک sloution که دارای دو پروژه است پروژه app17 رو از نوع classlibrary گذاشتم تا خروجی اون به جایی یک aap ویندوزی یک فایل dll باشه
فایل exe مورد نظر رو به resource این پروژه اضافه کردم بعد اونو build کردم حالا رفتم تو پروژه app1 در قسمت ref این dll رو اضافه کردم و سپس از اون استفاده کردم به روشی که دیدی

برای اینکه یک پروژه ویندوزی رو به dll تبدیل کنی فقط کافیه روی پروژه راست کلیک کنی و در قسمت output نوع classlibrary رو انتخاب کنی اینم یادت باشه که برای دسترسی به اشیا اون ها رو از نوع public تعریف کنی

Hossenbor
پنج شنبه 07 اردیبهشت 1391, 20:20 عصر
دوسته من من نرم افزار اسمارت اسمبلی رو دیدم فکر کنم فکر می کنم فایل اجرایی دات نت رو دی کد میکنه بعد کدهایه خودشو با کدهایه اون ادغام و دوباره بازسازی کرده و یک مورد دیگه هم اونم اسمش یادم رفت یک مورد بود که برنامه رو به خودش تزریق میکرد بعد اونو تو رم فکر کنم یا تو محیط محافظت شده اجرا میکرد آهان اسمش Spoon Studio بود ولی خودمونیم حجمش خیلی زیاده فکر کنم خیلی کد نویسی میخواد

amir3321
پنج شنبه 07 اردیبهشت 1391, 23:15 عصر
این روش خوبه اما باید بدونید که هنگامی که برنامه قفلی که نوشتید ، در هنگام بسته شدن باید برنامه دیگری رو که اجرا کرده رو اگر در حال اجرا بود ببنده و فایل تمپی(temp) که ساخته رو پاک کنه.

معمولا قفل فقط قبل از هر اجرا چک می شه درمورد فایل هم با wait process مشکل حل می شود


در ضمن لازم نیست فایلی که قراره به ریسورس اضافه بشه در یک پروژه دیگه باشد و به صورت dll در بیاد، چون وقتی اون رو ریسورس میکنید جزئی از فایل exe میشه و کنار اون قرار نمیگیره ، پس در پروژه اصلی هم این کار جواب میده و نیازی به دو پروژه نیست. البته فایل اجرایی در فولدر ریسورس مربوط به سورس کد قرار میگیره ولی در پوشه دیباگ نه.


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

Tintirio
شنبه 09 اردیبهشت 1391, 02:37 صبح
از هم دوستان ممنونم که کمک کردین خیلی چیزا ازتون یاد گرفتم بازم از تک تکتون ممنون

Hossenbor
شنبه 09 اردیبهشت 1391, 09:30 صبح
دوسته عزیز من یک پیشنهاد دارم شما برید دنبال موضوع هایه تزریق در فایل اجرایی و اجرا در حافظه تحقیق کنید منم هم تحقیق می کنم اگر به نتیجه ای رسیدم اونا رو اینجا میذارم

Hossenbor
شنبه 09 اردیبهشت 1391, 09:51 صبح
دوست عزیز من اینارو پیدا کردم
http://stackoverflow.com/questions/595504/how-can-i-launch-a-program-from-memory-in-c
و اینو
http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory
خوب مونده تزریق که اینا رو پیدا کردم
http://www.codeproject.com/Articles/20565/Assembly-Manipulation-and-C-VB-NET-Code-Injection
اینم پیدا کردم
خوب میدونید راه حلم چجوریه فایلها رو بر اساس رمز دلخواه رمز گذاری میکنید و اونا رو تو فایل اجراییتون تزریق می کنید بعد برای فراخوانی رمز رو از کاربر میگیرید اگر رمز صیحی باشد هیدر فایل هم صحیح اسست فایل را در حافظه بارگزاری میکنید بعد انرا اجرا می کنید

Tintirio
دوشنبه 11 اردیبهشت 1391, 02:15 صبح
دوست عزیز واقعا مطالب جالبی بود ..
خودمم اول به همین روش رسیدم که فایل exe رو split کنم بعد تو memory اجراش کنم و دارم ادامه میدم اشالله که به یه جایی برسه که بدرد همه بخوره.
لینک آخری که گذاشتی خیلی نظرمو جلب کرد روش کار میکنم شما هم اینکارو انجام بدید بلکه بشه به یه نتیجه برسیم ...
ممنون از کمکتون