আমি কীভাবে ইউনিটির প্লেয়ার থেকে স্ট্রিংগুলি পুরোপুরি আড়াল এবং সুরক্ষা দিতে পারি?


47

আমি ityক্যটি একটি 2 ডি গেম তৈরি করতে ব্যবহার করছি যা সম্পূর্ণ অফলাইন হবে (যা সমস্যা), গেম-প্লেতে আপনাকে নির্দিষ্ট স্তরে নির্দিষ্ট স্ট্রিং প্রবেশ করতে হবে এবং ইউনিটিটি ডিএলএলগুলিতে সংকলিত হবে, যা সহজেই ইঞ্জিনিয়ারিং করা যেতে পারে, তাই এই স্ট্রিংগুলি রক্ষা করার কোনও উপায় আছে (গেমটি অফলাইনে রয়েছে তাই আমি অন্যান্য উত্স থেকে উদ্ধার করতে পারি না)?

গেমটি সেই স্ট্রিংগুলিতে প্রচুর পরিমাণে নির্ভর করে এবং হ্যাঁ আমি অবফস্যাকশন সম্পর্কে অবহিত তবে আমি আরও শক্তিশালী কিছু চাই। এবং আমি জানি যে সহজ উপায়টি ডেটা উত্স থেকে অনলাইনে সমস্ত কিছু করা হবে তবে আমি ভাবছিলাম যে এটি সম্ভব কিনা।

এটি এইভাবে পচে যেতে পারে: এখানে চিত্র বর্ণনা লিখুন


10
যদিও আমি একমত যে এটি এমন একটি যুদ্ধ যা আপনি কখনই সত্যই জিততে পারবেন না, আপনি সামান্য প্রচেষ্টা দিয়ে অবশ্যই আরও জটিল করে তুলতে পারেন। obfuscar.codeplex.com
জ্যাকব পার্সি

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

15
@ গ্যাব্রিয়েলভেয়ার্টি, ডিএলএল থেকে পাঠ্য আঁকানো তুচ্ছ: লিনাক্স বা সাইগউইনের অধীনে, আপনি কেবল stringsপ্রোগ্রামটি দেখিয়ে এটি করতে পারেন ।
চিহ্নিত করুন

31
আপনি এখানে কি করতে চেষ্টা করছেন? এটি XY সমস্যার একটি বরং গুরুতর ক্ষেত্রে বলে মনে হচ্ছে। meta.stackexchange.com/questions/66377/ কি-is-the-xy-problem আপনি যা কিছু করার চেষ্টা করছেন (একটি গেমপ্লে দৃষ্টিকোণ থেকে, প্রযুক্তিগত দৃষ্টিকোণ নয়) এই স্ট্রিংগুলি লুকিয়ে রাখার চেষ্টা করে এবং অবশ্যই এনক্রিপ্ট করার চেষ্টা করে প্রায় নিখুঁতভাবে পরিবেশিত হয় না ।
গ্র্যান্ডঅপনার

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

উত্তর:


159

এই স্ট্রিংগুলি সংরক্ষণ করবেন না, সেগুলির (ক্রিপ্টোগ্রাফিক) হ্যাশ সংরক্ষণ করুন।

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

আপনি কীভাবে পরীক্ষা করতে পারেন যে ব্যবহারকারী প্রবেশ করানো একটি স্ট্রিংটি সঠিক? যেহেতু আপনি হ্যাশ থেকে বৈধ স্ট্রিংটি পেতে পারেন না তাই ব্যবহারকারীর অনুমানটি হ্যাশ করা এবং এটি সঠিক হ্যাশের সাথে তুলনা করা কেবলমাত্র আপনি করতে পারেন।

সতর্কতা (এরিক লিপার্ট দ্বারা): বিল্টটি GetHashCodeকোনও ফাংশন হিসাবে ব্যবহার করবেন না - এর ফলাফলটি বিভিন্ন .NET সংস্করণ এবং প্ল্যাটফর্মের মধ্যে পার্থক্য করতে পারে, আপনার কোডটি কেবল নির্দিষ্ট .NET ফ্রেমওয়ার্ক সংস্করণ এবং প্ল্যাটফর্মের ক্ষেত্রে কাজ করে।


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

4
এই. যথাযথভাবে। আপনি যদি sha256 এর মতো অ্যালগরিদম ব্যবহার করেন (এমন অনেক গ্রন্থাগার রয়েছে যা এটি প্রয়োগ করে যাতে আপনাকে নিজের লেখার দরকার নেই) তবে আপনার এমন কিছু থাকবে যা সহজেই ভাঙ্গা যায় না এবং এটি খুব নির্ভরযোগ্য।
মিশেল জনসন

