আমি জাভা ক্লাসের ফাইলগুলিকে কীভাবে "ডিকম্পাইল" করব? [বন্ধ]


556

ক্লাস ফাইলটি ডিসম্পাইল করতে আমি কোন প্রোগ্রাম ব্যবহার করতে পারি? আমি আসলে জাভা কোড পাব, না এটি কেবল জেভিএম সমাবেশ কোড?

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


4
"পচা" এর শিল্পকে বিপরীত প্রকৌশল হিসাবেও ভাবা যেতে পারে। যদিও কখনও কখনও বিপরীত প্রকৌশল কিছু যখন আপনি সর্বদা বাইনারি অ্যাক্সেস নেই।
মাকাচ

বাইটকোডভিউয়ার.কমের উল্লেখ করা কেউ নেই , যা জাভা উত্সে এবং বাইটোকোডে (জাভা উত্সের জন্য জেএডি ভিত্তিতে ভিত্তি করে) ক্ষয় করতে পারে।
ফার্নান্দো গঞ্জালেজ সানচেজ

উত্তর:


588

ফেব্রুয়ারী ২০১ Update আপডেট করুন:

www.javadecompilers.com জেএডি হিসাবে তালিকাবদ্ধ রয়েছে:

সর্বাধিক জনপ্রিয় জাভা ডিকম্পিলার, তবে প্রাথমিকভাবে কেবল এই বয়সের। সি ++ তে লেখা, খুব দ্রুত।
পুরানো, অসমর্থিত এবং জাভা 5 এবং তার পরে সঠিকভাবে ডিকম্পাইল করে না

সুতরাং আপনার মাইলেজ সাম্প্রতিক জেডকে (7, 8) এর সাথে পরিবর্তিত হতে পারে।

একই সাইট অন্যান্য সরঞ্জাম তালিকা।

আর javadecompiler, যেমন নজরে সালভাডর ভ্যালেন্সিয়া মধ্যে মন্তব্য (সেপ্টেম্বর 2017), একটি SaaS যেখানে আপনার আপলোড করা অফার .classক্লাউডে ফাইল এবং এটি আপনার decompiled কোড ফেরৎ।


আসল উত্তর: অক্টোবর ২০০৮

  • জেএসআর 176 এর চূড়ান্ত প্রকাশ, জেএসইএস 5.0 (জাভা এসই 5) এর প্রধান বৈশিষ্ট্যগুলি নির্ধারণ করে 30 সেপ্টেম্বর, 2004 প্রকাশিত হয়েছে।
  • জেএডি সমর্থিত সর্বশেষতম জাভা সংস্করণ, জনাব পাভেল কাউজনেটসভের রচিত বিখ্যাত জাভা ডিকম্পিলার, জেডিকে ১.৩
  • "ডিজে জাভা ডেকম্পিলার" বা "কাভাজ জাভা ডেকম্পিলার" এর মতো ইন্টারনেট থেকে আজ ডাউনলোড করা যায় এমন বেশিরভাগ জাভা ডিকম্পিলার জেএডি দ্বারা চালিত হয়: তারা জাভা 5 উত্স প্রদর্শন করতে পারে না।

জাভা ডিকম্পিলার (তবুও অন্য একটি দ্রুত জাভা ডিকম্পিলার) রয়েছে:

  • জাভা 5+ ".ক্লাস" ফাইলগুলি নিষ্প্রভ এবং বিশ্লেষণের জন্য সুস্পষ্ট সমর্থন ।
  • একটি দুর্দান্ত জিইউআই:

স্ক্রিনশট

এটি JDK 1.1.8 থেকে JDK 1.7.0 পর্যন্ত সংকলক এবং অন্যদের ( জাইকস , জেরোকিট ইত্যাদি) সাথে কাজ করে।

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


5
+1 এটি উল্লেখযোগ্য যে এটি এটিকেও সংশোধন করেছে, সুতরাং মূলটি (সি ++ এ প্রয়োগ করা) অন্য কোথাও ব্যবহার করা যেতে পারে।
কুইন টেলর

