PDA

View Full Version : پیشنهاد یادگیری جایگزین .NET ( امنیت داشته باشد )



MEhdi Sobhani
چهارشنبه 19 آبان 1389, 21:04 عصر
با عرض سلام و خسته نباشید .
من وی بی 6 و سی شارپ کار کردم و کلا حدود 15 سال هست که برنامه نویسی کار میکنم و تسلطم به برنامه نویسی خوب هست ( قبلا QBasic و یه مقدار خیلی کم پاسکال ) .
در مورد دات نت از این لحاظ که خیلی سریع میشه باهاش برنامه های کاملی نوشت و تقریبا هر چیزی که به احتیاج داریم داخلش هست خیلی خوبه اما مشکلش همون بحث امنیت و دی کامپایل شدنش هست .
در حال حاضر احتیاج دارم برنامه هایی با امنیت بالا بنویسم ، لطفا دوستان راهنمایی بفرمایید که چه زبونی بهتر هست . هم از لحاظ کارایی و به روز بودنش و سادگیش و هم از لحاظ امنیت و اینکه به این سادگی دیکامپایل نشه .
در مورد دلفی شنیدم که دیکامپایل نمیشه اما اصلا باهاش کار نکردم ، لطفا دوستانیکه تجربه دارند ، در این مورذ هم راهنمایی کنند و اینکه از لحاظ شباهت به سی شارپ و وی بی چطور هست وتقریبا چه مقدار زمان میبره یاد گرفتنش و اینکه اون هم شی گرا هست ؟
با تشکر فراوان .

alimanam
چهارشنبه 19 آبان 1389, 21:29 عصر
با سلام


در مورد دلفی شنیدم که دیکامپایل نمیشه

منبعش رو میشه ذکر کنین !!! تا جایی که من میدونم دیکام میشه اما نه به آسونی برنامه های دات نتی .

MEhdi Sobhani
چهارشنبه 19 آبان 1389, 21:54 عصر
با سلام
منبعش رو میشه ذکر کنین !!! تا جایی که من میدونم دیکام میشه اما نه به آسونی برنامه های دات نتی .
به نوشتم دقت کنید نوشتم که شنیدم ، با نوشتن کلمه ( شنیدم ) قصدم اینه اینو برسونم که مطمئن نیستم و آیا واقعا این طور هست یا نه .
و در کل سوال پرسیدم ، لطفا راهنمایی کنید .
با تشکر .

remove-me
چهارشنبه 19 آبان 1389, 21:56 عصر
.net رو هيچ وقت ول نكن. مي توني از anti decompiler استفاده كني. يكم سرعت برنامه رو كاهش مي ده اما تا حدي جلوي decompile رو مي گيره. در كل حواست باشه anti decompiler كه استفاده مي كني از خودش رد پا يا همون امضا رو نزاره. اگر امضايي باقي نمونه 99 درصد ديكامپايلرا نمي تونن كاري كنن. اگرم ديكامپايل شه چرت و پرت مي ده بيرون.
رو حرفم مطمئن باش

MEhdi Sobhani
چهارشنبه 19 آبان 1389, 22:00 عصر
.net رو هيچ وقت ول نكن. مي توني از anti decompiler استفاده كني. يكم سرعت برنامه رو كاهش مي ده اما تا حدي جلوي decompile رو مي گيره. در كل حواست باشه anti decompiler كه استفاده مي كني از خودش رد پا يا همون امضا رو نزاره. اگر امضايي باقي نمونه 99 درصد ديكامپايلرا نمي تونن كاري كنن. اگرم ديكامپايل شه چرت و پرت مي ده بيرون.
رو حرفم مطمئن باش
سلام
ممنون
راستش واقعا از دات نت ترسیدم ، واسه کاری که لازم دارم امنیتش و اینکه دیکامپایل نشه خیلی مهمه ، اما ساده و کامل بودن دات نت هم واقعا آدمو وسوسه میکنه .
راستش واسه اکثر انتی دیکامپایلر ها تو همین انجمن هم که می گردیم نوشتن که میشه برنامه ها شو دیکامپایل کرد .

ایمان مدائنی
چهارشنبه 19 آبان 1389, 22:06 عصر
دوستان عزيز يه خبر
يكي از دوستان موفق شده پروتكلي بنويسي كه كرك نشدن برنامه شما رو تضمين مي كنه
دارم روش كار ميكنم تا الان كه خوب جواب داده
از هر روشي رفتم نشد كرك كرد برنامه رو
حالا بازهم روش دارم كار ميكنم و اگه مطمئن شدم مشكل نداره نسخه دمو شو براتون ميزارم تا با خياله راحت برنامه هاتونو به بازار عرضه كنيد

remove-me
چهارشنبه 19 آبان 1389, 22:20 عصر
در كل همه برنامه ها قابل نفوذ. حالا ديكامپايلم نشه ديگه امنيتش فول كه نيست بازم قابل نفوذه. خوده برنامه هاي شركتاي گنده مثل ماكروسافت و ادوبي آتودسك و ... هنوز خود نرم افزار نيومده كرك و كيجنش تو اينترنت پخش شده. ولي بازم نظر من همون انتي ديكامپايلره.

hossein2007
چهارشنبه 19 آبان 1389, 23:34 عصر
سلام دوست عزیز.