12
@ মিশেল জনসন একটি লবণ ব্যবহার করে রেইনবো টেবিল ব্যবহার করা আরও শক্ত করে তুলবে, এবং ব্রিসিপ্টের মতো পাসওয়ার্ড হ্যাশ ব্যবহার করা এটি আরও ধীর এবং তাই ভাঙ্গা আরও শক্ত করে তুলবে। তবে শেষ পর্যন্ত দিনের শেষে এটি মনে হয় অনেক বেশি চেষ্টা করা; ব্যবহারকারীরা তাদের পছন্দমতো প্রতারণা করতে চাইলে গেমটি কিনেছে
মেলকোর

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

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

106

আপনি যা করতে চেষ্টা করছেন তা নিরর্থক এবং অর্থহীন is

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

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

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


38
বিপরীত প্রকৌশল তার নিজস্ব একটি খেলা! এটিই একমাত্র সঠিক উত্তর - আজকাল কারও একক প্লেয়ার গেমগুলিতে তথ্য গোপন করা উচিত নয়, প্লেয়াররা চাইলে এটি অ্যাক্সেস করতে পারে।
মেফি

27
@ দ্য বাইনারিগুয়ে সেফটি কি থেকে? আপনার ব্যবহারকারীরা একটি অফলাইন গেম খেলছে । কোডটি কীভাবে প্রকাশ করা হুমকি দেয়? গেমটি খেলতে সক্ষম হতে প্লেয়ারটি শেষ পর্যন্ত এটি আবিষ্কার করার কথা রয়েছে! সুরক্ষার একটি গুরুত্বপূর্ণ নিয়ম হ'ল আপনাকে অবশ্যই সেই ট্রিটটি সনাক্ত করতে হবে যা থেকে আপনি রক্ষা করছেন; এটি একটি "হুমকি মডেল" হিসাবে উল্লেখ করা হয়।
jpmc26

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

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

5
@ হ্যামস্টারফ্রাইফ আমি উত্তরটি অনুমান করে ধরে নিয়েছি যে আপনার প্রকৃত স্ট্রিংগুলি সংরক্ষণ করার দরকার আছে, উদাহরণস্বরূপ প্লেয়ারকে এগুলি কোনও মুহুর্তে প্রদর্শন করা, যার অর্থ হ্যাশিংটি করবে না।
ফ্র্যাঙ্ক হপকিন্স

4

যদি এই জাতীয় জিনিসটি সত্যই পছন্দসই হয় তবে হ্যাশ করার পরিবর্তে আপনি রানটাইমে সংখ্যার ইনপুট মান থেকে স্ট্রিংগুলি তৈরির কথা বিবেচনা করতে পারেন।

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

ব্যতীত ... অন্য কারও কোড আপনার জন্য কাজ না করে তা বাদ দিলে । যা আপনি তুচ্ছভাবে করতে পারেন - 100% টেম্পার-প্রুফ নয় তবে গড় ব্যবহারকারীর পক্ষে কাজ করার পক্ষে যুক্তিযুক্ত কঠোর hard "অনলাইন এলভেন নাম জেনারেটর" এর মতো সহজ যা কিছু করতে হবে (নির্বিচারে সহজ হতে পারে, সত্যই কোনও মার্কভ পাঠ্য জিন ইঞ্জিনের খুব বেশি প্রয়োজন হয় না, এলোমেলো তালিকা থেকে 4-5 সিলেবলগুলি টানাই যথেষ্ট ভাল)।

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

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

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

সুতরাং ... আপনি সেভাবে কিছু করার আগে আপনি সত্যিই এটি চান কিনা এবং আপনি কী চান তা খুব ভালভাবে চিন্তা করুন। বেশ সম্ভবত, মানুষের পঠনযোগ্য স্ট্রিংগুলি (বা তুচ্ছভাবে জোর দিয়ে "অপঠনযোগ্য" তৈরি করা) যথেষ্ট ভাল এবং প্রকৃতপক্ষে পছন্দনীয়।


আপনি কোন প্রক্রিয়া কল্পনা করেন? প্রোগ্রামটি ডাউনলোড হওয়ার পরে যদি হ্যাশ মান উত্পন্ন করে, তবে ডাউনলোড করার সময় আনশশড স্ট্রিংটি থাকতে হবে। সুতরাং সার্ভারটি তথ্য সনাক্তকরণের জন্য ক্লায়েন্টকে জিজ্ঞাসা করবে এবং তারপরে হ্যাশ সার্ভার-সাইড তৈরি করবে?
সংগৃহীত