1
jd-gui-0.3.3 এছাড়াও এখানে
শ্রদ্ধা

1
যদি কেউ এক্লিপস জাভা ডেকম্পিলার প্লাগইনটি ইলিপস জুনোতে ইনস্টল করে থাকে এবং মার্কেপ্লেস ডিএনডি ইনিশিয়ালাইজেশন পুরো প্রক্রিয়াটি মেরে ফেলতে বাধ্য করে: জেডি। * অপসারণ করে ।এইগ্রিপ প্লাগইন ডিরেক্টরি থেকে জারটি কেবল আমার জন্য এটি ঠিক করে দিয়েছে।
এলসার্নি

4
@ Ishষি একইভাবে আপনি যে কোনও ভাষা বা প্ল্যাটফর্মে আপনার আইপি রক্ষা করেন - ভাল আইনজীবী। ডিআরএম কেবল বান্দাইদ।
এন্টিমোনি

1
এটি এখন সাশ সরবরাহ করে যেখানে আপনি ক্লাউডে। ক্লাস ফাইলটি আপলোড করেন এবং এটি আপনাকে সংক্ষেপিত কোড দেয়। একটি সাধারণ পোজোর জন্য কাজ করেছেন।
সালভাদোর ভ্যালেন্সিয়া

101

সেখানে কয়েকটি ডিসকম্পিলার রয়েছে ... একটি দ্রুত অনুসন্ধানের ফলন:

  1. প্রোসিওন : ওপেন সোর্স (অ্যাপাচি 2) এবং সক্রিয়ভাবে বিকাশ হয়েছে
  2. ক্র্যাকটাউ : ওপেন-সোর্স (জিপিএলভি 3) এবং সক্রিয়ভাবে বিকাশ হয়েছে
  3. সিএফআর : ওপেন সোর্স (এমআইটি) এবং সক্রিয়ভাবে বিকাশিত
  4. JAD
  5. ডিজে জাভা ডেকম্পিলার
  6. একজাতীয় উৎকৃষ্ট কফি

এবং আরো অনেক.

এগুলি জাভা কোড তৈরি করে। জাভা এমন কিছু নিয়ে আসে যা আপনাকে JVM বাইট কোড ( জাভ্যাপ ) দেখতে দেয় ।


2
আমি আরও যোগ করতে পারি, প্রোকিয়ন, সিএফআর, জেএডি এবং ডিজে একটি ওয়েব-পরিষেবা হিসাবে উপলব্ধ: javadecompilers.com
অ্যান্ড্রু রুকিন


kpdus.com/jad.html হ'ল কিছু AD লিঙ্ক
মার্চিন্জ

ধন্যবাদ @ মার্সিনজ, আমি অন্য লিঙ্কটি পেয়েছি যার সাথে এটি ডাউনলোড করার লিঙ্ক রয়েছে।
বিলজেমসদেব

51

জাভা সোর্স কোড দেখতে কিছু ডিকম্পিলার পরীক্ষা করুন। যাদ অনুসন্ধান করতে যান ।

আপনি যদি বাইটোকডগুলি দেখতে চান তবে জেডিপ ব্যবহার করুন যা জেডিকে সঙ্গে আসে।


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

29

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

