বিপরীত প্রকৌশল থেকে এক্সিকিউটেবলকে রক্ষা করছেন?


210

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

এখন এটি আমার কাছে একটি নতুন বিষয়, এবং ইন্টারনেট বিপরীত প্রকৌশলের বিরুদ্ধে প্রতিরোধের জন্য সত্যিকারের উপায় নয়, বরং প্রকৌশলীকে কীভাবে বিপরীতমুখী করতে হয় তার টন তথ্য চিত্রিত করে

আমি এখনও অবধি কিছু বিষয় চিন্তা করেছি:

  • কোড ইনজেকশন (আসল ফাংশন কলগুলির আগে এবং পরে ডামি ফাংশনগুলিতে কল করা)
  • কোড অবলোস্টিকেশন (বাইনারি বিচ্ছিন্ন করা মঙ্গলগুলি)
  • আমার নিজস্ব প্রারম্ভিক রুটিনগুলি লিখুন (ডিবাগারগুলির সাথে জড়িত হওয়ার পক্ষে আরও শক্ত)

    void startup();  
    int _start()   
    {  
        startup( );  
        exit   (0)   
    }  
    void startup()  
    {  
        /* code here */  
    }
  • ডিবাগারগুলির জন্য রানটাইম চেক (এবং যদি সনাক্ত করা হয় তবে বাইরে বেরিয়ে আসতে বাধ্য করুন)

  • ফাংশন trampolines

     void trampoline(void (*fnptr)(), bool ping = false)  
     {  
       if(ping)  
         fnptr();  
       else  
         trampoline(fnptr, true);  
     }
  • অর্থহীন বরাদ্দ এবং অবলম্বন (স্ট্যাক অনেক পরিবর্তন)

  • অর্থহীন ডামি কল এবং ট্রাম্পোলাইন (ডিসঅ্যাস্পেস্পুট আউটপুটে ঝাঁপ দেওয়ার টন)
  • কাস্টিং টন (অবরুদ্ধ বিচ্ছিন্নতার জন্য)

আমি বোঝাতে চাইছি এগুলি এমন কিছু জিনিস যা আমি ভেবেছিলাম তবে সেগুলির চারপাশে কাজ করা যেতে পারে এবং কোড বিশ্লেষকরা সঠিক সময়সীমার সাথে সন্ধান করতে পারেন। আমার কাছে অন্য কোন বিকল্প আছে কি?


172
"তবে যে বর্তমান প্রোটোকলটিতে আমি কাজ করছি তা অবশ্যই কখনও কখনও বিভিন্ন ব্যক্তির নিরাপত্তার জন্য পরিদর্শন বা বোধগম্য হওয়া উচিত নয়।" - যে শুভকামনা।
আম্বর

62
বিপরীত প্রকৌশলের জন্য আপনি আপনার আবেদনটি শক্ত করে তুলতে পারেন। আপনি এটিকে অসম্ভব করতে পারবেন না, যতক্ষণ না অন্য লোকের হাতে আপনার বিটগুলির যথেষ্ট অংশ থাকে। পূর্ণ সুরক্ষার গ্যারান্টি দেওয়ার বিষয়ে যত্নবান, বিশেষত যদি জীবন ঝুঁকিতে থাকে - আপনি সরবরাহ করতে পারবেন না।
মাইকেল পেট্রোটা

127
যদি আপনার কম্পিউটার কোড বুঝতে পারে তবে একজন ব্যক্তিও বুঝতে পারেন।
26:51

78
কোডটি ওপেন সোর্স করুন এবং এটিকে কেউ বিপরীত করবে না।
ব্যবহারকারী অজানা

28
"অস্পষ্টতার দ্বারা সুরক্ষার কাজ কখনও হয়নি" "
বট 47

উত্তর:


151

অ্যাম্বার যা বলেছেন তা হুবহু। আপনি রিভার্স ইঞ্জিনিয়ারিং আরও শক্ত করে তুলতে পারেন তবে আপনি কখনই এটি প্রতিরোধ করতে পারবেন না। বিপরীত ইঞ্জিনিয়ারিং প্রতিরোধের উপর নির্ভর করে এমন "সুরক্ষার" উপর আপনার কখনই ভরসা করা উচিত নয় ।

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


14
আমি এটি বুঝতে পেরেছি, এবং আমি স্কাইপ সুরক্ষা সম্পর্কে কয়েকটি কাগজপত্র ব্যাখ্যা করেছি এবং আমি একই ধারণাগুলি নিয়ে ভাবছিলাম যা স্কাইপ ইতিমধ্যে আমার প্রোটোকলকে রোধ না করার জন্য রক্ষা করার জন্য একটি পদ্ধতি হিসাবে চেষ্টা করেছে। এমন কিছু যা স্কাইপের সুস্পষ্ট পরিস্থিতিতে প্রদত্ত যথেষ্ট যোগ্য হিসাবে প্রমাণিত হয়েছে।
গ্রাফাইটমাস্টার

8
স্কাইপ হ'ল প্রথম উদাহরণ যা মনে আসে, তাই আপনি খুশি হন যে আপনি ইতিমধ্যে তাদের পদ্ধতিগুলি অনুকরণ করে দেখছেন।
রিকিট

175

তবে সেগুলি চারপাশে কাজ করা যেতে পারে বা সঠিক সময় ফ্রেম প্রদত্ত কোড অ্যানালিসিস্টদের দ্বারা নির্ধারণ করা যায়।

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


113
+1 টি। অ্যাপল II-তে অনুলিপি সুরক্ষার গৌরবময় দিনগুলি, অবফসেক্টর এবং ক্র্যাকারদের মধ্যে চিরকালীন ক্রমবর্ধমান যুদ্ধ, ফ্লপি ডিস্কের স্টিপার মোটর এবং উন্মুক্ত 6502 নির্দেশাবলী এবং এর সাথে পাগল কৌশলগুলি ... এবং তারপরে নিজেকে চিৎকার করুন ঘুম, কারণ আপনি প্রায় এতগুলি বিস্তৃত কিছু বাস্তবায়ন করতে যাচ্ছেন না এবং অবশেষে সেগুলি ক্র্যাক হয়ে গেছে।
নিমো

