PDA

View Full Version : گفتگو: مخفی کردن RCData از فایل اجرایی



MohsenB
پنج شنبه 12 بهمن 1391, 23:03 عصر
سلام

احتمالا مشکل خیلی از شما هم باشه که وقتی میخواهید فایل نهایی برنامتون رو انتشار بدید نگران دسترسی کاربران به بخشی از تنظیمات فرمهای برنامه باشید . بیشتر از این توضیح نمیدم ...

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


باتشکر

hassan_reza
جمعه 13 بهمن 1391, 11:07 صبح
من از The Enigma Protector استفاده می کنم. که واقعا عالییه...

BORHAN TEC
جمعه 13 بهمن 1391, 11:45 صبح
من از The Enigma Protector استفاده می کنم. که واقعا عالییه...
با Avira مشکل داره.

MohsenB
جمعه 13 بهمن 1391, 13:59 عصر
سلام

برای چک کردن فایل نهایی برنامتون با آنتی ویروسهای مختلف میتونید از سایتهایی مثل سایتهای زیر استفاده کنید . ( مخصوصا سایت اول ) :

virustotal (http://www.virustotal.com)
virscan (http://virscan.org)
viruschief (http://www.viruschief.com)
virusscan.jotti.org (http://virusscan.jotti.org)

List1 (http://antivirus.about.com/od/freeantivirussoftware/tp/aaonline.htm)
List2 (http://temerc.com/onlnscnnrs.htm)

موفق باشيد

hassan_reza
جمعه 13 بهمن 1391, 15:45 عصر
با Avira مشکل داره.
http://virusscan.jotti.org/en/scanresult/929659e70996e28c2cd9b4a6800977054907c908
http://r.virscan.org/report/4b3d9eac7f329b75073b4321a54281ff.html
فقط ClamAV شناسایی کرد: PUA.Win32.Packer.EnigmaProtector-3

BORHAN TEC
جمعه 13 بهمن 1391, 17:10 عصر
با تنظیمات این ضد ویروسها که در این سرور وجود داره اینطوریه. برخی از ضد ویروسها تنظیمی دارند تحت عنوان Detect Unwanted Applications یا چنین چیزی که موقع نصب ضد ویروس میتونید اون رو فعال یا غیر فعال کنید. اگه روی یک سیستم این تنظیم اعمال شده باشه ضد ویروس برای اجرا پیام میده و از آنجایی که متاسفانه خیلی از کاربران مبتدی هستند فکر می کنند که ویروسه و نمیزارن اجرا بشه . در کل برنامه حالت جالبی پیدا نمیکنه. در یکی از پروژه ها هم من این مشکل رو داشتم و کلی اعصابم خرد شد از دست این کاربران مبتدی و مجبور شدم که کلاً این قضیه رو بی خیال بشم.

MohsenB
جمعه 13 بهمن 1391, 21:30 عصر
سلام

یه نمونه برنامه معروف که این کار رو تونسته انجام بده برنامه Skype هست . البته معلوم نیست اومده کامل کد نوشته یا کار دیگه ای کرده . البته اگه نگاه کنید بهش میبینید فقط فرم About قابل دسترس هست و دیگر فرم ها نیست . الان که نگاه کردم ویرایش جدیدش رو همین فرم رو هم مخفی کرده .
من یسری فکرایی دارم که بشه کد رو جوری نوشت که موقع کامپایل به برنامه اجرایی اضافه نشه ، تا چند روز دیگه روش کار میکنم .

موفق باشید

BORHAN TEC
شنبه 14 بهمن 1391, 11:30 صبح
سلام
این لینک میتونه خیلی کمکت کنه:
http://www.bitwisemag.com/2/spip.php?page=print_format&id_article=172
البته خودم هم در کنار روش توضیح داده شده در این لینک یک حرکت واقعاً استثنایی انجام دادم که کل UI مربوط به یک فرم رو از فایل EXE جدا کردم. البته به غیر از رویداد OnCreate مربوط به یک فرم خالی(البته به احتمال بسیار قوی این را هم میتوان حل کرد ولی در این مورد باید بیشتر فکر کنم)!! خوب طبیعی هست که میشه این ui رو به صورت کد شده در آورد تا هیچ کسی نتونه از اون سر در بیاره. :چشمک: خلاصه از اونجایی که ساز و کار، کار با این ui با استریم هست هر بلایی رو میشه سر اون در آورد، مثلاً میشه این فایل ui کد شده رو به صورت ریسورس به فایل اجرایی نهایی اضافه کرد ولی با این تفاوت که دیگه کسی نمیتونه از اون سر در بیاره و برنامه هم به صورت Stand-alone Executable در میاد و هیچ آنتی ویروسی هم به اون گیر نمیده چون واقعاً یک کار معمول داره انجام میشه! :لبخند:
فایل EXE نهایی رو در همین پست ضمیمه می کنم. این فایل رو مورد بررسی قرار بده و اگه خوب بود بگو تا روش کار رو در یک فیلم آموزشی به صورت کامل توضیح بدم. توجه داشته باش که من در این روش به هیچ عنوان UI را با کد نویسی تولید نکرده ام و با یک تکنیک ابتکاری و ساده یه جورایی دلفی رو گول زدم!

MohsenB
شنبه 14 بهمن 1391, 12:47 عصر
سلام
این لینک میتونه خیلی کمکت کنه:
http://www.bitwisemag.com/2/spip.php?page=print_format&id_article=172
البته خودم هم در کنار روش توضیح داده شده در این لینک یک حرکت واقعاً استثنایی انجام دادم که کل UI مربوط به یک فرم رو از فایل EXE جدا کردم.
...
فایل EXE نهایی رو در همین پست ضمیمه می کنم. این فایل رو مورد بررسی قرار بده و اگه خوب بود بگو تا روش کار رو در یک فیلم آموزشی به صورت کامل توضیح بدم. توجه داشته باش که من در این روش به هیچ عنوان UI را با کد نویسی تولید نکرده ام و با یک تکنیک ابتکاری و ساده یه جورایی دلفی رو گول زدم!

سلام

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

موفق باشید

BORHAN TEC
شنبه 14 بهمن 1391, 18:56 عصر
سلام

روش جالبیه ، علاوه بر استفاده در این مورد میشه برای ساخت یه چیزی شبیه پلاگین هم ازش استفاده کرد .
خیر، با این روش نمیشه پلاگین ساخت. کاری که انجام داده ام فقط جداسازی اطلاعات UI از فایل اجرایی است. برای ساخت پلاگین به چیزی فراتر از این نیاز است. با این روشی که من به کار برده ام فقط می توان UI را تغییر داد و مثلاً UI جدید رو در اختیار کاربر قرار داد و با انجام این کار نیازی نیست که فایل اجرایی را دوباره از نو بسازیم!

تنها موردی که میشه ازش گفت و شاید مورد توجه بعضی کاربران خیلی گیر و خرابکار قرار بگیره اینه که یه چیز غیر معمول به فایل اجرایی اضافه میشه ، البته در مقابل حالت معمولی فایل خیلی خیلی بهتره .
موندم که روش انجام این کار رو به EMBT توضیح بدم یا نه؟!! با توسعه این روش کارهای جالبی می شه انجام داد. با مقداری توسعه این روش میشه ui رو از یک کامپیوتر راه دور به صورت تکه تکه لود کرد و یا مثلاً میشه یک Convertor برای تبدیل ui فرم های دلفی به HTML و بر عکس ایجاد کرد که با استفاده از اون بشه بدون هیچ کار اضافه ای برنامه مبتنی بر ویندوز را به یک برنامه مبتنی بر وب تبدیل کرد. این مورد فعلاً خیلی جای کار داره و باید بیشتر مورد بررسی قرار بگیره!

اگه آموزشی هم بسازید خیلی عالی میشه ، پیش پیش ازتون ممنونم .
سعی می کنم تا فردا یا پس فردا این کار رو انجام بدم.

MohsenB
شنبه 14 بهمن 1391, 23:22 عصر
سلام

خیر، با این روش نمیشه پلاگین ساخت. کاری که انجام داده ام فقط جداسازی اطلاعات UI از فایل اجرایی است. برای ساخت پلاگین به چیزی فراتر از این نیاز است. با این روشی که من به کار برده ام فقط می توان UI را تغییر داد و مثلاً UI جدید رو در اختیار کاربر قرار داد و با انجام این کار نیازی نیست که فایل اجرایی را دوباره از نو بسازیم!

خوب شاهین جان منم گفتم یه چیزی شبیه پلاگین ، مثلا ساخت اسکین و از این جور چیزای ساده .



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

موفق باشید

BORHAN TEC
شنبه 14 بهمن 1391, 23:47 عصر
فکر خوبیه فقط دردسر بزرگش اینه که کدای دلفی رو به جاوا یا اچ تی ام ال و یا چیز دیگه ای تبدیل کنیم .
نه، نیازی به تبدیل همه کدها نیست کافیه که فقط ui رو تبدیل کنیم و یک مکانیرم برقراری ارتباط میان صفحه وب و فایل EXE ایجاد کنیم. تقریباً چیزی شبیه به Intraweb و به اضافه یکسری ویژگیهای جالب دیگه!

elham99
سه شنبه 24 بهمن 1391, 11:16 صبح
میشه کمکم کنید

elham99
سه شنبه 24 بهمن 1391, 11:17 صبح
سلام دوستان من از Enigma Pretoctor استفاده میکردم windows عوض کردم حالا Protect میشه ولی وقتی RUN میزنم ارور میده میگه یرنامه شما با مشکل مواحه شده و باید بسته بشه:گیج:

MohsenB
چهارشنبه 09 اسفند 1391, 23:09 عصر
با سلام

طبق قولی که داده بودم امروز روی فکری که داشتم کار کردم و به نتایج زیر رسیدم که کامل قرار میدم تا هم استفاده کنید و هم باهم توصعش بدیم :
توجه کنید که شاید یکم سطح کد بالا باشه و توضیح همش مشکل ، لطفا اگر همه کد را درک میکنید و قبلا با نمونه های آن کار کرده اید کد را آزمایش کنید و روی آن کار نمایید ( " این پست محل آموزش نباشد بهتر است " ) .


خوب توی روشی که من استفاده کردم تنها موارد مورد نیاز پروژه که باید برای این امکان تغییر کنند موارد زیر میباشند :

1 . افزودن خط زیر به محل اعلان Public فرم :
{$IFNDEF DEBUG} constructor Create(AOwner: TComponent); override;{$ENDIF}

2. تغییر اعلان الحاق سورس فرم به یونیت فرم به این حالت :
{$IFDEF DEBUG}{$R *.dfm}{$ELSE}{$I Unit2.inc}{$ENDIF}

در مرحله بعد باید فایل الحاقیی را که در خط بالا معرفی شده است درست کنیم . این فایل دو کار اصلی انجام می دهد : 1. ساختن فرم برنامه بدون نیاز به رسورس فرم 2. ساخت اشیاء فرم توسط کد .
مورد اول که ثابت می باشد ولی مورد دوم را به دو صورت می توان تولید کرد : 1. نوشت دستی کد 2. نوشتن روالی برای تبدیل سورس ( dfm. ) فرم به کد .
مورد اول که نیاز به توضیح ندارد ، من برای مورد دوم یونیت کوچکی نوشتم که این کار را تا حدودی انجام میدهد که آن را پیوست کرده ام .
اما شکل کلی این فایل باید به صورت زیر باشد :

constructor TForm2.Create(AOwner: TComponent);
var ff : TForm absolute Self;
begin
ff:= tform.Create(nil);
//sample creation code :
Width:= 500;
Height:= 300;
btn1:= TButton.Create(nil);
with btn1 do begin
Parent := self;
SetBounds(100,100,200,40);
caption:= 'OK';
end;
//end of sample
end;

نمونه نحوه استفاده از یونیت به این صورت می باشد :
uses UnitConverts;

var
ReadingFileStrs :TStrings;
procedure TfrmMain.btn2Click(Sender: TObject);
begin
ReadingFileStrs:= TStringList.Create;
ReadingFileStrs.LoadFromFile('_tmp.dfm');
//
mmo1.Clear;
mmo1.Lines.Assign(ConvDFMtoCode(ReadingFileStrs));
end;

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

شما وقتی تو مد دیباگ هستید هیچ تفاوتی با حالت عادی ندارید و تنها در حالت Release کدهای بالا اجرا می شوند .
با انجام این روش کل فرم از RCData حذف می شود .

منتظر همکاری شما هستم

موفق و پیروز باشید

یوسف زالی
پنج شنبه 10 اسفند 1391, 17:33 عصر
سلام. برای ساخت آبجکت ها از رشته و برعکس بهتر نیست اشیای روی فرم رو سریالایز کنیم و متن رشته رو کد کنیم؟ در هنگام ساخت هم به راحتی دسریالایز کنیم؟
فکر می کنم راه راحت تری باشه. این طور نیست؟

MohsenB
پنج شنبه 10 اسفند 1391, 17:36 عصر
سلام. برای ساخت آبجکت ها از رشته و برعکس بهتر نیست اشیای روی فرم رو سریالایز کنیم و متن رشته رو کد کنیم؟ در هنگام ساخت هم به راحتی دسریالایز کنیم؟
فکر می کنم راه راحت تری باشه. این طور نیست؟

سلام

میشه با یک نمونه برنامه مثال بزنید ؟

یوسف زالی
پنج شنبه 10 اسفند 1391, 18:26 عصر
یک مثال براتون می گذارم.
به نظر می رسه بشه با تغییراتی به منظور رسید.
بررسی کنید اگر راه خوبی هست ادامش بدیم.

MohsenB
پنج شنبه 10 اسفند 1391, 19:16 عصر
یک مثال براتون می گذارم.
به نظر می رسه بشه با تغییراتی به منظور رسید.
بررسی کنید اگر راه خوبی هست ادامش بدیم.

سلام

روش خوبیه ممنون از شما . باید کاری کنیم در حالت دیباگ بیاد از فایل dfm فرم یک رسورس پروژه RES. درست کنه و موقع ساخت فایل نهایی ( Release ) این فایل به خروجی اضافه بشه و برای ساخت فرم ها از اون استفاده کنه ، همچنین این رسورس اینکریپت شده باشه تا قابل دسترسی همه نباشه . من فردا حتما روش کار میکنم .

MohsenB
جمعه 11 اسفند 1391, 22:35 عصر
سلام

امروز به افزونه GExperts (http://www.gexperts.org) برخوردم که میتونه کد مورد نیاز ساخت اشیاء فرم رو تولید کنه و میتونه روش ارائه شده در پست شماره 15 رو ساده تر کنه و کار اون یونیت نهایی رو بکنه ، همچنین امکانات خوبی به رابط کاربری ( UI ) دلفی اضافه میکنه .