PDA

View Full Version : ایجاد یک extension جدید که فقط برنامه توانایی خواندن آنرا داشته باشد



amirtofighi
جمعه 19 آذر 1389, 13:32 عصر
با سلام
من با برنامه های زیادی برخورد کردم که در آن برنامه از عکس و فیلم و متن استفاده شده است ولی تمام این فایلها درون فایل های دیگری است که extension نامشخصی دارند و برنامه های دیگر قادر به باز کردن آن نیستند
مثلا فرض کنید آن برنامه 700 مگ است و فایلهای مورد استفاده در آن در 7 فایل 100 مگی جاسازی شده اند که این 7 فایل پسوندی مانند xxy. دارند که فقط خود برنامه میتواند آنرا باز کند و نرم افزارهایی مثل winrar هم نمیتوانند محتویات داخل آنرا نمایش دهند
میتوانید روش کار این گونه نرم افزارها و طریقه ایجاد extension دلخواه و نحوه دسترسی به فایل های موجود در اینگونه extension را توضیح دهید؟
اگر کدی هم آماده از قبل دارید که خیلی ممنون میشوم آنرا هم قرار دهید
باتشکر

Felony
جمعه 19 آذر 1389, 16:40 عصر
ساخت همچین چیزی کار سختی نیست ، اون برنامه ها اطلاعات رو بر اساس یک الگوریتم خاص پشت سر هم تو فایل مینویسن و برای اینکه امنیت این اطلاعات بالا بره ممکنه اون ها رو Code هم بکنن ، برنامه مقصد که میخواد این فایل ها رو اجرا کنه از این الگوریتم خبر داره و اون فایل ها رو بر اساس الگوریتم که ذخیره شدن به ترتیب میخونه و بر اساس الگوریتم اطلاعات رو Decode و Parse میکنه و اطلاعات پردازش شده رو استفاده میکنه .

amirtofighi
جمعه 19 آذر 1389, 19:23 عصر
ساخت همچین چیزی کار سختی نیست ، اون برنامه ها اطلاعات رو بر اساس یک الگوریتم خاص پشت سر هم تو فایل مینویسن و برای اینکه امنیت این اطلاعات بالا بره ممکنه اون ها رو Code هم بکنن ، برنامه مقصد که میخواد این فایل ها رو اجرا کنه از این الگوریتم خبر داره و اون فایل ها رو بر اساس الگوریتم که ذخیره شدن به ترتیب میخونه و بر اساس الگوریتم اطلاعات رو Decode و Parse میکنه و اطلاعات پردازش شده رو استفاده میکنه .
خب اینا رو که شما گفتین یه جورایی میدونستم! منظورم اینه که روش کار چطوریه؟ یعنی مثلا همونطور که گفتین روش پشت سر هم قرار دادن اطلاعات از جنس مختلف مثل عکس و فیلم و ... و نحوه دسترسی به این اطلاعات و decode کزدن که گفتین
میشه از بانک اطلاعاتی استفاده کرد؟
اگه میشه یه کم با جزییات توضیح بدین
خیلی ممنون

Mahmood_M
جمعه 19 آذر 1389, 21:59 عصر
یک کامپوننت خیلی جالب توی سایت جناب خلیل زاده هست به نام AnyFileCollection ، با این کامپوننت می تونید به راحتی چندین فایل مختلف رو کنار هم قرار بدید و به صورت یک فایل مستقل ( با هر پسوندی ) ذخیره کنید ، برای خوندن فایلها از فایل نهایی هم مشکلی ندارید و کار ساده هست ، توی این صفحه (http://www.salarsoft.somee.com/downlist/comp_downloads.htm) می تویند این کامپوننت رو دانلود کنید ، فایل راهنما همراه کامپوننت هست ...

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

برای نگهداری اطلاعات دیگه ای مثل متنها یا اعداد یا ... ، می تونید از Typed Files استفاده کنید (http://delphi.about.com/od/fileio/a/fileof_delphi.htm) .

موفق باشید ...

amirtofighi
جمعه 19 آذر 1389, 23:14 عصر
دست شما درد نکنه خیلی جالب بود ولی دوتا نکته هست:
یکی اینکه این روش بیشتر به درد ایجاد یه فایل setup میخوره، یعنی شما اطلاعات رو میریزین تو یه فایل بعد اونا رو اکسترکت میکنین یه جا دیگه
من فکر نمیکنم برنامه هایی که قبلا دیدم اینطوری بوده باشن بلکه اونا اطلاعات رو از توی اون فایل میخوندن و چیزی رو اکسترکت نمیکردن. یعنی اون فایل مثل یه پوشه عمل میکرد
نکته دوم اینه که اصولا این جور برنامه ها رو برا این مینویسن که کاربر نتونه از عکس و فیلم و بقیه چیزایی که شما تو برنامه استفاده کردین کپی برداری کنه و اگه قرار باشه فایل ها اکسترکت بشه که دیگه فایده نداره

ممنون میشم بازم کمکم کنین

Mahmood_M
شنبه 20 آذر 1389, 01:34 صبح
نکته دوم اینه که اصولا این جور برنامه ها رو برا این مینویسن که کاربر نتونه از عکس و فیلم و بقیه چیزایی که شما تو برنامه استفاده کردین کپی برداری کنه و اگه قرار باشه فایل ها اکسترکت بشه که دیگه فایده نداره
...

من فکر نمیکنم برنامه هایی که قبلا دیدم اینطوری بوده باشن بلکه اونا اطلاعات رو از توی اون فایل میخوندن و چیزی رو اکسترکت نمیکردن. یعنی اون فایل مثل یه پوشه عمل میکرد

می تونید یک پوشه به عنوان Temp بسازید و در شروع کار فایلها رو درون اون بریزید و در انتها هم فایلها رو حذف کنید .

راه های زیادی برای مخفی کردن فایلهای همراه فایل EXE هست ، یک راهش اینه که یک فایل Resource به صورت یک فایل DLL بسازید و کنار برنامتون قرار بدید یا اصلا فایلها رو به صورت Resource در فایل Exe خودتون قرار بدید ، به هر حال یا باید فایلهاتون رو با هم ترکیب کنید ، یا اینکه از فایلهای Resource استفاده کنید ، البته اون کامپوننتی که معرفی کردم قابلیت کار با Stream رو هم داره ، و میتونید فایلها رو بدون ذخیره کردن روی هارد استفاده کنید ، که البته در اینصورت باید مراقب حافظه های مصرفی هم باشید !

موفق باشید ...