2
সিমুলেটর ব্যবহার করা আরও সহজ এবং দৃশ্যমানভাবে বা বিচ্ছিন্নকরণকারীর সাথে ইঞ্জিনিয়ারের বিপরীত করার চেয়ে আরও ভাল দৃশ্যমানতা পাওয়া। যদি আপনি যে হার্ডওয়্যারটি ব্যবহার করছেন তার মধ্যে যদি সুরক্ষাটি তৈরি না হয় তবে আমি মনে করি বিশ্বটি প্রায় দুই দিন থেকে দুই সপ্তাহের মধ্যে ইঞ্জিনিয়ারকে রিভার্স করতে এবং বেরিয়ে আসা বেশ কিছুকে পরাস্ত করতে। এটি তৈরি এবং বাস্তবায়নে যদি আপনার আরও দু'দিন সময় লাগে তবে আপনি খুব বেশি সময় ব্যয় করেছেন।
old_timer

5
আজ কেবলমাত্র যুক্তিযুক্তভাবে কাজ করা ডিআরএম হ'ল একটি কী এবং একটি ইন্টারনেট সার্ভারের সংমিশ্রণ যাচাই করে যে কীটির কেবলমাত্র একটি উদাহরণ এক সময় সক্রিয় রয়েছে at
থরবজর্ন রাভন অ্যান্ডারসন

2
@ রোটসর: কম্পিউটার এটি বুঝতে পারে না কারণ আমরা এই ধরণের বুদ্ধি একটি অ্যালগোরিদমে (এখনও) হ্রাস করতে পারিনি, কারণ এখানে কোনও ধরণের শারীরিক বা প্রযুক্তিগত বাধা রয়েছে because মানুষ এটি বুঝতে পারে কারণ কম্পিউটারের পক্ষে তিনি কিছু করতে পারেন (তবুও ধীর হলেও) কারণ হিসাবে
অ্যাডাম রবিনসন

3
আপনার নিয়ন্ত্রণাধীন পরিবেশে এটি কেবল উপলভ্য না হলে কম্পিউটারের বিপরীতে ইঞ্জিনিয়ার করার চেষ্টা করবে কেউ।
আম্বর

41

নিরাপদ নেট সেন্টিনেল (পূর্বে আলাদিন)। ক্যাভেটস যদিও - তাদের এপিআই সফল হয়, ডকুমেন্টেশন সাক করে এবং তাদের উভয়ই তাদের এসডিকে সরঞ্জামগুলির তুলনায় দুর্দান্ত।

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

আমরা এইচএসপি এইচএল সুরক্ষা কার্যকর করার আগে, সেখানে 7 জন পরিচিত জলদস্যু যারা পণ্য থেকে ডটফসেক্টরকে 'সুরক্ষা' ছিনিয়ে নিয়েছিল। আমরা সফটওয়্যারটিতে একটি বড় আপডেট হিসাবে একই সময়ে এইচএএসপি সুরক্ষা যুক্ত করেছি, যা রিয়েল টাইমে ভিডিওতে কিছু ভারী গণনা সম্পাদন করে। আমি প্রোফাইলিং এবং বেঞ্চমার্কিং থেকে সর্বোত্তম বলতে পারি, এইচএএসপি এইচএল সুরক্ষা কেবল নিবিড় গণনাগুলিকে প্রায় 3% কমিয়েছিল। যে সফ্টওয়্যারটি প্রায় 5 বছর আগে প্রকাশিত হয়েছিল, তাই পণ্যটির কোনও নতুন জলদস্যু পাওয়া যায় নি। সফ্টওয়্যারটি এটি রক্ষা করে যা এটির বাজার বিভাগে উচ্চ চাহিদা এবং ক্লায়েন্ট বেশ কয়েকটি প্রতিযোগীদের সক্রিয়ভাবে প্রকৌশলীকে বিপরীত করার চেষ্টা করছে (এখনও পর্যন্ত সাফল্য ছাড়াই)। আমরা জানি যে তারা রাশিয়ার কয়েকটি গোষ্ঠীর কাছ থেকে সাহায্য প্রার্থনা করার চেষ্টা করেছে যা সফ্টওয়্যার সুরক্ষা লঙ্ঘনের জন্য কোনও পরিষেবার বিজ্ঞাপন দেয়,

সম্প্রতি আমরা একটি ছোট প্রকল্পে তাদের সফ্টওয়্যার লাইসেন্স সলিউশন (এইচএসপি এসএল) চেষ্টা করেছি, যা আপনি ইতিমধ্যে এইচএল পণ্যটির সাথে পরিচিত হলে কাজ করার পক্ষে যথেষ্ট সহজ ছিল। এটি কাজ করে বলে মনে হয়; পাইরেসি সংক্রান্ত কোনও ঘটনা ঘটেনি, তবে এই পণ্যটির চাহিদা অনেক কম ..

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


19
মডারেটর দ্রষ্টব্য: বিরোধী শোরগোলের কারণে এই উত্তরের মন্তব্যগুলি সরানো হয়েছে।
টিম পোস্ট

2
অভিজ্ঞতার জন্য +1, তবে আমি প্রতিধ্বনি করতে চাই যে এটি নিখুঁত নয়। মায়া (3 ডি স্যুট) একটি হার্ডওয়্যার ডাঙ্গল ব্যবহার করেছে (এটি HASP কিনা তা নিশ্চিত নয়), যা জলদস্যুদের খুব বেশি দিন আটকাতে পারেনি। একটি ইচ্ছা আছে যখন একটি উপায় আছে.
রবার্ট ফ্রেজার

1
অটোক্যাড একটি অনুরূপ সিস্টেম ব্যবহার করে যা বহুবার ফাটল ধরেছে। এইচএসপি এবং এর মতো অন্যান্যরা সৎ লোকদের সৎ রাখবে, এবং নৈমিত্তিক জলদস্যুতা রোধ করবে। আপনি যদি পরবর্তী একাধিক-বিলিয়ন ডলারের পণ্য তৈরি করে থাকেন তবে আপনার কাছে সর্বদা লড়াই করার জন্য ক্র্যাকার থাকবে। এটি হ্রাস পাওয়ার পরিমাণ সম্পর্কে - আপনার সফ্টওয়্যার সুরক্ষা বনাম কেবল এটির জন্য অর্থ প্রদানের জন্য কত ঘন্টা চেষ্টা করা মূল্যবান।
RyanR

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

