সি ++ অ্যাপ্লিকেশন কোডটি অবলম্বন করা কি গুরুত্বপূর্ণ?


11

জাভা বিশ্বে এটি মাঝে মাঝে সমস্যা বলে মনে হয় তবে সি ++ এর কী হবে? বিভিন্ন সমাধান আছে?

আমি এই বিষয়টি নিয়ে ভাবছিলাম যে কেউ নির্দিষ্ট ওএসের সি ++ গ্রন্থাগারকে একই গ্রন্থাগারের বিভিন্ন সংস্করণের সাথে প্রতিস্থাপন করতে পারে তবে আমার কোডটি কী করে তা বুঝতে ডিবাগ প্রতীকগুলি পূর্ণ full স্ট্যান্ডার্ড বা জনপ্রিয় লাইব্রেরি ব্যবহার করা কি ভাল জিনিস নয়?

উইন্ডোজের অধীনে কিছু dll গ্রন্থাগারটি সেই লাইব্রেরির "ডিবাগ সংস্করণ" দিয়ে প্রতিস্থাপনের মাধ্যমেও ঘটতে পারে। স্থির সংকলন পছন্দ করা ভাল? বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে, আমি দেখতে পাচ্ছি যে তাদের অ্যাপ্লিকেশনটির মূল জন্য তারা স্ট্যাটিকভাবে সবকিছু সংকলন করে এবং বেশিরভাগ অংশে ডেলস (সাধারণভাবে ডায়নামিক লাইব্রেরি) অ্যান্টি পাইরেসি সমাধানের মতো কিছু তৃতীয় পক্ষের প্রযুক্তি সরবরাহ করতে ব্যবহৃত হয় (আমি এটি অনেক গেমগুলিতে দেখি) ), জিইউআই লাইব্রেরি (যেমন কিউটি), ওএস লাইব্রেরি ইত্যাদি

স্থির সংকলন কি জাভা বিশ্বে আবদ্ধ হওয়ার সমতুল্য? আরও ভাল শর্তে, আপনার কোডটি সুরক্ষিত করার জন্য এটি কি সেরা এবং সবচেয়ে সাশ্রয়ী মূল্যের সমাধান?


4
মনে রাখবেন, আপনি যা কিছু করেন না কেন, খুব বেশি সময় পাওয়া কেউ এটিকে ডিওফাসকাট করতে / ডিকম্পিল করতে সক্ষম হবেন
জাভিয়র

13
অনেক সংকলক একটি /Oঅবলম্বন সুইচ সঙ্গে আসে । এমনকি কিছু কিছু, কিংকর্তব্যবিমূঢ়তা একাধিক মাত্রা আছে পর্যন্ত /O3);
MSalters

@MSalters না, ছ ++, হয়েছে -O3;)
BЈовић

@ জাভিয়র বা কেবল এটি সরল এবং সহজ বিপরীত প্রকৌশলী engineer এটি এমনকি বাইনারি নিজেই প্রয়োজন হয় না, শুধুমাত্র সফ্টওয়্যার একটি বিশদ বিশ্লেষণ।
জন ওয়েইজ

উত্তর:


27

যুদ্ধ হারিয়ে যাওয়ার সময় নষ্ট করবেন না

সি ++ এবং অন্যান্য ভাষার জন্য অন্যান্য অনেক অনুরূপ উত্তরে যেমন উল্লেখ করা হয়েছে, এটি বেশিরভাগই অকেজো

আরও পড়া

নির্বাচিত পাঠ্য বিষয়গুলিতে (সমস্ত সি ++ নির্দিষ্ট নয়, তবে সাধারণ নীতিগুলি প্রয়োগ করে):

স্ট্যাক এক্সচেঞ্জ উত্তর

পেপারস

অবরুদ্ধকরণ উপর বিখ্যাত উক্তি:

তারপরে অবশেষে, কোড গোপনীয়তার প্রশ্ন আছে। এটি একটি হারানো কারণ। এমন কোনও রূপান্তর নেই যা কোনও স্থির হ্যাকারকে আপনার প্রোগ্রামটি বোঝার থেকে বিরত রাখবে। এটি সমস্ত ভাষায় সমস্ত প্রোগ্রামের জন্য সত্য হতে দেখা যায়, এটি জাভাস্ক্রিপ্টের সাথে আরও স্পষ্টভাবে সত্য কারণ এটি উত্স আকারে বিতরণ করা হয়েছে। নিরবচ্ছিন্নতা দ্বারা প্রদত্ত গোপনীয়তা সুবিধাটি একটি বিভ্রম। আপনি যদি না চান যে লোকেরা আপনার প্রোগ্রামগুলি দেখতে পারে তবে আপনার সার্ভারটি প্লাগ করুন। - ডগলাস ক্রকফোর্ড


কখনো?

আমি বলছি না যে আপনার কখনই অবসন্ন হওয়া উচিত নয় এবং এর কোনও ভাল কারণ নেই, তবে বেশিরভাগ ক্ষেত্রেই এর প্রয়োজনীয়তা এবং এর ব্যয়-কার্যকারিতা নিয়ে আমি গুরুত্বের সাথে প্রশ্ন করছি।

তদ্ব্যতীত, এমন পরিস্থিতি রয়েছে যেখানে অবরুদ্ধকরণ একটি ডি-ফ্যাক্টো প্রয়োজন। উদাহরণস্বরূপ, আপনি যদি ভাইরাসগুলি লিখেন তবে স্পষ্টতই অবলোকন (এবং একটি গতিশীল যাকে অগ্রাধিকার দেওয়া) আপনার প্রোগ্রামের টিকিয়ে রাখার পক্ষে যতটা ভাল তা প্রতিলিপি করার মতো ক্ষমতা ability তবে এটি খুব কমই একটি "সাধারণ" কেস গঠন করে ...


আমরা একবার একটি হার্ডওয়্যার ডোঙ্গেল ব্যবহার করেছি যেখানে সমস্ত ডংলে ফাংশন কলকে অস্পষ্ট করার জন্য লাইসেন্সের প্রয়োজনীয়তা ছিল - এবং তারা এটি করার জন্য একটি সরঞ্জাম সরবরাহ করেছিল। তাদের 'সুরক্ষা' মানের সম্পর্কে আমাকে সর্বদা কিছুটা সন্দেহজনক করে তুলেছিল!
মার্টিন বেকেট 4

@ মার্টিনবেকেট: সত্যিই অদ্ভুত এক বাচ্চা।
হাইলেম

3

না, এটি চেষ্টা করার মতো নয় এবং আমি মনে করি এটি সম্পূর্ণ অপ্রয়োজনীয়। আপনি যে ফাংশনগুলিতে কল করেন তা সম্ভবত আপনি সরবরাহ করে এমন কার্যকারিতা অনুমান করা যায়।

জাভাতে ওফফ্যাসেটরগুলির উপস্থিতির কারণ হ'ল জাভা বাইট কোড এবং জাভা উত্স কোডের মধ্যে থাকা ম্যাপিংটি মোটামুটিভাবে সংজ্ঞায়িত করা হয়েছে এবং সমস্ত ফাংশন এবং সদস্য ভেরিয়েবলের নামগুলি বাইট কোডে সঞ্চিত রয়েছে (সেগুলি পাবলিক, প্রাইভেট বা সুরক্ষিত নির্বিশেষে) ) তাই একটি জাভা বাইট কোড দোভাষী কিছু জেনেরিক জাভা উপস্থাপন করতে পারেন যা মূল উত্সের কাঠামোটিকে অনাবৃত উত্সের জন্য মোটামুটি ভালভাবে দেখায়।