به نظر من بهتره بجای اینکه از Decompile شدن برنامه هراس داشته باشی استراتژی ای رو انتخاب کنی که با Decompile شدن برنامه امنیت برنامه ات به خطر نیفته.
به قول یکی از دوستان اگه فایل اجرایی روی کامپیوتر مقصد وجود داشته باشه صد در صد قابل هکه حالا می خواد با دات نت باشه یا زبان ماشین. (اگه ارزشش رو داشته باشه حتما هک می شه)

یکی از راهکار هایی که از وب سرویس ها استفاده کنی (لایه منطق و دسترسی به داده مثلا روی یه سرور باشه و فقط لایه واسط کاربر روی کامپیوتر مقصد) با این روش اگه امنیت سرور تامین باشه دیگه نگرانی وجود نداره. و هک شدن لایه واسط کاربر هم که اهمیتی نداره.

البته بستگی به پروژه ات روی راه حل های دیگه می تونی فکر کنی.

alimanam
دوشنبه 01 آذر 1389, 19:19 عصر
با سلام


به نوشتم دقت کنید نوشتم که شنیدم ، با نوشتن کلمه ( شنیدم ) قصدم اینه اینو برسونم که مطمئن نیستم و آیا واقعا این طور هست یا نه .
و در کل سوال پرسیدم ، لطفا راهنمایی کنید .

دوست خوبم من هم منبعش رو پرسیدم ( در فرهنگ ما ایرانی ها شنیدم میتونه خواندن مقاله ایی از یه منبع موثق باشه میتونه از بابابزرگ آدم باشه )

و اما در مورد سوال شما :

به قول دوستان هر برنامه ایی که ارزش هک شدن داشته باشه هک میشه اگرم نشه به این خاطر نیست که قابل نفوذ و هک نیست دلایل دیگه ایی داره مثلاً به صورت گسترده و همگانی استفاده نمیشه و تعداد کمی از اون برنامه استفاده میکنن و به طبع اون کسی که باید بفهمه ( مقام عظمای هکر ) هنوز متوجه نشده یا اگر هم شده یه پروژه جالب تر داره که روش کار کنه .

در مورد این دستمون هم که راه کار وب سرویس رو به شما پیشنهاد دادن خوب در کل حرف درستی هستش ولی مگه میشه برای پروژه ایی که باید Windows Application باشه ( بهتر بود میگفتم Windows Desktop ) که به صورت عادی قرار نیست هم به صورت آفلاین باشه ( بازم بهتر بود میگفتم به صورت کلاینت باشه نه تحت شبکه و کلاً اینترنت ) از این روش که گفتین استفاده کرد ؟ البته ممکنه در پروژه شما این کار عملی باشه ( یعنی اینکه مشکلی با تحت شبکه بودن نداشته باشه ) به هر حال شما هرچقدر که برنامه ات وسوسه انگیز باشه ( کاربران زیادی داشته باشه ) به طبع باید منتظر احتمال هک شدن برنامه هم باشی !!! تا حالا که اینطور بوده از فردا خبری ندارم . البته به توصیه دوستان از روش هایی که فرمودن برای محافظت از کدهاتون داشته باشید و کدهایی که برای قفل شدن برنامه مینویسین رو جوری پیاده سازی کنین که کمترین حساسیت رو داشته باشه و کمترین واکنش رو نشون بده اما بیشترین تاثیر رو کارایی برنامه داشته باشه :چشمک:

موفق باشید

Felony
دوشنبه 01 آذر 1389, 19:31 عصر
با سلام



منبعش رو میشه ذکر کنین !!! تا جایی که من میدونم دیکام میشه اما نه به آسونی برنامه های دات نتی .

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

habib_0912
دوشنبه 01 آذر 1389, 19:45 عصر
سلام ببخشید وسط بحث تخصصی
دیکامپایل چیه؟

hadi-z
دوشنبه 01 آذر 1389, 19:52 عصر
سلام ببخشید وسط بحث تخصصی
دیکامپایل چیه؟

دیکامپایل یعنی فایل exe برنامه شما رو به کد تبدیل میکنن و اونو تغییر میدن.


منم تا جایی که میدونم دلفی به سختی دیکامپایل میشه

habib_0912
دوشنبه 01 آذر 1389, 20:17 عصر
می شه با استفاده از برنامه ی reflector تو فایل exe دست برد؟

hadi-z
دوشنبه 01 آذر 1389, 21:25 عصر
می شه با استفاده از برنامه ی reflector تو فایل exe دست برد؟

بله
reflector برای دیکامپایل کردن پروژه .net است

vcldeveloper
سه شنبه 02 آذر 1389, 00:55 صبح
برنامه هایی که با دلفی نوشته شدن دیکامپایل نمیشن ، طرف اگر خیلی هنر کنه و خیلی این کاره باشه در آخر میتونه یه سری از کدها رو به صورت اسمبلی استخراج کنه که اون کدها هم خیلی کم هستن ( یکسری از توابع رایج ، اون هم به صورت اسمبلی ) ؛ عملا برنامه کامپایل شده توسط دلفی امنیتش از لحاظ دیکامپایل شدن تضمین شده هست .
برنامه های نوشته شده با دلفی به همون اندازه از نظر decompile شدن امنیت دارند که سایر برنامه های native code نوشته شده با کامپایلرهای متداولی مثل ++VC دارند. برنامه های native code هم از نظر decompile شدن به صورت عادی جایی تضمین نمیشند، کما اینکه بخش عمده ایی از برنامه های معروفی که این روزها کرک میشند و استفاده میشند (مثل مجموعه برنامه های Office یا خودِ ویندوز) نرم افزارهای Native Code هستند.