4
এছাড়াও, এটি লক্ষণীয় যে এইচএএসপি সুরক্ষা ব্যবস্থাগুলি অবশ্যই বাধ্যতামূলকভাবে কোড অবধি প্রবিষ্টকরণের জন্য সুরক্ষিত নয় - প্রকৃত প্রকৌশলীকে রিভার্স করার জন্য তাদের জন্য আলাদা পদ্ধতি প্রয়োজন, তবে তাদের বিপরীত করা খুব সম্ভব - দেখুন: ফ্ললোগিক.net / ব্লগ /? p=14 flylogic.net/blog/?p=16 flylogic.net/blog/?p=11
জাল নাম

22

সেরা এন্টি ডিসেসেমব্লার ট্রিকস, বিশেষত ভেরিয়েবল ওয়ার্ড লেংথ ইন্সট্রাকশন সেটে এসেম্বলার / মেশিন কোডে থাকে, সি নয়। উদাহরণস্বরূপ

CLC
BCC over
.byte 0x09
over:

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

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

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

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

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


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

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

1
আধুনিক x86 প্রসেসরের সাহায্যে এ জাতীয় কৌশলগুলি প্রায়শই পারফরম্যান্সের জন্য খারাপ হয়। একাধিক নির্দেশের অংশ হিসাবে একই মেমরি অবস্থান ব্যবহার করা সম্ভবত একটি ভুল অনুমানিত শাখার মতোই প্রভাব ফেলতে পারে। স্ব-সংশোধনকারী কোড প্রসেসরকে নির্দেশনা এবং ডেটা ক্যাশের মধ্যে সমন্বয় বজায় রাখার জন্য ক্যাশে লাইনগুলি বাতিল করে দেয় (আপনি যদি সংশোধিত কোডটি প্রায়শই এটি সম্পাদন করার চেয়ে কার্যকর করেন তবে এটি একটি জয় হতে পারে)।
জিলিস

2
আমি এই 20 বছর আগে দৌড়ে। আমাদের কী ঘটেছে তা বোঝার জন্য প্রায় আধ ঘন্টা সময় নিয়েছে। আপনার যদি আর সুরক্ষার প্রয়োজন হয় তবে খুব ভাল নয়।
বো পারসন

1
"প্রকৃত নির্দেশটি ইতিমধ্যে কাতারে থাকবে এবং পরিবর্তিত মেমরির অবস্থান কোনও ক্ষতি করতে পারে না" যতক্ষণ না এর মধ্যে কোনও বিঘ্ন ঘটে, নির্দেশ পাইপলাইনটি ফ্লাশ করে এবং নতুন কোডটি দৃশ্যমান হয়ে যায় become এখন আপনার অবহেলা আপনার বৈধ ব্যবহারকারীদের জন্য একটি বাগ তৈরি করেছে caused
বেন ভয়েগ্ট

21

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

আমি মনে করি একটি আকর্ষণীয় প্রশ্ন "আপনি কেন নিজের কোডটি অবলম্বন করতে চান?" আক্রমণকারীদের আপনার অ্যালগোরিদম ফাটানো আপনি শক্ত করতে চান? আপনার কোডটিতে শোষণীয় বাগগুলি খুঁজে পাওয়া তাদের পক্ষে আরও শক্ত করা? কোডটি প্রথম স্থানে যদি অকার্যকর হয় তবে আপনাকে কোডটি অবলম্বন করার দরকার পড়বে না। সমস্যার মূল হ'ল ক্র্যাকযোগ্য সফ্টওয়্যার। আপনার সমস্যার মূলটি ঠিক করুন, কেবল এটিকে অবহেলা করবেন না।

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


3
সাধারণ জ্ঞানের জন্য +1: আপনি কেবলমাত্র একটি আরও ভাল সিস্টেম ডিজাইন করতে পারলে নিজের জন্য কেন আরও শক্ত করুন।
নেক্রোলিস

1
যেমন আমি সবসময় বলে থাকি, আপনি যদি প্রতিটি সার্ভারকে পাশে
রাখেন তবে

20

রিভার্স-ইঞ্জিনিয়ারকে কোডকে কঠিন করা কোড কোড অবফেসেশন বলে।

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

কার্যকর অনর্থক জন্য, আপনার প্রোগ্রামের আচরণ নির্বাহ করা অব্যর্থ বিট উপর নির্ভর করে আপনার প্রয়োজন। উদাহরণস্বরূপ, এটি না করে:

a = useless_computation();
a = 42;

এটা কর:

a = complicated_computation_that_uses_many_inputs_but_always_returns_42();

বা এটি করার পরিবর্তে:

if (running_under_a_debugger()) abort();
a = 42;

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

a = 42 - running_under_a_debugger();

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

some_function();

এটি করুন, যেখানে আপনি বিটগুলির সঠিক প্রত্যাশিত বিন্যাসটি জানতে পারবেন some_data_structure:

goto (md5sum(&some_data_structure, 42) & 0xffffffff) + MAGIC_CONSTANT;

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

এখন যেহেতু আমি আপনাকে বলেছি যে অবসন্নতা কঠিন এবং ব্যয়বহুল, আমি আপনাকে বলব যে এটি যাইহোক আপনার জন্য নয় । তুমি লেখ

বর্তমানের প্রোটোকলটিতে আমি কাজ করে যাচ্ছি তা অবশ্যই কখনও কখনও পর্যবেক্ষণ বা বোধগম্য নয়, বিভিন্ন ব্যক্তির সুরক্ষার জন্য

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

প্রস্তাবিত পঠন:


1
@ গিলস, এটি আপনার বক্তব্য, যা খুব শক্তিশালী, তাই প্রমাণের বোঝা আপনার উপরে। যাইহোক, আমি একটি সাধারণ উদাহরণ সরবরাহ করব: 2+2সংকলক দ্বারা এটিকে সরলীকৃত করা যেতে পারে 4, তবে ডিকম্পেলারটি এটিকে আর ফিরিয়ে আনতে পারে না 2+2(আসলে এটি আসলে কী হত 1+3?)।
রোটসর

7
@ রোটসর 4এবং 2+2পর্যবেক্ষণের দিক থেকে সমতুল্য, সুতরাং এই উদ্দেশ্যটির জন্য তারা একই , যেমন প্রোগ্রামটি কী করছে তা নির্ধারণ করা। হ্যাঁ, অবশ্যই, ডিকম্পেলারটি উত্স কোডটি পুনর্গঠন করতে পারে না, তবে এটি অপ্রাসঙ্গিক। এই প্রশ্নোত্তর আচরণটি পুনর্নির্মাণ সম্পর্কে (যেমন অ্যালগরিদম এবং আরও স্পষ্টভাবে একটি প্রোটোকল)।
গিলস 16'7 এ