সি ++ সরাসরি মেশিনের ভাষায় সংকলন করে। এটি বিচ্ছিন্ন করা যেতে পারে, তবে সমাবেশ ভাষা মোকাবেলা করা মোটামুটি ক্লান্তিকর। সংকলনের সময় কোডটিতে সমস্ত পরিবর্তন অপ্টিমাইজার করে দেয় বলে ডিসকোপিলেশন অনেক বেশি জটিল।


0

এটি নিয়ে ভাবতে ভাবতে, বিভিন্ন ধরণের অবরুদ্ধতা রয়েছে। চলুন শুরু করা যাক উত্স কোডটি অস্পষ্টকরণের সাথে, যা সম্পূর্ণরূপে সময় নষ্ট; এটি ছাড়া বোঝা যথেষ্ট কঠিন! সুতরাং এর পরিবর্তে ডেলিভারি প্যাকেজটি কীভাবে ব্যবহারকারীর কাছে ডেলিভারি দেওয়া হয় তা সম্পর্কে ফোকাস করি।

গৌণ অবসন্নতা

নৈমিত্তিক ব্যবহারকারীকে তাদের আঙ্গুল poোকানো এবং সহজেই জিনিসগুলি ভঙ্গ করতে বাধা দেওয়ার জন্য অল্প বয়স্ক অবলোকন উপস্থিত রয়েছে। এটি নির্ধারিত হ্যাকারটিকে বাইরে রাখে না, তবে আপনাকে যে জিনিসগুলি সমর্থন করার জন্য জিজ্ঞাসা করা হয়েছে সেগুলি আসলে আপনি সরবরাহ করেছেন তা নিশ্চিত করতে সহায়তা করার ক্ষেত্রে এর মূল্য রয়েছে। এই ধরণের জিনিসটির জন্য প্রয়োজনীয় সুরক্ষার স্তরটি সত্যই বেশ কম; বিতরণ প্যাকেজটি কেবল পাঠযোগ্য এবং সম্পাদনযোগ্য দেখতে হবে না (বিশেষজ্ঞ সরঞ্জাম ছাড়া) এবং এটি যথেষ্ট যথেষ্ট good

জাভাস্ক্রিপ্ট মিনিফিকেশন এটির উদাহরণ, যদিও এটি এর মতো বাজারজাত হয় না। আপনি সঠিক / অধ্যবসায়ী থাকলেও এটির পক্ষে টেকনিক্যালি সম্ভব হওয়া সত্ত্বেও তাদের ডান মাইন্ডের কেউ কোনও মিনিড জেএস ফাইলটি পড়তে এবং সম্পাদনা করতে চাইবে না।

একইভাবে জাভা অ্যাপ্লিকেশন সরবরাহ করার সাথে। কেবলমাত্র একটি কার্যকর কার্যকর জেআর তে কোডটি প্যাকেজিং করা বেশিরভাগ বোকামি থামিয়ে দেবে, যদিও এটি একটি পার্কে ভদ্র "দয়া করে গ্রাস বন্ধ রাখুন" চিহ্নটির সমস্ত শক্তি পেয়েছে।

এমনকি সি ++ কোড সরবরাহ করার সময়, এক্সিকিউটেবলের থেকে অপ্রয়োজনীয় প্রতীকগুলি সরিয়ে ফেলা অপ্রয়োজনীয় প্রতারণার হিসাবে যোগ্য হতে যথেষ্ট হবে। মূলটি হ'ল এটি ব্যবহারকারী হিসাবে ফলাফলটি পড়তে অসুবিধে হয় তবে কম্পিউটার হিসাবে এটি কার্যকর করতে কোনও সমস্যা হয় না।

প্রধান অবক্ষেপ