এগুলিই আমি চেষ্টা করেছি:

  • CFR
    • প্রতিশ্রুতিবদ্ধ, কিন্তু প্রায়শই ব্যর্থ পদ্ধতি পচন। আমি এই এক নজর রাখছি। সর্বশেষতম জাভা বৈশিষ্ট্যগুলির সমর্থন সহ সক্রিয়ভাবে বিকাশিত।
  • ক্রাকাটাউ
    • এটি ভিন্ন উত্স গ্রহণ করে যে এটি আসল উত্সটি পুনর্গঠন করার চেষ্টা না করে সমতুল্য জাভা কোড আউটপুট দেওয়ার চেষ্টা করে, এতে অপ্রচলিত কোডের জন্য এটি আরও ভাল করার সম্ভাবনা রয়েছে। আমার পরীক্ষা থেকে এটি মোটামুটি প্রসিয়নের সমতুল্য ছিল, তবে আলাদা কিছু থাকতে এখনও চমৎকার। আমাকে -skipকমান্ড-লাইন পতাকা ব্যবহার করতে হবে যাতে এটি ত্রুটিগুলি বন্ধ না করে। সক্রিয়ভাবে বিকাশিত, এবং আকর্ষণীয়ভাবে এটি পাইথনে লেখা রয়েছে।
  • জেডি-গুই
  • JAD
    • কাজ করেছে, তবে কেবল জাভা 1.4 এবং নীচে সমর্থন করে। ইক্লিপস প্লাগইন হিসাবেও উপলব্ধ । এখন আর উন্নয়নের অধীনে নেই।

1
নোট করুন যে IGNORE_EXCEPTIONSজিনিসটি এখন কমান্ড লাইন পতাকায় পরিবর্তিত হয়েছে -skip
এন্টিমোনি



13

নতুন জাভা কোডের জন্য সট একটি বিকল্প। কমপক্ষে এটি সম্প্রতি চালিয়ে যাওয়ার সুবিধা রয়েছে ...

এছাড়াও, জাভা ডেকম্পিলার হ'ল স্ট্যান্ড-অলোন জিইআইআই এবং ইক্লিপস ইন্টিগ্রেশন উভয়ই একটি ।

শেষ পর্যন্ত, জেডেকের উল্লেখ করা হয়নি, যদিও এটি অন্যান্য বিকল্পগুলির মতো পোলিশ নয়।


আপনি কী জানেন যে কীভাবে একটি কংক্রিটের ক্লাস ফাইলটি সোটের সাথে ডেকম্পাইল করবেন? আমি নিশ্চিত নই যে এটি সম্ভব ...
জানুস ট্রয়লসন


11

ফেব্রুয়ারী 2015 পর্যন্ত ডিসকম্পিলারের একটি তালিকা এখানে রয়েছে:

প্রোসিওন , ওপেন সোর্স, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

সিএফআর , বিনামূল্যে, কোনও উত্স-কোড উপলভ্য নয়, http://www.benf.org/other/cfr/

জেডি , কেবল অ-বাণিজ্যিক ব্যবহারের জন্য বিনামূল্যে, http://jd.benow.ca/

ফার্নফ্লাওয়ার , ওপেন সোর্স, https://github.com/fesh0r/fernflower ,

জেএডি - কেবল historical তিহাসিক কারণে এখানে দেওয়া হয়েছে। বিনামূল্যে, কোনও সোর্স-কোড উপলভ্য নয়, http://varaneckas.com/jad/ পুরানো, অসমর্থিত এবং জাভা 5 এবং তার পরে সঠিকভাবে ডিকম্পাইল করে না।

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

মেঘে জাভা ডিসকম্পিলার: http://www.javadecompilers.com/


1
প্রোসিওন সবচেয়ে ভাল কাজ করে !!!!
মার্কোজেন

10

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

ডিজে ডেকম্পিলার মোচা


9

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


3
আপনি এখানে যান: আমি কেবল আপনার উত্তরের একটি উত্তর পোস্ট করেছি;) জেডিকে ১.৫ এবং আরও সমর্থিত!
ভোনসি

"আমি এমন কোনও সরঞ্জাম দেখিনি যা সঠিকভাবে 1.5+ ক্লাস পরিচালনা করবে" - প্রোকিয়ন, ফার্নফ্লাওয়ার, জেডিসোর এবং সিএফআর (এটি একটি জাভা 8 পরিচালনা করে!)
অ্যান্ড্রু রুকিন


6