1
আচরণটি পুনর্গঠন করতে আপনাকে কিছু করতে হবে না। আপনি ইতিমধ্যে প্রোগ্রাম আছে! আপনার সাধারণত যা প্রয়োজন তা হ'ল প্রোটোকলটি বোঝা এবং এর মধ্যে কিছু পরিবর্তন করা (যেমন 3 এর 2+2সাথে একটি 2 প্রতিস্থাপন করা বা এর +সাথে প্রতিস্থাপন করা *)।
রোটসর

1
আপনি যদি সমস্ত আচরণগত-সমতুল্য প্রোগ্রামগুলি একই হিসাবে বিবেচনা করেন তবে হ্যাঁ, সংকলক কিছুই করতে পারে না কারণ এটি কেবল একটি ইনডেন্টিটি রূপান্তর সম্পাদন করে। ডিকম্পিলারটি তখন খুব অকেজো, কারণ এটি আবার একটি পরিচয়ের রূপান্তর। তবে আপনি যদি তা না করেন তবে 2+2-> 4সংকলক দ্বারা সম্পাদিত অবিচলিত রূপান্তরের একটি বৈধ উদাহরণ। এটি বোঝা আরও সহজ বা আরও কঠিন করে তোলে তা পৃথক যুক্তি।
রোটসর

2
@ গিলস আমি আপেলের সাথে আপনার সাদৃশ্য বাড়িয়ে তুলতে পারি না কারণ আমি কাঠামোগতভাবে ভিন্ন, তবে আচরণগতভাবে সমতুল্য আপেলকে কল্পনা করতে পারি না। :)
রোটসর

13

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

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

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


1
আমি বোঝাতে চাইছি এটি একটি কার্যকর এবং প্রযোজ্য উত্তর, তবে আপনার জন্য আপনার পণ্য সুরক্ষিত রাখার জন্য কয়েক মিলিয়ন আয় করার জন্য আপনি যে রেখাটি আঁকেন এটি একটি দীর্ঘ লাইন।
গ্রাফাইটমাস্টার

12

একটি পঠিত নিন http://en.wikipedia.org/wiki/Security_by_obscurity#Arguments_against । আমি নিশ্চিত যে অন্যরাও কেন অস্পষ্টতার দ্বারা সুরক্ষা একটি খারাপ জিনিস এর একটি আরও ভাল উত্স দিতে পারে।

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


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

8

জুলাই ২০১৩ সাল থেকে, ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী অবলোকনে ( ইন্ডাস্টিনিউশিবিবিলিটি অবফাকশনের আকারে ) নতুনভাবে আগ্রহ রয়েছে যা মনে হয় অমিত সাহাইয়ের মূল গবেষণায় উত্সাহ পেয়েছে ।

আপনি এই কোয়ান্টা ম্যাগাজিন নিবন্ধে এবং সেই আইইইই স্পেকট্রাম নিবন্ধে কিছু পাতিত তথ্য পেতে পারেন ।

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

আমি এটি খুব দুর্ঘটনাক্রমে বলছি, তবে প্রত্যেকের কাছে যারা স্বভাবতই অবহেলা প্রযুক্তিকে বরখাস্ত করতেন - এটি আলাদা। যদি এটি সত্যই কাজ করে প্রমাণিত হয় এবং এটি ব্যবহারিক করে তোলা হয়েছে তবে এটি প্রকৃতপক্ষে এবং এটি কেবল অবলোকনের জন্য নয়।


7

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

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


7

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

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

যদি এই ফলাফলগুলি আপনার প্রয়োজনের জন্য কাজ না করে তবে এই কাগজপত্রগুলিতে আপনাকে অন্ততপক্ষে সম্পর্কিত সাহিত্যে চলার জন্য পর্যাপ্ত গ্রন্থাগারিক লিড দেওয়া উচিত।

আপডেট: অবর্ণনীয় নতুন ধারণা, অবর্ণনীয় অবনতি বলা অসম্ভবতার ফলটি (কাগজ) প্রশমিত করতে পারে


6

যদি কেউ আপনার বাইনারিটিকে ঘুরিয়ে দেওয়ার জন্য সময় ব্যয় করতে চায় তবে তাদের থামানোর জন্য আপনি করার মতো কিছুই নেই। আপনি যদি মাঝারিভাবে আরও বেশি কঠিন করতে পারেন তবে এটি প্রায়। আপনি যদি সত্যিই এটি সম্পর্কে জানতে চান তবে http://www.hex-rays.com/idapro/ এর একটি অনুলিপি পান এবং কয়েকটি বাইনারি বিচ্ছিন্ন করুন

কোডটি কার্যকর করতে সিপিইউর প্রয়োজনীয়তাটি হ'ল আপনার পূর্বাবস্থায় ফিরে আসা। সিপিইউ কেবলমাত্র মেশিন কোড চালায় ... এবং প্রোগ্রামাররা মেশিন কোডটি পড়তে পারে।

এটি বলা হচ্ছে ... আপনার সম্ভবত অন্যরকম সমস্যা রয়েছে যা অন্যভাবে সমাধান করা যেতে পারে। আপনি কী রক্ষা করার চেষ্টা করছেন? আপনার সমস্যার উপর নির্ভর করে আপনি সম্ভবত আপনার পণ্য রক্ষা করতে এনক্রিপশন ব্যবহার করতে পারেন।


6

সঠিক বিকল্পটি নির্বাচন করতে সক্ষম হতে আপনার নিম্নলিখিত বিষয়গুলি নিয়ে ভাবা উচিত:

  1. সম্ভবত "নতুন ব্যবহারকারীরা" অর্থ প্রদান করতে না চাইলেও আপনার সফ্টওয়্যারটি ব্যবহার করতে চান?
  2. এটি সম্ভবত বিদ্যমান গ্রাহকদের তাদের চেয়ে বেশি লাইসেন্সের প্রয়োজন বলে মনে হয়?
  3. সম্ভাব্য ব্যবহারকারীরা কত অর্থ প্রদান করতে ইচ্ছুক?
  4. আপনি কি ব্যবহারকারী / সমবর্তী ব্যবহারকারী / ওয়ার্কস্টেশন / সংস্থা প্রতি লাইসেন্স দিতে চান?
  5. আপনার সফ্টওয়্যারটি দরকারী হতে প্রশিক্ষণ / কাস্টমাইজেশন প্রয়োজন?