فرق Native Code با Managed Code تولید شده در دات نت در این هست که اولا کدهای دات نت به یک زبان میانی ترجمه میشند، و ثانیا به همراه خودشان meta-data کاملی درباره کد دارند، که این باعث میشه از روی فایل خروجی تولید شده، بشه با دقت تقریبا بالایی به کد دات نت اولیه رسید. در نرم افزارهای Native Code، کد مستقیما به کد ماشین مقصد ترجمه میشه، و میشه کد را disassemble کرد. احتمال رسیدن به سورس کد اولیه در این حالت بسیار پایین هست، ولی خواندن یک کد disassemble شده برای یک کرکر خوب کار پیچیده ایی نیست، و یک کرکر خوب میتونه اطلاعات زیادی از این داده ها به دست بیاره. هر چند این داده ها در مقایسه با داده های به دست اومده از یک اسمبلی دات نت شاید ناچیز باشند، اما کرکرهای عزیز سالیان سال هست که با کدهای disassemble شده خو گرفتند. برای یک کرکر، کرک کردن یک نرم افزار native code محافظت نشده یک کرک معمولی، و کرک کردن یک نرم افزار managed code دات نت، یک کار ساده محسوب میشه. نه اینکه یکی غیر ممکن باشه، و اون یکی ممکن!

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

Felony
سه شنبه 02 آذر 1389, 05:56 صبح
برنامه های نوشته شده با دلفی به همون اندازه از نظر decompile شدن امنیت دارند که سایر برنامه های native code نوشته شده با کامپایلرهای متداولی مثل ++VC دارند. برنامه های native code هم از نظر decompile شدن به صورت عادی جایی تضمین نمیشند، کما اینکه بخش عمده ایی از برنامه های معروفی که این روزها کرک میشند و استفاده میشند (مثل مجموعه برنامه های Office یا خودِ ویندوز) نرم افزارهای Native Code هستند.

فرق Native Code با Managed Code تولید شده در دات نت در این هست که اولا کدهای دات نت به یک زبان میانی ترجمه میشند، و ثانیا به همراه خودشان meta-data کاملی درباره کد دارند، که این باعث میشه از روی فایل خروجی تولید شده، بشه با دقت تقریبا بالایی به کد دات نت اولیه رسید. در نرم افزارهای Native Code، کد مستقیما به کد ماشین مقصد ترجمه میشه، و میشه کد را disassemble کرد. احتمال رسیدن به سورس کد اولیه در این حالت بسیار پایین هست، ولی خواندن یک کد disassemble شده برای یک کرکر خوب کار پیچیده ایی نیست، و یک کرکر خوب میتونه اطلاعات زیادی از این داده ها به دست بیاره. هر چند این داده ها در مقایسه با داده های به دست اومده از یک اسمبلی دات نت شاید ناچیز باشند، اما کرکرهای عزیز سالیان سال هست که با کدهای disassemble شده خو گرفتند. برای یک کرکر، کرک کردن یک نرم افزار native code محافظت نشده یک کرک معمولی، و کرک کردن یک نرم افزار managed code دات نت، یک کار ساده محسوب میشه. نه اینکه یکی غیر ممکن باشه، و اون یکی ممکن!

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

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

habib_0912
سه شنبه 02 آذر 1389, 19:25 عصر
من یه برنامه exe رو تو reflector باز کردم یه سری از متد ها رو پشتش می زنه strict و اونا رو نشون نمی ده
باید چیکار کرد برا اونا؟؟

eshpilen
سه شنبه 02 آذر 1389, 21:24 عصر
بالاخره هرچیزی مزایا و معایب خودش رو داره دیگه. اینکه ساختار دات نت اینطور هست و متادیتای زیادی داره بخاطر سطح بالا بودن و امکانات گسترده و راحت اون برای برنامه نویسی و مدیریت خودکار برنامه ها و باگیابی و داکیومنت کردن خودکار و هزار و یک جور نیاز دیگه هست که زبانهای دیگه یا بصورت اساسی و اصول و کامل ندارن یا با روشهای سخت تر و حجیم تری در اختیار میذارن. یا اینطور بگیم که پیاده سازی تمام این خصایص و امکانات به راحتترین و کاملترین شکل ممکن که بهینه باشه، تنها با ساختارهایی مثل محیط مدیریت شده و نظارت شده و انباشته از متادیتای دات نت ممکن هست. وگرنه با فناوریها و زبانهای دیگه اگر هم ممکن باشه به همهء اینها بصورت کامل و درحد راحتی و کیفیت دات نت رسید، احتمالا پیچیدگی و پیاده سازی و نگهداری و حفظ انسجام و توسعهء اونها در چنین حدی کار حضرت فیل خواهد بود (عملا درحد غیرممکن).

