PDA

View Full Version : سوال: کامپایل برنامه از طریق برنامه ی دیگر از سورس و فایل (در حین اجرا/کامپایل با کد نویسی/ایجاد exe)



mehrdad1991h
جمعه 22 فروردین 1393, 00:13 صبح
سلام
اقا من یه بنرامه دارم شامل حدود 10 تا فرم و 5-6 تا کلاس

حالا میخوام یه برنامه بنویسم که از طریق اون برنامه ی اولم را کامپایل کنم
منتها با برنامه ی 2 میخوام یه سری تغییرات هم بتونم درون کد های برنامه ی اول بدهم مثلا متن تکست باکس را عوض کنم یا متن یه لیبل را عوض کنم یا یه تصویر توی یکی از فرم ها عوض کنم و از این قبیل

الان میخوام ببینم چجوری میتونم این کار را انجام دهم

کسی میتونه کمکی کنه به من

نمونه کد جهت کامپایل از سورس تنها :
http://stackoverflow.com/questions/4302801/c-sharp-programmatically-compile-form-at-runtime-without-console
اینجوری که فکر نمیکنم به کارم بیاد چون 1 فرم نیست 10 تا فرمه چجوری زنمشون اخه ....؟؟؟؟
برای کامپایل با فایل هم اینجوریه:
provider.CompileAssemblyFromFile(options, "Form1.cs", "Form1.Designer.cs");
اینجوری هم پیش برم که دیگه ادیتی نمیشه تو فرم ها و ... کرد

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

لطفا کمک کنید
تشکر

مهرداد صفا
جمعه 22 فروردین 1393, 12:04 عصر
سلام.
فایلها رو در جایی موقت کپی کنید و بعد ویرایش و Compile.

دقیقا کجا مشکل دارید؟

مهرداد صفا
جمعه 22 فروردین 1393, 12:09 عصر
هدفتون از این کار چیه شاید راه های بهتری هم برای رسیدن به به هدف وجود داشته باشه.

mehrdad1991h
جمعه 22 فروردین 1393, 12:10 عصر
سلام.
فایلها رو در جایی موقت کپی کنید و بعد ویرایش و Compile.

دقیقا کجا مشکل دارید؟

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

mehrdad1991h
جمعه 22 فروردین 1393, 12:19 عصر
هدف از این کار بدین شرح است :
یه برنامه لایسنس دار ایجاد میشه که یه تعداد برنامه ی خاص بتونه ایجاد کنه و در صورتی که لایسنس منقضی شد دیگر امکان ساخت برنامه مورد استفاده نباشه

یعنی به این صورت فرض کنید که 1 شرکت میاد یه نرم افزار را میفروشه
حالا نرم افزاری که داره میفروشه را برای هر خریدار مثلا تصویر خریدار را میگذاره پشت صفحه برنامه و اسم خریدار را هم میگذاره تو چندتا لیبل از برنامه و برنامه اماده میشه و میدهد دست مشتری
در این بین شرکت که داره این نرم افزار را میفروشه خودش یه برنامه داره که برنامه را مثلا 10 تومن خریده که بتونه 20 تا از برنامه ینهایی را تولید کنه
حالا ما نه سورس را میتونیم بهشون بدیم نه خودمون انقدر بیکاریم هر بار بشینیم برنامه بسازیم نه مشتری ها مشخص هستند که از قبل برنامه ها را اماده داشته باشیم نه....

این مثال بود فقطا برا این که منظور من مشخص بشه....

مهرداد صفا
جمعه 22 فروردین 1393, 12:56 عصر
مشکل اینجاست که اینجوری سورس به صورت کامل در اختبار استفاده کننده قرار میگیره و خوب در اونصورت خود استفاده کننده میتونه سورس را دوباره تو یه پروژه بزاره و خودش هر جاییش را دلش میخواد تغییر بدهد و.....
یعنی من میخوام یه جوری باشه که سورس از داخل برنامه خارج نشه و فقط چند قسمت مشخص را تحت برنامه بتونند تغییر بدهند

محتویات همه کدها رو به صورت رمزنگاری شده در تنظیمات برنامه و یا resource یا ... قرار داده، هنگام استفاده در یک رشته deCode کنید. در آخر هم رشته رو ویرایش و compile کنید.
برای compile کدها به صورت رشته از این تاپیک (http://barnamenevis.org/showthread.php?396913-%D8%B3%D8%A7%D8%AE%D8%AA-exe) هم می تونید کمک بگیرید.
پ.ن: همونطور که می دونید نیازی نیست هر کلاس در یک فایل و یا رشته باشد، می تونید برای سهولت در استفاده همه کلاسها رو در یک فایل یا string جمع کنید.

mhsmity
جمعه 22 فروردین 1393, 15:44 عصر
بابا بی خیال
یعنی شما میخوای یه کامپایلر بنویسی که برنامه خودت رو کامپایل کنه؟
یه سوال syntax دستورات خودت رو چه طوری می خوای چک کنی؟ تا به موارد دیگرش برسیم.

من خدایش متوجه نشدم می خوای چطوری این کار رو انجام بدی؟

آخرش که چی ؟بل الاخره شما کدی می نویسی که بیاد اون کدهای شمارو کامپایل کنه خوب دوباره می خوای کدهای مرحله اول رو چی کارش کنی ؟

به نظر من تمام فایل برنامه خود رو با نرم افزار Ilmerg با هم مرج کن و یه فایل اجرای بساز و بعد با نرم افزار CryptoObfuscator برنامه خود رو Obfuscat کن .
تا کدها نرم افزارت قادر به استخراج نباشه.