5 নম্বরের উত্তর যদি "হ্যাঁ" হয় তবে অবৈধ অনুলিপিগুলি নিয়ে চিন্তা করবেন না। এগুলি যেভাবেই কার্যকর হবে না।

যদি প্রশ্নের 1 এর উত্তর "হ্যাঁ" হয় তবে প্রথমে দামের বিষয়ে চিন্তা করুন (প্রশ্ন 3 দেখুন)।

যদি আপনি 2 টি প্রশ্নের উত্তর "হ্যাঁ" করেন তবে আপনার জন্য "বেতন প্রতি ব্যবহার" মডেলটি উপযুক্ত হতে পারে।

আমার অভিজ্ঞতা থেকে, প্রতি ব্যবহারের জন্য প্রদান + কাস্টমাইজেশন এবং প্রশিক্ষণ হ'ল আপনার সফ্টওয়্যারটির সেরা সুরক্ষা, কারণ:

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

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


খুব ভাল পরামর্শ (এবং আমি এটি উত্সাহিত করেছি), তবে এটি সত্যিই এই বিশেষ প্রশ্নটির সমাধান করতে পারে না
মাওগ বলেছেন মনিকা পুনরুদ্ধার করুন

5

ভার্চুয়াল মেশিনে সুরক্ষিত কোডটিকে প্রথমে ইঞ্জিনিয়ারের বিপরীত করা অসম্ভব বলে মনে হয়েছিল। থিমিডা প্যাকার

তবে এটি আর নিরাপদ নয় .. এবং আপনি নিজের কোডটি কীভাবে প্যাক করেন তা বিবেচনা না করে আপনি সর্বদা যে কোনও লোডড এক্সিকিউটেবলের একটি মেমরি ডাম্প করতে পারেন এবং এটি আইডিএ প্রো এর মতো কোনও ডিসসেসেমব্লার দিয়ে বিচ্ছিন্ন করতে পারেন।

আইডিএ প্রো সি-উত্স ট্রান্সফর্মারে একটি নিফটি এসেম্বলি কোডও নিয়ে আসে যদিও উত্পন্ন কোডটি আরও পয়েন্টার / ঠিকানার গাণিতিক গণ্ডগোলের মতো দেখায় .. আপনি যদি এটির সাথে মূল তুলনা করেন আপনি সমস্ত ত্রুটিগুলি ঠিক করতে পারেন এবং কিছু ছিন্ন করতে পারেন।


5

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


8
ঠিক আছে, আপনার কোডটি ছড়িয়ে ছিটিয়ে থাকা লোকদের এড়ানোর একমাত্র উপায় হ'ল এটিকে কখনও এটিকে শারীরিক অ্যাক্সেস না দেওয়া যার অর্থ একমাত্র SAA হিসাবে আপনার অ্যাপ্লিকেশনটি দেওয়া, দূরবর্তী ক্লায়েন্টদের কাছ থেকে অনুরোধ নেওয়া এবং প্রক্রিয়াজাত ডেটা ফেরত দেওয়া। একটি অ্যালিগেটর খাদ এবং ৫ মিটার লম্বা বিদ্যুতায়িত রেজার তার দিয়ে ঘেরা ভূগর্ভস্থ বাংকারে সার্ভারটি একটি তালাবন্ধ ঘরে রাখুন, যেখানে আপনি চাবিটি সমস্ত শক্তিশালী কংক্রিটের 10 মিটার দ্বারা coveringেকে দেওয়ার আগে ফেলে দেন, এবং তারপরে আশা করেন আপনি টন ইনস্টল করতে ভুলে যান নি নেটওয়ার্কের মাধ্যমে অনুপ্রবেশ রোধ করতে সফ্টওয়্যার সিস্টেমের।
6:30 টা বেজে গেছে w

6
আমি আশা করি আপনার সার্ভারগুলি বজায় রাখার জন্য আমি কখনই চুক্তিটি পাই না
কলিন পিকার্ড

5

বিপরীত প্রকৌশল এড়ানোর জন্য, আপনাকে অবশ্যই ব্যবহারকারীদের কোডটি দিতে হবে না। এটি বলেছিল, আমি একটি অনলাইন অ্যাপ্লিকেশন ব্যবহার করার পরামর্শ দিচ্ছি ... তবে (যেহেতু আপনি কোনও প্রসঙ্গ দেননি) যা আপনার পক্ষে অর্থহীন হতে পারে।


এটিই আসল সমাধান ... যথা আপনার মুকুট রত্নগুলি আপনার নিজস্ব সার্ভারে আপনার নিজস্ব ভিপিএস মেশিনে রাখুন এবং ক্লায়েন্ট (ব্রাউজার বা এপিআই ক্লায়েন্ট) থেকে এই সার্ভারে কেবলমাত্র API কলগুলি উন্মোচন করুন
স্কট স্টেনস্ল্যান্ড

5

সম্ভবত আপনার সর্বোত্তম বিকল্পটি এখনও ভার্চুয়ালাইজেশন ব্যবহার করছে, যা বাইপাস করে অন্য প্রয়োজনীয় স্তর / আবশ্যকতার পরিচয় দেয়, তবে এসএসপোক তার উত্তরে বলেছিলেন , এই কৌশলটিও 100% নিরাপদ নয়।


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

মানুষ যেভাবেই একত্রিত হয়, তা ছড়িয়ে দেওয়া যায়।

এটি সাধারণত সত্য যে (সঠিক) বিচ্ছিন্ন করা প্রায়শই (কিছুটা বা তার বেশি) আরও শক্ত কাজ, তাই আপনার প্রতিপক্ষকে আরও দক্ষ হতে হবে , তবে আপনি ধরে নিতে পারেন যে সর্বদা এমন মানের কেউ আছেন এবং এটি একটি নিরাপদ বাজি।

আপনি যদি আরইএস থেকে কিছু রক্ষা করতে চান তবে আপনাকে অবশ্যই আরইএস দ্বারা ব্যবহৃত সাধারণ কৌশলগুলি জানতে হবে know

এইভাবে শব্দ