এখন পর্যন্ত তালিকাভুক্ত সমস্ত জেএডি লিঙ্কগুলি ভাঙ্গা বলে মনে হচ্ছে, তাই আমি এই সাইটটি পেয়েছি। দুর্দান্ত কাজ করে (লিনাক্সের জন্য, কমপক্ষে)! উবুন্টু ১১.১০-এ আমাকে যে কোনও কারণে স্থিতিটি ডাউনলোড করতে হয়েছিল।

http://www.varaneckas.com/jad


5
  • জেএডি হ'ল একটি যা কাজ করে এবং সহজ।

  • এছাড়াও, আপনি যদি কেবল পদ্ধতিগুলি দেখতে চান তবে জাভাপ ব্যবহার করুন।


5

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

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


4

জেএডি আমার পক্ষে কাজ করে না (উবুন্টু ১১.১০ ইস্যু) তাই আমি এগিয়ে চলেছি এবং জেডিও-র উপর বসে আছি । কমপক্ষে এতে ওপেন জাভা সোর্স কোড রয়েছে এবং আমার। ক্লাসটি সঠিকভাবে ডিকম্পাইল করতে সক্ষম হয়েছে ।

আমি প্রথমে 'শাখা / জেনেরিক' শাখাটি পরীক্ষা করার পরামর্শ দিই । কাণ্ড স্থিতিশীল নয়।


1
JODO বিক্ষিপ্তভাবে রক্ষণাবেক্ষণ করা হয় যখন সিএফআর এবং প্রসিয়ন সক্রিয়ভাবে বিকাশিত এবং জেডিকে 8 সমর্থন রয়েছে।
জানুস ট্রয়লসন

4

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

এখানে চিত্র বর্ণনা লিখুন


@ নওপ্স আপনি কি রোবট? বা শুধু পর্যালোচনার বিষয়ে মনোযোগ দিচ্ছেন না?
naXa

এর জন্য দুঃখিত, প্রথম নজরে মনে হচ্ছে কেবল উত্তরটির লিঙ্ক। হতে পারে আপনার আরও বিশদ যুক্ত করা উচিত এবং আপনার উত্তরটি কেবল প্রশ্নের শিরোনামের সাথে মেনে চলতে হবে না content
ashiquzzaman33

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

@ ক্রিস আপনি কি প্রস্তাবিত সমাধানটির চেষ্টা করেছেন? এমনকি আপনি প্রশ্নটি পড়েছেন ?
naXa

1
@ নূপ অসভ্য বলে দুঃখিত: = (পর্যালোচনা করে এমন সংখ্যা দেখে আমি অভিভূত হয়েছি যারা মনোযোগ দেয় না।
নেক্সা

1

সঙ্গে AndroChef জাভা Decompiler আপনি APK, Dex, বয়াম এবং জাভা ক্লাস-ফাইল decompile পারবেন না। এটি সহজ এবং সহজ। AndroChef জেডি উপর ভিত্তি করে তৈরি FernFlower । আপনি এটি 10 ​​বিনামূল্যে ব্যবহারে মূল্যায়ন করতে পারেন।

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


1
@ ডিমিট্রিয়াস, দয়া করে একটি পর্যালোচনা চলাকালীন উত্তরগুলি মনোযোগ সহকারে পড়ুন। আপনি এখানে কীভাবে একটি ফার্নফ্লোয়ার বা অ্যান্ড্রো শেফ সহ কল্পনা করবেন?
নেক্সা

1

ওএসএক্সের জন্য আমি প্রস্তাব দিই: জারজিলা বা জেডি-জিইউআই

তারা উভয়ই আপনাকে জার, যুদ্ধ ইত্যাদি দেখতে দেয়। বিষয়বস্তু ফাইল করুন এবং এগুলির মধ্যে যে কোনও শ্রেণিবদ্ধ ফাইল ডেকম্পিল করে।

জারজিলা: https://code.google.com/p/jarzilla/
জেডি-জিইউআই: http://jd.benow.ca/

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