@ অ্যাক্যাকামুলেশন: কোন সার্ভার? প্রশ্নটি "সম্পূর্ণ অফলাইন" বলে। যার অর্থ সম্ভবত ডিভিডি (বা সম্ভবত একটি ডাউনলোড) এর সাথে একটি সিরিয়াল নম্বর একটি প্রোগ্রাম means সুতরাং আপনার কাছে ইভেন্টগুলি 1,2,3,4 রয়েছে যার জন্য একটি পাসকোড থাকা আবশ্যক। আপনি hash(serial + 1)প্রথম কোডের সাথে সম্পর্কিত একটি নম্বর পেতে উদাহরণস্বরূপ গণনা করুন । তারপরে এটিকে আপনার শব্দের জেনারেটরে খাওয়ান, যা টানা বলে, ইনপুটটির প্রতিটি 4 বিটের 16 টির তালিকা থেকে একটি শব্দাংশ। আপনি সেখানে যান, প্রতিটি ব্যবহারকারীর জন্য পৃথক "শব্দ"।
দামন

যদি এটি ডাউনলোড হয় তবে এটি সার্ভার থেকে ডাউনলোড করা হচ্ছে। প্রোগ্রামটি ডাউনলোড hash(serial+1) হওয়ার পরে যদি গণনা করা হয় , তবে ব্যবহারকারীকে গণনা করা থেকে বাধা দেওয়ার কী আছে hash(serial+1)? প্রোগ্রামটি ডাউনলোড হয়ে গেলে, ব্যবহারকারীর প্রোগ্রামের সমস্ত কিছুতে অ্যাক্সেস থাকে।
একসাথে

@ অ্যাকম্যাকুলেশন: কোনও কিছুই ব্যবহারকারীকে প্রথমে প্রোগ্রামটি ছড়িয়ে দেওয়ার এবং তারপরে গণনা করতে বাধা দেয় না hash(serial + 1)। তাতে কি? এটা কোন সমস্যা না। দেখুন, যদি কেউ নিজেকে ফাঁকি দেওয়ার জন্য এক থেকে দুই ঘন্টা (সম্ভবত সফ্টওয়্যার বিকাশকারী ব্যাকগ্রাউন্ড ছাড়াই একটি সাধারণ "ব্যবহারকারী" এর জন্য 6-8 ঘন্টা) বিনিয়োগ করে, ভাল ... তাকে ছেড়ে দিন। বিষয়টি হ'ল এটি একটি ব্যক্তির পক্ষে কাজ করে তবে সবার জন্য নয় এবং এটি প্রতিযোগিতামূলক নয় ... সুতরাং সমস্যা নেই।
দামন

3

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

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

এমনকি আপনার কাছে কয়েকটি শব্দের সমন্বয়ে স্ট্রিং থাকতে পারে তবে সেগুলি শেষ পর্যন্ত বিভিন্ন ক্রমে থাকে। উদাহরণস্বরূপ, আপনার নিম্নলিখিত দুটি স্ট্রিংয়ের প্রয়োজন হতে পারে:

  1. একটি ভালুক আমার বাড়ির উপর দিয়ে হেঁটে গেল
  2. আমার ঘর আমাকে ভালুক থেকে রক্ষা করেছিল

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

আপনি খেলোয়াড় সংগ্রহ করেছেন বা করেছেন তার উপর ভিত্তি করে সূচিগুলি তৈরি করে আপনি আপনার গেমটিতে এটি কাজ করতে পারেন। সুতরাং গেমের ভিতরে কোথাও সূচকের কোনও মাস্টার তালিকা থাকবে না। তারা খেলতে প্লেয়ার দ্বারা উত্পাদিত হবে।


4
সুতরাং নির্দিষ্ট স্ট্রিংয়ের উল্লেখ করে এমন ফাংশনটি সন্ধান করার পরিবর্তে আপনি এমন ফাংশনটি খুঁজে পান যা সূচকগুলির সাথে একটি অ্যারের উল্লেখ করে এবং তারপরে স্ট্রিংটি পুনরায় তৈরি করে। এটি অতিরিক্ত 30 সেকেন্ডের সুরক্ষার চেয়ে বেশি মনে হয় না। এটি এর বিরুদ্ধে যা সুরক্ষা দেয় stringsতা হ'ল এক্সিকিউটেবলের বিরুদ্ধে কেউ ব্যবহার করছেন ।
ভু

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

এটি কি কেবল এনক্রিপশনের একটি কম রূপ নয়?
আর্টুরো টরেস সানচেজ

2
অপেক্ষা করুন, এমনকি এনক্রিপশনও নয়। সবেমাত্র এনকোডিং।
আর্টুরো টরেস সানচেজ

2
উত্তরটি আরও পরিষ্কার হওয়ার জন্য আপডেট করেছি। মূলত, যদি সূচকগুলি খেলোয়াড়ের কোনও কাজের ভিত্তিতে হয়, তবে সেগুলি আসলে গেমটিতে সংরক্ষণ করা হয় না। আবার এটি মূর্খ-প্রমাণ বা নিখুঁত নাও হতে পারে, তবে আমি এখানে এটি এমন একটি বিকল্প হিসাবে রাখছি যা লোকেরা অন্বেষণ করতে পছন্দ করতে পারে।
ব্যবহারকারী 1118321
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.