বিপরীত ইঞ্জিনিয়ারিংয়ের বিরুদ্ধে প্রতিরোধের জন্য ইন্টারনেট প্রকৃতপক্ষে কার্যকর নয় বরং প্রকৌশলীকে কীভাবে বিপরীতমুখী করতে হয় তার উপরে প্রচুর পরিমাণে তথ্য চিত্রিত করা হয়েছে

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

(সফ্টওয়্যারটির ভুল উপায়ে সুরক্ষা ব্যবহারের উদাহরণ রয়েছে যা ব্যবহারিকভাবে অস্তিত্বহীন নয় making অস্পষ্টভাবে কথা বলা এড়াতে আমি আপনাকে ইন্টারনেটে সংক্ষেপে বর্ণিত একটি উদাহরণ দেব: সিডি-রম ভি 4 তে অক্সফোর্ড ইংলিশ ডিকশনারি দ্বিতীয় সংস্করণ সম্পর্কে আপনি পড়তে পারেন) নিম্নলিখিত পৃষ্ঠায় এটি SecuROM এর ব্যর্থ ব্যবহার: অক্সফোর্ড ইংলিশ ডিকশনারি (ওইডি) সিডি-রোমে একটি 16-, 32-, বা 64-বিট উইন্ডোজ পরিবেশে: হার্ড-ডিস্ক ইনস্টলেশন, বাগ, ওয়ার্ড প্রসেসিং ম্যাক্রো, নেটওয়ার্কিং, ফন্ট এবং তাই এগিয়ে )

সবকিছু সময় লাগে।

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

সফ্টওয়্যার সুরক্ষার বিষয়টি হ'ল নতুনকে ভয় পাওয়া, সাধারণ আরআরগুলি স্টল করা এবং আপনার আবেদনের কেন্দ্রে তার / তার (আশাবাদী আকর্ষণীয়) ভ্রমণের পরে পাকা আরই এর মুখে হাসি ফেলা।

ব্যবসায়িক আলাপে আপনি বলতে পারেন প্রতিযোগিতায় বিলম্ব করার বিষয়টি যতটা সম্ভব।

( ব্ল্যাক হ্যাট 2006 এ দেখানো ফিলিপ বিওনডি এবং ফ্যাব্রিস ডেসক্লাক্স দ্বারা স্কাইপে চমৎকার উপস্থাপনা সিলভার সুই দেখুন )।


আপনি অবগত আছেন যে সেখানে আরআই সম্পর্কে প্রচুর স্টাফ রয়েছে, তাই এটি পড়া শুরু করুন। :)

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


4

আমি মনে করি না যে কোনও কোডই অযোগ্য। তবে কারও পক্ষে এটি চেষ্টা করার জন্য পুরষ্কারগুলি দুর্দান্ত হওয়া দরকার।

আপনার এমন কিছু জিনিস করা উচিত যা বলেছিলেন:

  • সর্বাধিক অপ্টিমাইজেশন স্তরটি ব্যবহার করুন (বিপরীত প্রকৌশল কেবল সমাবেশের ক্রম পাওয়ার বিষয়ে নয়, কোডটি বোঝার এবং এটিকে সি এর মতো একটি উচ্চ-স্তরের ভাষায় পোর্ট করার বিষয়েও রয়েছে)। উচ্চতর অনুকূলিত কোড অনুসরণ করা একটি b --- h হতে পারে।
  • প্রয়োজনের চেয়ে বৃহত্তর ডেটা ধরণের না করে কাঠামোগুলি ঘন করুন। অফিসিয়াল কোড রিলিজের মধ্যে কাঠামোর সদস্যদের পুনরায় সাজান। কাঠামোগুলিতে পুনরায় সাজানো বিট ক্ষেত্রগুলিও আপনি ব্যবহার করতে পারেন এমন কিছু।
  • আপনি নির্দিষ্ট মানগুলির উপস্থিতি যাচাই করতে পারেন যা পরিবর্তন করা উচিত নয় (একটি কপিরাইট বার্তা একটি উদাহরণ)। যদি কোনও বাইট ভেক্টরে "vwxyz" থাকে তবে আপনার কাছে অন্য একটি বাইট ভেক্টর থাকতে পারে "অ্যাবসিডি" রয়েছে এবং পার্থক্যগুলি তুলনা করতে পারেন। এটি করা ফাংশনটি ভেক্টরগুলিকে পয়েন্টারগুলি স্থান দেওয়া উচিত নয় তবে অন্যান্য মডিউলগুলিতে (সিউডো-সি কোড) হিসাবে সংজ্ঞায়িত বাহ্যিক পয়েন্টারগুলি ব্যবহার করা উচিত "চর * পি 1 = এবং স্ট্রিং 1 [539];" এবং "চর পি 2 = & স্ট্রিং 2 [-11731];"। এই ভাবে দুটি পংক্তিতে হুবহু কোন পয়েন্টার থাকবে না। তুলনা কোডটিতে আপনি তারপরে " (p1-539 + i) - * (পি 2 + 11731 + আই) == কিছু মান" এর জন্য তুলনা করুন । ক্র্যাকার স্ট্রিং 1 পরিবর্তন করা নিরাপদ বলে মনে করবে কারণ এটি উল্লেখ করার মতো কেউ উপস্থিত হয় না। পরীক্ষাটি কিছু অপ্রত্যাশিত জায়গায় দাফন করুন।

কী সহজ এবং কোনটি করা কঠিন তা দেখার জন্য নিজেই অ্যাসেম্বলি কোড হ্যাক করার চেষ্টা করুন। আইডিয়াসগুলি পপ আপ করা উচিত যা আপনি কোডটিকে আরও প্রকট বিপরীত করা এবং এটির ডিবাগিং আরও জটিল করে তোলার জন্য পরীক্ষা করতে পারেন।


2
আপনার প্রথম পয়েন্টটি কোনও অর্থবোধ করে না, অনুকূলিত কোডটি ক্রাফট কেটে দেয়, এটি বিপরীত করা সহজ করে তোলে (আমি অভিজ্ঞতা থেকে বলি)। আপনার থ্রাইড পয়েন্টটিও সময় নষ্ট করে, এবং তার লবণের বিপরীত প্রকৌশলী কীভাবে মেমরি অ্যাক্সেস ব্রেকপয়েন্টিং করতে হয় তা জানেন। এ কারণেই সম্ভবত
নিজেরাই

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