اما اینکه هر روز یکی میاد میگه امنیت و ربطش میده به تفاوت زبان و فناوری و روش اجرا، من متوجه نشدم منظور از امنیت چی هست. ابهام داره و بیش از حد کلی بنظر میرسه و معلوم نیست منظور طرف دقیقا چیه.
آیا منظور شما از امنیت فقط حفظ حقوق برنامه نویسان هست از این جهت که برنامه کرک نشه، الگوریتم کشف نشه و از روی اون الگوبرداری نکنن، یا منظورتون امنیت کاربر استفاده کننده و کارکرد استاندارد خود برنامه (هم) هست؟ بنظر بنده باید رفع ابهام بشه این مطلب و درصورت لزوم از اصطلاح مناسب یا توضیحات بیشتری استفاده بشه.
میگیم امنیت، که معنا و کاربرد متداول این اصطلاح بنظرم فقط امنیت کاربردی و کارکرد و اجرای برنامه و رسیدن به هدفش هست، نه حفظ حقوق انحصارهای فکری برنامه نویسان؛ این امنیت کارکردی هزار جنبه داره که بنظر بنده معدودی از اونها در تنها معدودی از موارد میتونن به قابلیت کشف و/یا دستکاری الگوریتم برنامه تاحدی ربط داده بشن. امنیت کاربردی اصلش و در عمدهء موارد، در الگوریتم و سیستم اصولی که برنامه نویسی طراحی میکنه میتونه و باید پیاده بشه. تکیه کردن بر پنهان بودن طرز کار برنامه (الگوریتمهای کل سیستم) و در درجهء بعد جلوگیری از دستکاری برنامه/الگوریتم، در اکثر موارد از نظر علمی و تجربی کاملا اشتباه بوده و امنیت به این روش یا بالا نمیره یا مقدار خیلی کمی بالا میره (از نظر اصولی) که به هیچ وجه جایگزین یک طراحی الگوریتم و سیستم اصولی نمیشه.

alimanam
سه شنبه 02 آذر 1389, 23:28 عصر
با سلام


برنامه هایی که با دلفی نوشته شدن دیکامپایل نمیشن

عجب پس نمیشن !!!


طرف اگر خیلی هنر کنه و خیلی این کاره باشه در آخر میتونه یه سری از کدها رو به صورت اسمبلی استخراج کنه که اون کدها هم خیلی کم هستن ( یکسری از توابع رایج ، اون هم به صورت اسمبلی )

آخرش من متوجه نشدم میشن یا نمیشن !!! ولی میشن :چشمک: یعنی تا حالا که شدن !


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

جلاالخالق :متعجب: خوب حداقل منبع این ادعا رو هم ذکر میکردین بهتر نبود ؟


اخوی ، من هم همینا رو گفتم ، ایشون پرسید دیکامپایل میشه که گفتم نمیشه

اگه اشکالی نداره در یه خط معنی دیکام شدن رو بنویسین شاید تا حالا اشتباهی به ما یاد دادن ! آخه خودتون دارین میگین نمیشه اما اگه بشه یه مشت کد .... تحویلت میده ! ( البته یه دنیا تفاوته بین کدهای استخراج شده بوسیله decompiler ها از یه برنامه ایی که با native code نوشته شده با برنامه ایی که با تکنولوژِی دات نت یا بهتره بگیم managed code نوشته شده ) در کل موفق باشید .

Felony
چهارشنبه 03 آذر 1389, 01:01 صبح
عجب پس نمیشن !!!
آخرش من متوجه نشدم میشن یا نمیشن !!! ولی میشن یعنی تا حالا که شدن !
این 2 تا نقل قولی که زدید و جواب دادید تو پست من یکی بود ، وقتی جداشون کنی معنیش عوض میشه !!!

جلاالخالق خوب حداقل منبع این ادعا رو هم ذکر میکردین بهتر نبود ؟
اگه اشکالی نداره در یه خط معنی دیکام شدن رو بنویسین شاید تا حالا اشتباهی به ما یاد دادن !
دیکامپایل شدن یعنی تبدیل فایل اجرایی تولید شده به سورس اولیه ، دیکامپایل شدن با کرک شدن فرق میکنه! ، حالا اگر شما تونستی یه برنامه که با دلفی یا ++VC نوشته شده رو به سورس اصلیش بر گردونی خبرمون کن !


آخه خودتون دارین میگین نمیشه اما اگه بشه یه مشت کد .... تحویلت میده !
من گفتم دیکامپایل کامل نمیشه و دست بالا disassemble میشه ؛ اون کدهای اسمبلی فقط به درد یک کرکر میخوره ، ولی تو زبان های Managed مثل Net. میشه کدها رو تقریبا به صورت اولیه استخراج کرده که آقای کشاورز هم بهش اشاره کرد .

alimanam
چهارشنبه 03 آذر 1389, 17:56 عصر
با سلام


دیکامپایل شدن یعنی تبدیل فایل اجرایی تولید شده به سورس اولیه ، دیکامپایل شدن با کرک شدن فرق میکنه!دوست گرامی بنده , من در پست قبلی اصلاً حرفی از کرک شدن زدم ؟ !!!!


حالا اگر شما تونستی یه برنامه که با دلفی یا ++VC نوشته شده رو به سورس اصلیش بر گردونی خبرمون کن !من حرفی از سورس اصلی زدم ؟ !!! مگه قراره سورس اصلی به دست بیاد که امنیت برنامه رو مختل کنه ؟ ( لطفاً به موضوع تاپیک بیشتر دقت کنین :لبخندساده: )


برنامه هایی که با دلفی نوشته شدن دیکامپایل نمیشن
اخوی ، من هم همینا رو گفتم ، ایشون پرسید دیکامپایل میشه که گفتم نمیشه
من گفتم دیکامپایل کامل نمیشه