প্রধান অবলম্বন নির্ধারিত এবং জ্ঞানবান ব্যবহারকারীকে বাইরে রাখছে । এটিও মোট হারের খেলা; কম্পিউটার যদি এটি কার্যকর করতে পারে তবে কোনও ব্যক্তি এটিকে আলাদা করে নিতে পারে এবং এটি যা কাজ করে তা কার্যকর করতে পারে। আপনি যে সবচেয়ে কাছের কাছে পেলেন তা হ'ল প্রোগ্রামটি নিজেকে ক্রমাগত ডিক্রিপ্ট করে তুলতে হবে, যা এটি এক সময় যা করে তা একেবারে ভিন্ন জিনিস হিসাবে রূপান্তর করে যা এটি অন্য সময়ে করে। এ জাতীয় জিনিস তৈরি করা বরং কঠিন হবে এবং এখনও সত্যিকারের ভাল হ্যাকারকে বাইরে রাখবে না (যদিও এটি স্ব-সংশোধনকারী কোডটি ডিক্রিপ্ট করার জন্য প্রয়োজনীয় প্রচেষ্টার পরিমাণে এটি শেষ হওয়ার সাথে সাথে আপনার সাথে সত্যই পার হয়ে যাবে)।

অন্যান্য সমাধানের দিক থেকে চিন্তা করা আরও ভাল। উদাহরণস্বরূপ, আপনি যে সার্ভারগুলিতে নিয়ন্ত্রণ করেন সে কোডের "মুকুট রত্ন" রাখতে পারেন এবং কেবলমাত্র পরিষেবা কলগুলিতে এটির অনুমতি দেয়, ক্লায়েন্টকে মূলত মুক্ত উপহার দেওয়া যায় যা মূল্যবান বিটের সম্মুখভাগ হয়। অথবা আপনি আরও চুক্তি / আইনী পথে যেতে পারেন, এবং কেবলমাত্র এমন সংস্থাগুলিকেই এক্সিকিউটেবলদের হস্তান্তর করতে পারেন যা আপনার কোডের ভিতরে ঘেঁষতে না দেওয়ার জন্য আনুষ্ঠানিকভাবে সম্মত হন বা তারা যদি তা করে থাকেন তবে আপনাকে ক্ষতিপূরণ দিতে হবে (যাতে এটি এনডিএর এক প্রকার হতে পারে)। হ্যাকারটি হ্যাক না করার জন্য এবং ব্যবহারকারীদের পক্ষে কোডটি কোনও চুক্তি দ্বারা আবদ্ধ না করে কোনও হ্যাকার থেকে দূরে রাখার জন্য একটি শক্তিশালী প্রণোদনা তৈরির লক্ষ্য হবে।

তবে আপনাকে অবশ্যই ধরে নেওয়া উচিত নয় যে আপনার কোডটি কখনও ফাটল যাবে না। ভার্চুয়ালাইজেশনের মাধ্যমে, কার্যকর করার যে কোনও প্রোগ্রামের স্থিতি পরীক্ষা করা ও ট্র্যাক করা যায় এবং যে কোনও কিছু যা হারাতে চেষ্টা করে (যেমন, কোনও বহিরাগত সময়ের উত্সে ক্লক ট্র্যাকিং) হ্যাকারদের চেয়ে বৈধ ব্যবহারকারীদের জন্য সমস্যা তৈরি করার সম্ভাবনা অনেক বেশি। (ডিআরএমের ইতিহাস দেখুন কোডটি যখন তাদের বিরোধীদের হাতে চলে যায় তখনও তথ্যের খুব নির্ধারিত প্রকাশকরা কীভাবে তাদের সিস্টেমগুলি সুরক্ষিত রাখতে পারবেন না)) বৈধ ব্যবহারকারীদের খুশি করার দিকে মনোনিবেশ করা আরও ভাল। মাঝে মাঝে ক্র্যাক থেকে ক্ষতিগুলি গ্রাহকদের যথাযথভাবে সন্তুষ্ট করার মাধ্যমে অতিরিক্ত অর্থের তুলনায় কিছু হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.