4

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

তবে 3 টি অতিরিক্ত নোট:

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

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

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

সুতরাং পরিশেষে আমি পরামর্শ দেব: আপনার সফ্টওয়্যারটি প্রকৃত বিপরীতে প্রকৃতির লোকেরা কী লাভ করবেন তা অনুমান করুন, এটি কিছু সময়ের মধ্যে অনুবাদ করুন (উদাহরণস্বরূপ সস্তার ভারতীয় বেতন ব্যবহার করে) এবং বিপরীত প্রকৌশলটিকে এত বেশি ব্যয় করে যে এটি আরও বড়।


3

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

এটি আমার বক্তব্যটি প্রদর্শনের জন্য নিখুঁতভাবে অস্পষ্ট প্রোগ্রাম স্টেটমেন্টের একটি উদাহরণ:

printf("1677741794\n");

এটি কখনই অনুমান করতে পারে না যে এটি আসলে কী করে

printf("%d\n", 0xBAADF00D ^ 0xDEADBEEF);

এই বিষয়ে একটি আকর্ষণীয় কাগজ রয়েছে, যা কিছু অসম্ভব ফলাফল প্রমাণ করে। এটিকে "প্রোগ্রামগুলির ওফসকেটিং সম্ভাবনা অন" (im) বলা হয় ।

যদিও কাগজটি প্রমাণ করে যে প্রোগ্রামটি যে প্রয়োগ করে তার থেকে অবিচ্ছিন্ন করা অস্পষ্টতা অসম্ভব, কিছুটা দুর্বল উপায়ে সংজ্ঞায়িত অপসারণ এখনও সম্ভব হতে পারে!


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

1
@ গিলিস, (সঠিক) ডিওবফাসেকশনের ফলাফল সর্বদা আচরণগতভাবে আবদ্ধ কোডের সমতুল্য হবে। আমি দেখতে পাচ্ছি না কীভাবে এটি সমস্যার গুরুত্বকে কমিয়ে দেয়।
রোটসর

এছাড়াও, অস্ত্রের প্রতিযোগিতা সম্পর্কে: কে এই গবেষণায় বেশি বিনিয়োগ করে তা নয়, বরং কে সঠিক। সঠিক গাণিতিক প্রমাণগুলি ভুল হয়ে যায় না কারণ কেউ চায় যে তারা সত্যই খারাপভাবে চায়।
রোটসর

1
ঠিক আছে, সম্ভবত আপনি অনুশীলনে অস্ত্র প্রতিযোগিতা সম্পর্কে সঠিক। আমি মনে করি আমি এটি ভুল বুঝেছি। :) আমি আশা করি যদিও একরকম ক্রিপ্টোগ্রাফিকভাবে-নিরাপদ প্রসারণ সম্ভব।
রোটসর

অস্পষ্টতার একটি আকর্ষণীয় ক্ষেত্রে, স্মার্ট কার্ডগুলি চেষ্টা করে দেখুন, যেখানে সমস্যাটি হ'ল আক্রমণকারীটির শারীরিক অ্যাক্সেস রয়েছে (সাদা বাক্সে অবরুদ্ধকরণ)। প্রতিক্রিয়ার অংশটি হ'ল শারীরিক উপায়ে অ্যাক্সেস সীমাবদ্ধ করা (আক্রমণকারী গোপন কীগুলি সরাসরি পড়তে পারে না); কিন্তু সফ্টওয়্যার কিংকর্তব্যবিমূঢ়তা খুব ভূমিকা পালন করে, প্রধানত মত হামলা করতে dpa দরকারী ফলাফল দিতে না। আমার কাছে অফার করার মতো ভাল রেফারেন্স নেই, দুঃখিত। আমার উত্তরের উদাহরণগুলি সেই ডোমেনে ব্যবহৃত কৌশলগুলি থেকে অস্পষ্টভাবে অনুপ্রাণিত।
গিলস'স 17-30

3

অস্পষ্টতার মধ্য দিয়ে সুরক্ষা কার্যকর হয় না যেমনটি আমাদের দু'জনের চেয়ে অনেক চালাক লোক দেখিয়েছে। আপনি যদি আপনার গ্রাহকদের যোগাযোগ প্রোটোকলকে অবশ্যই সুরক্ষিত করেন তবে বিশেষজ্ঞরা খোলামেলা এবং পুরোপুরি যাচাই-বাছাই করা সেরা কোডটি ব্যবহার করার জন্য আপনি নৈতিকভাবে বাধ্য are

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

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

আপনার প্রশ্নটি কিছু স্পষ্টতা ব্যবহার করতে পারে। কম্পিউটার কোডটি প্রকৌশলকে বিপরীতমুখী করতে সক্ষম হলে আপনি কীভাবে একটি প্রোটোকল গোপন রাখার প্রত্যাশা করবেন? যদি আমার প্রোটোকলটি কোনও আরএসএ এনক্রিপ্ট করা বার্তা (এমনকি সর্বজনীন কী) প্রেরণ করে তবে প্রোটোকলটি গোপন রেখে আপনি কী অর্জন করবেন? সমস্ত ব্যবহারিক কাজের জন্য একজন পরিদর্শকের সাথে এলোমেলো বিটের ক্রমের মুখোমুখি হতে হবে।

গ্রোয়েটজেস অ্যালবার্ট


3

চিরাচরিত বিপরীত প্রকৌশল কৌশলগুলি কোড সম্পর্কে প্রশ্নের উত্তর দেওয়ার জন্য একটি ডিসেসেমব্লার ব্যবহার করে স্মার্ট এজেন্টের দক্ষতার উপর নির্ভর করে। আপনি যদি দৃ strong় সুরক্ষা চান, আপনার কাছে এমন কিছু কাজ করা উচিত যা এজেন্টকে এ জাতীয় উত্তর পেতে সক্ষম করে তোলে।

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

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

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.1946&rep=rep1&type=pdf

আমি কোলবার্গের নির্দিষ্ট পদ্ধতিগুলি প্রযোজনা কোডে প্রয়োগ করে দেখিনি, বিশেষত সি বা সি ++ উত্স কোড নয়।

ড্যাশও জাভা ওফুসকিয়েটার মনে হয় অনুরূপ ধারণা ব্যবহার করছে। http://www.cs.arizona.edu/~collberg/Teaching/620/2008/Assignments/tools/DashO/


2

