বিপরীত প্রকৌশল: এটি আসলে কী জন্য ভাল? [বন্ধ]


15

আমার কিছু নির্দোষ / শুরুর প্রশ্ন রয়েছে:

  • রিভার্সিং ইঞ্জিনিয়ারিং কীসের জন্য ভাল?
  • প্রোগ্রামার হিসাবে আমার কি রিভার্স ইঞ্জিনিয়ারিংয়ের শিল্প শিখতে হবে?
  • যে প্রোগ্রামার এর সাথে অভিজ্ঞ সেটির কী কী সুবিধা রয়েছে?

5
এই প্রশ্নটি কি কেবল বিচ্ছিন্ন প্রকৃতির বিযুক্তি ধরণের সম্পর্কে , বা অন্যগুলি সম্পর্কেও? (যেহেতু "সমাবেশ" এবং "নিম্ন-স্তরের" ট্যাগগুলিতে রয়েছে ..)
ইজকাটা

উত্তর:


14

বিপরীত প্রকৌশল কি জন্য ভাল?

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

প্রোগ্রামার হিসাবে আমার কি রিভার্স ইঞ্জিনিয়ারিংয়ের শিল্প শিখতে হবে?

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

রিভার্স ইঞ্জিনিয়ারিংয়ের সাথে অভিজ্ঞ অভিজ্ঞ প্রোগ্রামারের কী কী সুবিধা হবে?

আপনি একজন ভাল হ্যাকার / ক্র্যাকার হবেন। আপনি অন্যান্য অ্যান্টি ভাইরাস উত্পাদকদের পক্ষে কাজ করতে পারেন। একটি ব্যক্তিগত উদাহরণ হিসাবে: আমি একবার ওরাকল সংযোগ স্থাপনের সময় ঘটে যাওয়া একটি ত্রুটিটি সনাক্ত করার জন্য একটি সফ্টওয়্যার ইঞ্জিনিয়ার করেছিলাম। অন্য কেউ সমস্যা সমাধান করতে পারেনি, তাই আমি কিছু খ্যাতি পেয়েছি।

এছাড়াও, আমি @ জোহানেস মন্তব্যটি উদ্ধৃত করতে চাই , কারণ তিনি একেবারে সঠিক:

আমি এটিকে "খারাপ" ক্র্যাকিংয়ের মধ্যে সীমাবদ্ধ করব না। সংকলকটি পাগল হয়েছে কিনা তা নির্ধারণ করার জন্য ডিসসেম্বলিং দরকারী হতে পারে (সাধারণত এটি আপনার কোড, যদিও), আরও সিসাদমিন দৃষ্টিভঙ্গি থেকে এটি কোথায় আবেদন প্রয়োগ করতে ব্যর্থ হবে তা আকর্ষণীয় হতে পারে see


8
আমি এটিকে "খারাপ" ক্র্যাকিংয়ের মধ্যে সীমাবদ্ধ করব না। সংকলকটি পাগল হয়ে গেছে কিনা তা নির্ধারণ করার জন্য ডিসসেম্বলিং দরকারী হতে পারে (সাধারণত এটি আপনার কোড, যদিও) আরও সিসাদমিন দৃষ্টিকোণ থেকে এটি প্রয়োগ আকর্ষণীয় হতে পারে যেখানে কোনও অ্যাপ্লিকেশন ব্যর্থ হয়, ...
জোহানেস

@ জোহানেস: হ্যাঁ, আপনি ঠিক বলেছেন। আমি কি আমার উত্তরে লিখতে পারি?
ফ্যালকন

অবশ্যই, আপনার পছন্দ মতো করুন, আমি এতে কোনও কপিরাইট দাবি করি না ;-)
জোহনেস

7
আমি দুঃখিত তবে এটি একটি সম্পূর্ণ ভয়ঙ্কর উত্তর। বিপরীত ইঞ্জিনিয়ারিং একেবারে সংজ্ঞায়িত হিসাবে "প্রধানত ... ক্র্যাকিং এবং হ্যাকিং" নয়, এবং যে কেউ সিস্টেম প্রোগ্রামিংয়ের সাথে লেনদেন করেন না, সেটিকে আদর্শিক দৃষ্টিকোণ থেকে পরিচয় করিয়ে একটি বিঘ্ন ঘটানো হচ্ছে।
চুউ

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

25

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

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

উত্স কোডটি অন্তর্ভুক্ত না করা থাকলে আমরা কিনে থাকা তৃতীয় পক্ষের উপাদানগুলিতে কোডের মান (অবশ্যই কিছু নির্দিষ্ট প্রতিবন্ধকতা সহ) পরীক্ষা করতে আমরা বিপরীত প্রকৌশলী ব্যবহার করি।

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


হেক, আমরা এমনকি তৃতীয় পক্ষের সিস্টেমগুলির এসকিউএল সঞ্চিত পদ্ধতিগুলি সন্ধান করি যা তারা আমাদের প্রয়োজনীয়তা সঠিকভাবে পূরণ করে কিনা তা পরীক্ষা করার জন্য rent
মাচাদো

3
+1 টি। এমনকি কোনও বড় সংস্থার একটি বড়-বিক্রয় সফ্টওয়্যার পণ্যও অনেক সময় ব্ল্যাক বক্স হতে পারে, যা অপ্রতুল, সেকেলে, খালি-সরল-ভুল, কখনও কখনও অন-লাইনের ডকুমেন্টেশন এবং এ জাতীয়।
রাল্ফচাপিন

13

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

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


+1, আমার জন্য বিশেষত সত্য। আমি এমন কয়েকটি ব্যাঙ্কে কাজ করেছি যেখানে লিগ্যাসি সিস্টেমগুলির একটিও প্রযুক্তিগত ডকুমেন্ট নেই।
মাচাডো

7

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

প্রায় 30% ক্ষেত্রে গ্রাহক তাদের সিস্টেমে মোটেও উত্স পান নি এবং অনেক ক্ষেত্রে সত্যিকারের ব্যবসায়িক প্রক্রিয়া, বিধি এবং জ্ঞান অনেকাংশেই কোডের সাথে লক করে রাখা হয়েছে।

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

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


2

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


1

কখনও কখনও এটি যতটা আমি বুঝতে পারি আন্তঃচালিত করার জন্য কিছু অংশ / সফ্টওয়্যার পেতে ব্যবহার করা হয়। কিছু অদ্ভুত ইন্টারফেস, প্রয়োগে বাগ ইত্যাদি etc.

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


1

ঠিক আছে, বিপরীত প্রকৌশল দিয়ে আপনি কোডটি আপনার কাজকে হ্রাস করে পুনরায় ব্যবহার করতে পারবেন For উদাহরণস্বরূপ, সিমফনি 2 এ, আপনি সাধারণ মাইএসকিউএল থেকে তৈরি একটি ডাটাবেসকে রূপান্তর করতে পারেন এবং এটিকে মতবাদ বিন্যাসে রূপান্তর করতে পারেন এবং এটি একটি বিপরীত ইঞ্জিনিয়ারড প্রক্রিয়া যা সিমফনিতে সম্ভব হয়েছিল is .... এবং বিপরীত ইঞ্জিনিয়ারিংয়ের সাথে আপনি কোডটি '2 ডি' বলার জন্য দেখতে সক্ষম হবেন


0

আমি আমার অভিজ্ঞতা থেকে একটি বাস্তব বিশ্বের উদাহরণ দিচ্ছি।

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

আমাকে সাবপ্রজেক্টটি রিভার্সিং ইঞ্জিনিয়ারকে করতে হয়েছিল।

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

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

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

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