نقل قول های اولی و دومی رو با سومی مقایسه کنید بعد یه نتیجه گیری کنین درآخر هم نتیجه رو به خواننده ایی که میخواد از صحبتهای شما رو در این تاپیک بخونه اعلام کنید تا آخر متوجه بشه که آیا میشه یا نمیشه ؟ یا کامل میشه یا کامل کامل نمیشه !!! بالاخره میشه یا نمیشه دیگه ( من کاری به سورس اصلی و کد اسمبلی ندارم چون موضوع تاپیک در مورد امنیت برنامه است نه درجه سختی فهم کدها ( معمولاً بدترین حالت رو در نظر میگیرن یعنی اینکه کسی که داره برنامه رو دیکام میکنه یه عزیز از شکم مادر کرکره و اون عزیز مادر واسش کد اسمبلی و کد اصلی فرقی نمیکنه چون عزیز مادره و حتماً بلده کدهای اسمبلی چه معنی و مفهومی داره ( عزیز دل مادر وقتی کد اسمبلی رو میخونه انگار که داره خودش کد اصلی برنامه رو مینویسه ( اینجاش دیگه یکم فیلم هندی شد :اشتباه: چون هیچ وقت همچین چیزی اتفاق نمیفته و کد اسمبلی هیچ موقع 100% کد اصلی رو نشون نمیده )))


دست بالا disassemble میشه ؛ اون کدهای اسمبلی فقط به درد یک کرکر میخورهمگه قراره به درد کس دیگه ایی هم بخوره که امنیت برنامه به خطر بیافته ؟ !!! ( بازم به موضوع تاپیک یه بار دیگه توجه اساسی داشته باشین بد نیست :چشمک: )


ولی تو زبان های Managed مثل Net. میشه کدها رو تقریبا به صورت اولیه استخراج کرده که آقای کشاورز هم بهش اشاره کرد .
اگه در جایی من غیر از این چیزی که من از شما نقل قول کردم از طرف خودم زدم شما هم نقل قول کنین از سمت من ( نقل قول شد تو نقل قول :گیج: )

در پایان شما ما رو ببخش اخوی :بامزه: . موفق باشید عزیز

Felony
چهارشنبه 03 آذر 1389, 18:31 عصر
مگه قراره به درد کس دیگه ایی هم بخوره که امنیت برنامه به خطر بیافته ؟ !!!
یعنی سورس برنامه شمه فقط به درد یک کرکر میخوره ؟!

خیلی از افراد هستند که دنبال سورس یه برنامه میگردن ببینن چه طور فلان کار رو انجام میده ؛ این سوال ایجاد کننده تاپیک :


در حال حاضر احتیاج دارم برنامه هایی با امنیت بالا بنویسم ، لطفا دوستان راهنمایی بفرمایید که چه زبونی بهتر هست . هم از لحاظ کارایی و به روز بودنش و سادگیش و هم از لحاظ امنیت و اینکه به این سادگی دیکامپایل نشه .
در مورد دلفی شنیدم که دیکامپایل نمیشه اما اصلا باهاش کار نکردم ، لطفا دوستانیکه تجربه دارند ، در این مورذ هم راهنمایی کنند و اینکه از لحاظ شباهت به سی شارپ و وی بی چطور هست وتقریبا چه مقدار زمان میبره یاد گرفتنش و اینکه اون هم شی گرا هست ؟
ایشون گفتن که نمیخوان دیکامپایل بشه ، ما هم گفتیم نمیشه ، هنوز هم میگم دیکامپایل با disassemble فرق داره ، تبدیل کد اسمبلی برای کسی که به قول شما از شکم مادر کرکر بوده به کد اصلی زبان مبداء ( دلفی یا ++VC ) هم بسیار سخته ، چه برسه به جوجه کرکر یا کسی که دنبال به دست آوردن سورس برنامه برای آگاهی از نجوه اجرای اون هست !

@ باز هم میگم اون نقل قول ها رو جدا میزنی معناش عوض میشه ، من تو یک جمله گفتم نمیشه و اگر هم بشه دست بالا سورس اسمبلی به دست میاد که میشه disassemble ...

حالا ما تا صبح هم بگیم میای همونطور نقل قول میزنی ، موفق باشی .

eshpilen
چهارشنبه 03 آذر 1389, 20:08 عصر
بالاخره کسی نگفت منظور از امنیت چیه؟
امنیت چی رو چطوری میخواید بالا ببرید؟
امنیت حقوق انحصار فکری برنامه نویس رو؟
یا چیز دیگه؟

MEhdi Sobhani
دوشنبه 08 آذر 1389, 16:34 عصر
سلام دوستان
ممنون از اینکه پیگیر سوال من بودید .
با توجه به صحبتهاتون ، فکر میکنم دلفی باید مناسب باشه که البته فکر نمی کنم به اندازه دات نت قدرت داته باشه .
منظورم هم از امنیت اینه که کد برنامم طوری لو نره که فزضا اگر دیتایی رو به روش خاصی انکریپت میکنم و می فرستم به سرور یا جایی ذخیره میکنم ، این روش لو نره و در درجه بعد هم کد برنامه هست که طرف نتونه با یه سری تغییرات ساده در کد من برنامه ی با ظاهر جدید به نام خودش ایجاد کنه .
در کل هر دو برام مهمه ولی مورد اول خیلی مهمتر هست .
بازم از همه دوستان ممنونم .
موفق باشید .

Felony
دوشنبه 08 آذر 1389, 17:49 عصر
با توجه به صحبتهاتون ، فکر میکنم دلفی باید مناسب باشه که البته فکر نمی کنم به اندازه دات نت قدرت داته باشه .
اگر منظورت تحت سیستم عامل هست شدیدا اشتباه فکر میکنی !

اگر از لحاظ IDE بخوای حساب کنی که امکاناتی که برنامه نویس های Delphi یا C++ Builder در اختیار دارن برای برنامه نویس های مایکروسافتی یه رویا هستش ، از Open Tools API بگیر تا Code Insight و ... !
محیط RAD که IDE دلفی در اختیار برنامه نویساش میزاره اصلا قابل مقایسه با محیط VS نیست ، چون شما فقط همین محیط VS رو دیدی با امکاناتش زیادی حال میکنی !

از لحاظ فنی بخوای حساب کنی اون Net. که شما به قابلیت هاش میبالی چیزی نیست جز مخفی کردن جزئیات ویندوز از دید برنامه نویس داخل یه سری کلاس جزئیاتی که خیلی از برنامه نویس های Net. حتی نمیدونن چی هست و لی ازش استفاده میکنن و وقتی هم باهاشون کار میکنن خیلی هم پیش خودشون حال و پیش دیگران ادعای حرفه ای بودن میکنن که تعدادشون هم کم نیست ؛ مخصوصا تو ایران با این جو Net. ی ...

برای اثبات شدن حرف بالا برید تو بخش #C و VB.Net همین سایت و سوالات کاربران رو ببینید ، اون سوالاتی که اونجا پرسیده میشه 80% شون به تخصص تو Net. ربطی نداره و حل کردنشون لازم به دونستن پشت صحنه ویندوز هست ، سوالاتی که برای خیلی از برنامه نویس های Native خنده داره به حساب میان ...

مثلا کابری که نمیدونه Thread چی هست و ویندوز چه طور باهاش رفتار میکنه تو برنامش یه کلاس Thread بر میداره new میکنه و فکر میکنه این یعنی Multi Thread و به اولین مشکلی که تو برنامش بر میخوره هاج و واج برنامه رو نگاه میکنه و میگه : جانم ؟!

اون چیزهایی که شما الان به عنوان شئ گرایی دارید تو Net. میبینید و حال میکنید برنامه نویس های دلفی سال ها پیش باهاش کار کردن ، Net. کدهای Managed بیرون میده و برای اجرا شدن تو لینوکس دست به دامن Mono میشه ، ولی برنامه نویس های دلفی زمان دلفی 7 ( سال 2002 ) هم نیازی به این کارها نداشتن و برنامه Native شون رو به راحتی تو لینوکس اجرا میکردن !

دلفی الان امکان استفاده از Direct2D ، صفحات لمسی و دریافت و تشخیص Getsure رو به راحتی آب خوردن در اختیار برنامه نویس هاش قرار داده در صورتی که شما تو VS خوابش رو میبینید !

دلفی درایورهای مختلف برای اتصال به بانک های اطلاعاتی مختلف از Oracle و SQL Server و MS SQL و dbExpress بگیر تا Firebrid و SQLite و ... بهتون میده که باز هم شما خوابش رو تو VS میبینید که با یه بانک اطلاعاتی غیر مایکروسافتی ارتباط بر قرار کنید ، مگر اینکه موهای سرتون رو براش سفید کنید !

خیلی از اون قابلیت هایی که الان تو Net. دارید میبینید و حال میکنید از دلفی به Net. به ارث رسیده ، حتما نقش Anders Hejlsberg تو پروژه Net. رو یادتون هست ؟؟؟

در کل فکرتون کالملا اشتباه بود .

Delphi-Man
دوشنبه 08 آذر 1389, 23:09 عصر
اگر منظورت تحت سیستم عامل هست شدیدا اشتباه فکر میکنی !

اگر از لحاظ IDE بخوای حساب کنی که امکاناتی که برنامه نویس های Delphi یا C++ Builder در اختیار دارن برای برنامه نویس های مایکروسافتی یه رویا هستش ، از Open Tools API بگیر تا Code Insight و ... !
محیط RAD که IDE دلفی در اختیار برنامه نویساش میزاره اصلا قابل مقایسه با محیط VS نیست ، چون شما فقط همین محیط VS رو دیدی با امکاناتش زیادی حال میکنی !

از لحاظ فنی بخوای حساب کنی اون Net. که شما به قابلیت هاش میبالی چیزی نیست جز مخفی کردن جزئیات ویندوز از دید برنامه نویس داخل یه سری کلاس جزئیاتی که خیلی از برنامه نویس های Net. حتی نمیدونن چی هست و لی ازش استفاده میکنن و وقتی هم باهاشون کار میکنن خیلی هم پیش خودشون حال و پیش دیگران ادعای حرفه ای بودن میکنن که تعدادشون هم کم نیست ؛ مخصوصا تو ایران با این جو Net. ی ...

برای اثبات شدن حرف بالا برید تو بخش #C و VB.Net همین سایت و سوالات کاربران رو ببینید ، اون سوالاتی که اونجا پرسیده میشه 80% شون به تخصص تو Net. ربطی نداره و حل کردنشون لازم به دونستن پشت صحنه ویندوز هست ، سوالاتی که برای خیلی از برنامه نویس های Native خنده داره به حساب میان ...

مثلا کابری که نمیدونه Thread چی هست و ویندوز چه طور باهاش رفتار میکنه تو برنامش یه کلاس Thread بر میداره new میکنه و فکر میکنه این یعنی Multi Thread و به اولین مشکلی که تو برنامش بر میخوره هاج و واج برنامه رو نگاه میکنه و میگه : جانم ؟!

اون چیزهایی که شما الان به عنوان شئ گرایی دارید تو Net. میبینید و حال میکنید برنامه نویس های دلفی سال ها پیش باهاش کار کردن ، Net. کدهای Managed بیرون میده و برای اجرا شدن تو لینوکس دست به دامن Mono میشه ، ولی برنامه نویس های دلفی زمان دلفی 7 ( سال 2002 ) هم نیازی به این کارها نداشتن و برنامه Native شون رو به راحتی تو لینوکس اجرا میکردن !

دلفی الان امکان استفاده از Direct2D ، صفحات لمسی و دریافت و تشخیص Getsure رو به راحتی آب خوردن در اختیار برنامه نویس هاش قرار داده در صورتی که شما تو VS خوابش رو میبینید !

دلفی درایورهای مختلف برای اتصال به بانک های اطلاعاتی مختلف از Oracle و SQL Server و MS SQL و dbExpress بگیر تا Firebrid و SQLite و ... بهتون میده که باز هم شما خوابش رو تو VS میبینید که با یه بانک اطلاعاتی غیر مایکروسافتی ارتباط بر قرار کنید ، مگر اینکه موهای سرتون رو براش سفید کنید !

خیلی از اون قابلیت هایی که الان تو Net. دارید میبینید و حال میکنید از دلفی به Net. به ارث رسیده ، حتما نقش Anders Hejlsberg تو پروژه Net. رو یادتون هست ؟؟؟

در کل فکرتون کالملا اشتباه بود .
آفرین مجتبی جان دلایل منطقی ای ارائه دادی.
دکمه تشکر نبود وگرنه پست اضافه نمیزدم.
RAD Studio معنای واقعی RAD رو نشون داده.

vcldeveloper
سه شنبه 09 آذر 1389, 00:40 صبح
البته فکر نمی کنم به اندازه دات نت قدرت داته باشه

اگر از لحاظ IDE بخوای حساب کنی که امکاناتی که برنامه نویس های Delphi یا C++ Builder در اختیار دارن برای برنامه نویس های مایکروسافتی یه رویا هستش ، از Open Tools API بگیر تا Code Insight و ... !لطفا در همون حوزه مرتبط با موضوع تاپیک بحث کنید، و کل کل نکنید. چون اگر بنا بر کل کل باشه، خیلی چیزها هم در دات نت هست که برنامه نویس های دلفی یا محیط توسعه دلفی مدت ها ست خواب و رویای آن را می بینند! چیزهایی مثل Code Insight یا Open Tools API هم چیز خاصی برای مانور دادن نیستند؛ Visual Studio هم رابط برنامه نویسی برای افزودن پلاگین داره، و از طرف دیگه، قابلیت Inteliisense آن از Code Insight موجود در IDE دلفی بسیار بهتر و سریع تر هست. در هر حال، هر ابزاری قابلیت ها و کارکردهای خاص خودش را داره.

JaguarXF
چهارشنبه 10 آذر 1389, 04:25 صبح
با عرض سلام و خسته نباشید .
من وی بی 6 و سی شارپ کار کردم و کلا حدود 15 سال هست که برنامه نویسی کار میکنم و تسلطم به برنامه نویسی خوب هست ( قبلا QBasic و یه مقدار خیلی کم پاسکال ) .
در مورد دات نت از این لحاظ که خیلی سریع میشه باهاش برنامه های کاملی نوشت و تقریبا هر چیزی که به احتیاج داریم داخلش هست خیلی خوبه اما مشکلش همون بحث امنیت و دی کامپایل شدنش هست .
در حال حاضر احتیاج دارم برنامه هایی با امنیت بالا بنویسم ، لطفا دوستان راهنمایی بفرمایید که چه زبونی بهتر هست . هم از لحاظ کارایی و به روز بودنش و سادگیش و هم از لحاظ امنیت و اینکه به این سادگی دیکامپایل نشه .
در مورد دلفی شنیدم که دیکامپایل نمیشه اما اصلا باهاش کار نکردم ، لطفا دوستانیکه تجربه دارند ، در این مورذ هم راهنمایی کنند و اینکه از لحاظ شباهت به سی شارپ و وی بی چطور هست وتقریبا چه مقدار زمان میبره یاد گرفتنش و اینکه اون هم شی گرا هست ؟
با تشکر فراوان .

اصلا نمیفهمم حرف حسابت چیه!
یعنی تو داری میگی یک زبان رو میخوای انتخاب کنی به این حساب که وقتی برنامه ات رو نوشتی کدهای اون برنامه رو نشه دیکامپایل کرد؟ که امنیت حفظ بشه؟ یعنی چه جور امنیتی حفظ بشه؟ امنیت از این لحاظ که کسی مثلا نتونه به یک الگوریتم فوق سری و اختراعی تو که در برنامه ات از اون استفاده کرده ای دست پیدا کنه ؟ یا اینکه منظورت این هست از امنیت اینکه برنامه ات رو قفل شکسته نکنند؟


ویرایش:
خب اوکی! مثل اینکه پس از گذشت سه صفحه از بحث در اینجا منظورت از امنیت رو که مورد سوال من بود جواب داده ای:


منظورم هم از امنیت اینه که کد برنامم طوری لو نره که فزضا اگر دیتایی رو به روش خاصی انکریپت میکنم و می فرستم به سرور یا جایی ذخیره میکنم ، این روش لو نره و در درجه بعد هم کد برنامه هست که طرف نتونه با یه سری تغییرات ساده در کد من برنامه ی با ظاهر جدید به نام خودش ایجاد کنه

MEhdi Sobhani
چهارشنبه 10 آذر 1389, 13:44 عصر
اصلا نمیفهمم حرف حسابت چیه!
یعنی تو داری میگی یک زبان رو میخوای انتخاب کنی به این حساب که وقتی برنامه ات رو نوشتی کدهای اون برنامه رو نشه دیکامپایل کرد؟ که امنیت حفظ بشه؟ یعنی چه جور امنیتی حفظ بشه؟ امنیت از این لحاظ که کسی مثلا نتونه به یک الگوریتم فوق سری و اختراعی تو که در برنامه ات از اون استفاده کرده ای دست پیدا کنه ؟ یا اینکه منظورت این هست از امنیت اینکه برنامه ات رو قفل شکسته نکنند؟
ویرایش:
خب اوکی! مثل اینکه پس از گذشت سه صفحه از بحث در اینجا منظورت از امنیت رو که مورد سوال من بود جواب داده ای:

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

JaguarXF
پنج شنبه 11 آذر 1389, 08:17 صبح
این رو یکی از دوستان 13.7K ارزشی گفته بود.
به نظر من هم راست میگه:

In my experience people who are obfuscating their code don’t produce code that is worth the trouble

eshpilen
پنج شنبه 11 آذر 1389, 10:16 صبح
obfuscating معمولا امنیت کاربردی خاصی به کد نمیده. بخصوص که خیلی افراد احتمالا خاصیت obfuscating رو در امنیت کاربردی خیلی بیش از واقعیتش فرض میکنن یا اصلا تصور غلطی در اینمورد دارن. obfuscating بنظر من در بیشتر موارد هیچ چیز با اهمیتی به امنیت کاربردی نمیتونه اضافه کنه، اما در بعضی موارد میتونه اگر به روشهای اصولی الگوریتمیک و سیستماتیک اضافه بشه، و نه اینکه جایگزین اونها بشه یا باعث پرداختن کمتر به اونها بشه، احتمالا میتونه امنیت رو مقداری بالا ببره؛ اما بازم در این حالت باید دید که چه سایدافکت ها یا هزینه هایی داره و آیا این عوارض واقعا ارزشش رو دارن یا نه.
در خیلی موارد اصلا نیازی به دیکد کردن سطح بالای کد نیست و با روشهای مهندسی معکوس میشه حتی راحتتر و سریعتر به طرز عمل و نقاط ضعف یک برنامه یا سیستم پی برد.
یا بطور مثال در دنیای نرم افزار آزاد/بازمتن و گنو/لینوکس میبینیم که با اینکه سورس تمام اجزاء در دسترس هست و هرکسی میتونه برنامه ها رو دستکاری و نسخهء خودش رو جایگزین و استفاده کنه، ولی مشکلی با امنیت وجود نداره و تازه امنیت از جهات دیگری بخاطر خواص دیگر بازمتن بودن میتونه بالاتر هم بره.

اما درخصوص حفاظت از حقوق انحصار فکری، obfuscating احتمالا میتونه نقش خیلی بیشتری داشته باشه. ولی بهرحال بازم فقط کار کرک و کشف الگوریتم رو کم و بیش سخت تر میکنه، نه غیرممکن. و حفاظت موثر و مطمئن از حقوق انحصار فکری بنظرم در جهان بیشتر از طریق قانونی انجام میشه تا روشهای برنامه نویسی.
بهرحال در کشورهایی مثل ما که کنترل قانونی کافی وجود نداره، احتمالا obfuscating مطلوب خیلی افراد هست.
ولی بنظرم نباید زیادی هم درمورد اهمیتش اغراق کرد یا درمورد کاربرد حقیقی اون اشتباه فکر کرد و باهاش ضعف های طراحی الگوریتم و سیستم و پیاده سازی اصولی امنیت کاربردی رو پوشش داد (به این میگن جارو کردن آشغالها به زیر فرش!).
مثلا وقتی با زبان و فریمورک سطح بالا میشه Productivity رو به نحو قابل توجهی بالاتر برد، آیا واقعا در بیشتر موارد ارزشش رو داره آدم وقتش رو روی زبان و فریمورک های سطح پایینتر صرف کنه تا بتونه کدش رو Obfuscate بکنه؟

MEhdi Sobhani
پنج شنبه 11 آذر 1389, 12:26 عصر
سلام
من دلفی رو هم شروع کردم به کار کردن و یاد گرفتن .
حدودا 15 سال پیش یه مقدار خیلی کم پاسکال کار کرده بودم ، در مراحل اولیه و سادش مثل تفاوت کوییک بیسیک و وی بی 6 هست .
فکر نمی کنم زیاد طول بکشه بتونم با دلفی کارهایی رو انجام بدم که در سی شارپ و یا وی بی 6 انجام میدادم . به عنوان مثال بعد از 3-4 ساعت تقریبا تمام کارهای گرافیکی که در سی شارپ انجام میدادم و احتیاج داشتم رو اینجا هم دارم انجام میدم البته با سرعت اجرای خیلی بیشتر از وی بی 6 و سی شارپ .

نمونه برنامه که با هر بار حرکت موس 200 تا خط و و مستطیل روی بافر با سایز 1900*600 میکشه و بعد اون رو ریسایز شده روی یک بافر دیگه میکشه و روی اون هم مجددا از محل موس دوباره نصویر رو میکشه و در نهایت بافر رو روی فرم اصلی میکشه .