আপনার কোড লুকানো সম্পর্কে প্রথম কথা মনে রাখার বিষয় : আপনার সমস্ত কোড লুকিয়ে রাখা দরকার নেই be

END টি লক্ষ্য : অধিকাংশ সফ্টওয়্যার প্রোগ্রাম জন্য আমার শেষ লক্ষ্য বিভিন্ন লাইসেন্সের যে ও আমার প্রোগ্রাম মধ্যে নির্দিষ্ট বৈশিষ্ট্যগুলি বন্ধ করে দেবে বিক্রি করার দক্ষতা।

সেরা প্রযুক্তি : আমি দেখতে পেয়েছি যে ওয়ার্ডপ্রেস অফারগুলির মতো হুকস এবং ফিল্টারগুলির একটি সিস্টেমে বিল্ডিং হ'ল আপনার বিরোধীদের বিভ্রান্ত করার চেষ্টা করার সময় এটি পরম সর্বোত্তম পদ্ধতি। এটি আপনাকে কোডটি আসলে এনক্রিপ্ট না করে নির্দিষ্ট ট্রিগার সমিতিগুলি এনক্রিপ্ট করার অনুমতি দেয়।

আপনি এটি করার কারণটি হ'ল আপনি সম্ভাব্য কোডের ন্যূনতম পরিমাণ এনক্রিপ্ট করতে চান।

আপনার ক্র্যাকারদের জানুন জানুন: এটি জানুন: ক্র্যাকিং কোডের মূল কারণটি লাইসেন্সের দূষিত বিতরণের কারণে নয়, এটি আসলে কারণ আপনার কোডটি পরিবর্তন করা দরকার এবং নিখরচায় অনুলিপি বিতরণ করার প্রয়োজন নেই।

শুরু করা : আপনি যে পরিমাণ এনক্রিপ্ট করতে চলেছেন তার সামান্য পরিমাণকে আলাদা করে রাখুন, বাকী কোডটি জটিলতা এবং বোধগম্যতা বৃদ্ধির জন্য এক ফাইলের মধ্যে চেষ্টা করা উচিত এবং ক্রম করা উচিত।

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

পদক্ষেপ এক : প্রতিটি কিছুর জন্য বেস 64 নাম ব্যবহার করে নিরস্ত করুন। একবার হয়ে গেলে, অপ্রচলিত কোডটি বেস 64 করুন এবং এটিকে একটি অস্থায়ী ফাইলে সংরক্ষণ করুন যা পরে এই কোডটি ডিক্রিপ্ট করে চালাতে ব্যবহৃত হবে। ধারণা তৈরী কর?

আপনি পুনরাবৃত্তি করব যেহেতু আপনি বার বার এটি করছেন। আপনি একটি বেস 64 স্ট্রিং তৈরি করতে যাচ্ছেন এবং এটিকে ভেরিয়েবল হিসাবে অন্য একটি ফাইলে সংরক্ষণ করতে পারবেন যা ডিক্রিপ্ট হবে এবং রেন্ডার হবে।

পদক্ষেপ দুটি : আপনি এই অস্থায়ী ফাইলে একটি স্ট্রিং হিসাবে পড়তে এবং এটিকে আবদ্ধ করতে যাচ্ছেন, তারপরে এটি বেস 64 এবং এটি দ্বিতীয় ব্যবহারকারীর জন্য ডিক্রিপ্ট করতে এবং রেন্ডার করতে ব্যবহৃত হবে temp

তিনটি পদক্ষেপ : আপনার পছন্দমতো দ্বিগুণ পদক্ষেপটি পুনরাবৃত্তি করুন। একবার আপনি ডিক্রিপ্ট ত্রুটিগুলি ছাড়াই এটি সঠিকভাবে কাজ করার পরে, আপনি আপনার বিরোধীদের জন্য স্থল খনিতে নির্মাণ শুরু করতে চাইবেন।

ল্যান্ড মাইন ওয়ান : আপনি এই সত্যটি রাখতে চান যে আপনি একটি নিখুঁত গোপন বিষয় হিসাবে অবহিত হয়েছেন। সুতরাং স্তর ২-এর জন্য ক্র্যাকার প্রয়াসের সুরক্ষা সতর্কতা মেল সিস্টেমটি তৈরি করুন যদি কোনওরকম ভুল হতে থাকে তবে আপনাকে আপনার প্রতিপক্ষের বিষয়ে সুনির্দিষ্ট বিবরণ জানাতে এড়ানো হবে।

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

আমি নিশ্চিত যে আপনি নিজের ল্যান্ডমাইনগুলি নিয়ে আসতে পারেন, এটিতে মজা করুন।

মনে রাখতে হবে : আপনি আপনার কোডটি বেস 64 এর পরিবর্তে এনক্রিপ্ট করতে পারেন। এইভাবে একটি সাধারণ বেস 64 প্রোগ্রামটি ডিক্রিপ্ট করবে না।

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

জড়িত কোনও কুসংস্কারের সাথে নগদ পুরষ্কারটিকে উল্লেখযোগ্য করে তুলুন। আমি সাধারণত 500 ডলার মতো কিছু বলি। যদি আপনার লোকটি কোডটি প্রথমে ক্র্যাক করে তবে তার অর্থটি প্রদান করে এবং তার বন্ধু হয়। তিনি যদি আপনার বন্ধু হন তবে তিনি আপনার সফ্টওয়্যার বিতরণ করতে যাচ্ছেন না। তাকে জিজ্ঞাসা করুন তিনি কীভাবে এটি করেছিলেন এবং আপনি কীভাবে উন্নতি করতে পারেন!

খুব ভাল!


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

2

কেউ কি কোডমোরথ চেষ্টা করেছেন: http://www.sourceformat.com/code-obfuscator.htm ? বা থেমিদা: http://www.oreans.com/themida_features.php ?

পরে একজন আরও প্রতিশ্রুতিবদ্ধ দেখায়।


প্রথম জিনিসটি আমি সুপারিশ করব, এটি হ'ল বাণিজ্যিক ভাবাবিহীন ব্যবহারের ব্যয়টি এড়াতে! কারণ আপনি যদি অবরুদ্ধকে ক্র্যাক করেন তবে আপনি এটির সাথে নিবিষ্ট সমস্ত অ্যাপ্লিকেশন ক্র্যাক করতে পারেন!
গ্যালিয়াম নাইট্রাইড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.