কীভাবে কোনও জাভা উত্সকোডে অ্যান্ড্রয়েড ডিএক্স (ভিএম বাইটকোড) ফাইলগুলি ডিসকম্পাইল করতে পারে?
কীভাবে কোনও জাভা উত্সকোডে অ্যান্ড্রয়েড ডিএক্স (ভিএম বাইটকোড) ফাইলগুলি ডিসকম্পাইল করতে পারে?
উত্তর:
এই সরঞ্জামগুলি পান:
1) ডেক্স 2 জার ডেক্স ফাইলগুলি জার ফাইলগুলিতে অনুবাদ করতে
2) জেডি-গুই জারে ফাইলগুলি দেখতে জারে
উত্স কোডটি বেশ পঠনযোগ্য কারণ ডেক্স 2 জার কিছু অপ্টিমাইজেশন করে।
এবং এখানে কীভাবে পচন করতে হবে তার পদ্ধতিটি এখানে:
টেক্সট_এপকে-ডিবাগ.এপকে টেস্ট_এপকে-ডিবাগ_ডেক্স ২জার.জারে ক্লাস.ডেক্স রূপান্তর করুন
d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex
নোট 1: উইন্ডোজ মেশিন মধ্যে সব
.sh
স্ক্রিপ্ট দ্বারা প্রতিস্থাপিত হয়.bat
স্ক্রিপ্টদ্রষ্টব্য 2: লিনাক্স / ম্যাক সম্পর্কে
sh
বা ভুলে যাবেন নাbash
। সম্পূর্ণ কমান্ডটি হওয়া উচিত:
sh d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
নোট 3: এছাড়াও,
dex2jar-X.X
ডিরেক্টরি যেমন চালানো অনুমতি যুক্ত মনে রাখবেনsudo chmod -R +x dex2jar-2.0
জেডি-জিইআইতে জারটি খুলুন
কিছুটা স্পষ্ট করার জন্য, আপনি কী অর্জন করতে চান তার উপর নির্ভর করে দুটি বড় পথ আপনি এখানে নিতে পারেন:
ডালভিক বাইটকোড (ডেক্স) পাঠযোগ্য জাভা উত্সে ছড়িয়ে দিন। ফ্রেডের উল্লেখ হিসাবে আপনি ডেক্স 2 জার এবং জেডি -গুই দিয়ে এটি সহজেই করতে পারেন । ফলস্বরূপ উত্সটি কোনও অ্যাপ্লিকেশনটির কার্যকারিতা পড়তে এবং বুঝতে দরকারী useful তবে এটি সম্ভবত 100% ব্যবহারযোগ্য কোড তৈরি করবে না। অন্য কথায়, আপনি উত্সটি পড়তে পারেন, তবে আপনি সত্যিই এটি সংশোধন এবং পুনঃস্থাপন করতে পারবেন না। মনে রাখবেন যে উত্সটি যদি অগ্রগতির সাথে অবিচ্ছিন্ন হয়ে থাকে তবে ফলস্বরূপ উত্স কোডটি আনুভূমিকায়িত করার পক্ষে যথেষ্ট বেশি কঠিন।
অন্য প্রধান বিকল্পটি হ'ল বামকোডকে স্মালিতে বিচ্ছিন্ন করা , একটি সমাবেশ ভাষা যা এই উদ্দেশ্যে সুনির্দিষ্টভাবে তৈরি করা হয়েছে। আমি খুঁজে পেয়েছি যে এটি করার সবচেয়ে সহজ উপায়টি apktool । একবার আপনি apktool ইনস্টল হয়ে গেলে, আপনি কেবল এটি একটি এপিকে ফাইলটিতে নির্দেশ করতে পারেন, এবং আপনি অ্যাপ্লিকেশনটিতে থাকা প্রতিটি শ্রেণীর জন্য একটি স্মৃতি ফাইল ফিরে পাবেন। আপনি নতুন জাভা উত্স থেকে স্মালি তৈরি করে এমনকি স্মালি পড়তে বা সংশোধন করতে পারেন বা ক্লাস সম্পূর্ণরূপে প্রতিস্থাপন করতে পারেন (এটি করার জন্য, আপনি নিজের। জাভা উত্সটি জাভ্যাক দিয়ে। ক্লাস ফাইলগুলিতে সংকলন করতে পারেন, তারপরে আপনার। ক্লাস ফাইলগুলিকে অ্যান্ড্রয়েডের সাথে ডেক্স ফাইলগুলিতে রূপান্তর করতে পারেন) dx সংকলক, এবং তারপরে বাক্সমালি (স্মাইল ডিসেসেমব্লার) ব্যবহার করুন .dex কে .smali ফাইলগুলিতে রূপান্তর করতে, এই প্রশ্নে বর্ণিত হিসাবে। এখানে একটি শর্টকাট থাকতে পারে)। একবার হয়ে গেলে আপনি সহজেই আবার apktool এর সাহায্যে এপিকে প্যাকেজ করতে পারেন। নোট করুন যে অ্যাপটলটি ফলিত এপিকে স্বাক্ষর করে না, তাই আপনাকে অন্য যে কোনও অ্যান্ড্রয়েড অ্যাপ্লিকেশনের মতো যত্ন নেওয়া দরকার ।
আপনি যদি স্মলির পথে যান তবে আপনি APK স্টুডিও ব্যবহার করতে পারেন , এটি একটি আইডিই যা আপনাকে কোনও অ্যাপকে পুনরায় সংশোধন ও পুনরায় সংযোগ এবং ডিভাইসে ইনস্টল করার জন্য উপরের কয়েকটি পদক্ষেপ স্বয়ংক্রিয় করে তোলে mates
সংক্ষেপে, আপনার পছন্দগুলি জাভাতে বিচ্ছিন্ন হয়ে পড়ার মতো, যা আরও বেশি পঠনযোগ্য তবে সম্ভবত অপরিবর্তনীয়, বা স্মালির সাথে বিচ্ছিন্ন করা, যা পড়া সহজ এবং পরিবর্তিত অ্যাপ্লিকেশনটিকে পুনরায় বিতরণ করতে আরও নমনীয়। আপনি কোন পদ্ধতির চয়ন করছেন তা আপনি কী অর্জন করতে চাইছেন তার উপর নির্ভর করবে।
সর্বশেষে, পরামর্শে সাহস আরো উল্লেখ্য হয়। .Dex এবং .apk ফাইলগুলিকে জাভা .class ফাইলগুলিতে রূপান্তর করার জন্য এটি একটি retargeting সরঞ্জাম, যাতে তারা সাধারণত জাভা স্থির বিশ্লেষণ সরঞ্জামগুলি ব্যবহার করে বিশ্লেষণ করা যায়।
আমি এখানে যাবার প্রস্তাব দিই: https://github.com/JesusFreke/smali
এটি বাকশমালি সরবরাহ করে, যা ডেক্স ফাইলগুলির জন্য সবচেয়ে দুর্দান্ত বিপরীত প্রকৌশল সরঞ্জাম। এটি যিশুফ্রেইক তৈরি করেছেন, যে লোকটি অ্যান্ড্রয়েডের জন্য বিখ্যাত রম তৈরি করেছিল।
./apktool d myprogram.apk
। আমার উত্তর দেখুন ।
এর আরো একটি সম্পূর্ণ সংস্করণ ফ্রেড এর উত্তর :
ডেক্সের সমস্ত (সংকলিত) ক্লাসটি একটি জেআর থেকে বের করার জন্য প্রথমে আপনার একটি সরঞ্জাম প্রয়োজন । ডেক্স টুজার
নামে একটি রয়েছে , এটি একটি চীনা শিক্ষার্থী তৈরি করেছে।
তারপর, আপনি ব্যবহার করতে পারেন জেডি-GUI থেকে decompile সোর্স কোড JAR- র উপর ক্লাস।
ফলস্বরূপ উত্সটি বেশ পঠনযোগ্য হওয়া উচিত, কারণ ডেক্স 2জারটি কয়েকটি অপ্টিমাইজেশন প্রয়োগ করে।
আপনি APKTool ব্যবহার করতে পারেন । এটা করবে না স্বয়ংক্রিয়ভাবে সব শ্রেণীর (নিষ্কর্ষ .dex
) সম্পদ ( .asrc
), তারপর এটা রূপান্তর করবে বাইনারি এক্সএমএল করতে পাঠযোগ্য এক্সএমএল , এবং এটা হবে dissassemble তোমার জন্য ক্লাস।
বিচ্ছিন্নতা সর্বদা
পচানোর চেয়ে আরও শক্তিশালী হবে, বিশেষত
প্রো গার্ডের সাথে নিবিড় জারগুলি দিয়ে!
কেবল APKTool কে APK ডিরেক্টরিকে ডিরেক্টরিতে ডিকোড করতে বলুন , তারপরে আপনি যা চান তা সংশোধন করুন
এবং শেষ পর্যন্ত এটিকে একটি এপিএকে এনকোড করুন । এখানেই শেষ.
গুরুত্বপূর্ণ: APK টুল বিযুক্ত করা । এটি পচা হয় না ।
উত্পন্ন কোডটি জাভা উত্স হবে না।
তবে আপনি এটি পড়তে সক্ষম হবেন এবং আপনি জেসমিনের সাথে পরিচিত হলে এটি সম্পাদনাও করতে পারবেন ।
আপনি যদি জাভা উত্স চান, দয়া করে ম্যানুয়াল পথে এগিয়ে যান ।
কখনও কখনও আপনি ভাঙা কোড পান, যখন dex2jar
/ ব্যবহার করার সময় apktool
, বিশেষত লুপগুলিতে। এই, ব্যবহার এড়াতে jadx একটি তৈরি ছাড়া, যা decompiles Dalvik বাইটকোড জাভা সোর্স কোডে, .jar
/ .class
প্রথম ফাইল হিসাবে dex2jar
(apktool ব্যবহারসমূহ dex2jar আমি মনে করি) আছে। এটি ওপেন সোর্স এবং সক্রিয় বিকাশেও রয়েছে। এমনকি এটিতে জিইউআই রয়েছে, জিইউআই-ধর্মান্ধদের জন্য। চেষ্টা করে দেখুন!
javac "$(find . -name '*.java')"
?
আমি ব্যবহার করেছি
তবে গুগলের নিজস্ব সরঞ্জামগুলিকে কেউ মারছে না
যেহেতু কেউ এটি উল্লেখ করেনি, তেমনি আরও একটি সরঞ্জাম রয়েছে: ডিইডি হোমপেজ
কীভাবে এবং কিছু ব্যাখ্যা ইনস্টল করুন: ইনস্টলেশন ।
শীর্ষ বাজারের অ্যাপ্লিকেশনগুলির সুরক্ষা সম্পর্কে এটি একটি আকর্ষণীয় গবেষণায় ব্যবহৃত হয়েছিল (সত্যিই সম্পর্কিত নয়, কেবল আপনি কৌতূহলী হলে): অ্যান্ড্রয়েড অ্যাপ্লিকেশন সুরক্ষা জরিপ
যেহেতু Dheeraj Bhaskar
উত্তর অনেক বছর আগের তুলনামূলকভাবে পুরানো।
এখানে আমার সর্বশেষ (2019 বছর) উত্তর:
থেকে dex
থেকে java sourcecode
, বর্তমানে সমাধান দুই ধরনের আছে:
One Step
: সরাসরি রূপান্তর dex
করতেjava sourcecode
Two Step
: প্রথম ধর্মান্তরিত dex
করার jar
দ্বিতীয় ধর্মান্তরিত jar
করারjava sourcecode
dex
সরাসরিjava sourcecode
bin
ফোল্ডারে কমান্ড লাইন jadx
বা জিইউআই সংস্করণ দেখতে পাবেন jadx-gui
, জিইউআই সংস্করণটি চালাতে ডাবল ক্লিক করুন:jadx-gui
dex
ফাইল খুলুনতারপরে জাভা উত্স কোডটি দেখাতে পারে:
File
-> save as gradle project
তারপরে জাভা সোর্সকোড পেয়েছেন:
dex
থেকেjar
Dex2jar জিপ ডাউনলোড করুন , আনজিপ পেয়েছে d2j-dex2jar.sh
, তারপরে:
apk
থেকে jar
:sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
dex
থেকে jar
:sh d2j-dex2jar.sh -f ~/path/to/dex_to_decompile.dex
উদাহরণ:
➜ v3.4.8 /Users/crifan/dev/dev_tool/android/reverse_engineering/dex-tools/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.huili.readingclub8825612.dex
dex2jar com.huili.readingclub8825612.dex -> ./com.huili.readingclub8825612-dex2jar.jar
➜ v3.4.8 ll
-rw------- 1 crifan staff 9.5M 3 21 10:00 com.huili.readingclub8825612-dex2jar.jar
-rw------- 1 crifan staff 8.4M 3 19 14:04 com.huili.readingclub8825612.dex
jar
থেকেjava sourcecode
many
কোডটি ত্রুটিটি বিভক্ত করবেminor
কোড ত্রুটি ছিন্ন করবেno
কোড ডেকম্পাইল ত্রুটি
Procyon
এখানে ডেমো Procyon
জার উত্স কোডে জার রূপান্তর করে:
প্রোকিওন-ডিকম্পিলার -০.০.৩৪.জার ডাউনলোড করুন
তারপরে সিনট্যাক্স ব্যবহার করুন:
java -jar /path/to/procyon-decompiler-0.5.34.jar -jar your_to_decompile.jar -o outputFolderName
উদাহরণ:
java -jar /Users/crifan/dev/dev_tool/android/reverse_engineering/Procyon/procyon-decompiler-0.5.34.jar -jar com.huili.readingclub8825612-dex2jar.jar -o com.huili.readingclub8825612
রফতানি উত্স কোডটি খোলার জন্য সম্পাদক ভিএসকোড ব্যবহার করে দেখুন:
রূপান্তর শুদ্ধি: Jadx
> Procyon
> CRF
>JD-GUI
ব্যবহারের পরামর্শ দিন: (এক ধাপের সমাধান) Jadx
আরও বিশদ ব্যাখ্যার জন্য, দয়া করে আমার অনলাইন চাইনিজ ইবুকটি দেখুন : 安卓 应用 的 安全 和 破解
dex2jar-2.0>d2j-dex2jar.bat -f D:\android\some_dex_file.dex
ব্যতিক্রম পেয়েছে:java.io.IOException: the src file not a .dex or zip file
d2j-dex2jar.bat "D:\android\some_dex_file.dex"
ঠিক আছে নাকি?
>d2j-dex2jar.bat file.dex
কিন্তু ঠিক নেই। আমার .dex
ফাইলটি অনুলিপি করার কারণে এটি হতে পারে dalvik-cache
?
dex is copied from dalvik-cache
, সম্ভবত হওয়া উচিতdex is decompiled from apk
একবার আপনি আপনার APK ফাইলটি ডাউনলোড করার পরে, সম্পাদনাযোগ্য জাভা কোড / নথি পেতে আপনাকে নিম্নলিখিত পদক্ষেপগুলি করতে হবে।
সঙ্গে Dedexer , আপনি অবতরণ করতে .dex
Dalvik বাইটকোডে গঠন করে নিতে ফাইল ( .ddx
)।
আমি যতদূর জানি জাভা অভিমুখে পচন সম্ভব নয়।
আপনি এখানে ডালভিক বাইটকোড সম্পর্কে পড়তে পারেন ।
অ্যান্ড্রয়েড বিপরীত প্রকৌশল সম্ভব । Apk ফাইল থেকে জাভা ফাইল পেতে এই পদক্ষেপগুলি অনুসরণ করুন।
ধাপ 1 . ডেক্স 2জার ব্যবহার করছেন
dex2jar sampleApp.apk
ধাপ ২ . জেডি-জিইউআই ব্যবহার করে
সাম্প্রতিক ডেবিয়ানের পাইথন প্যাকেজ রয়েছে androguard
:
Description-en: full Python tool to play with Android files
Androguard is a full Python tool to play with Android files.
* DEX, ODEX
* APK
* Android's binary xml
* Android resources
* Disassemble DEX/ODEX bytecodes
* Decompiler for DEX/ODEX files
সম্পর্কিত প্যাকেজ ইনস্টল করুন:
sudo apt-get install androguard python-networkx
ডেক্সপাইল ডিএক্স ফাইল:
$ androdd -i classes.dex -o ./dir-for-output
classes.dex
Apk + Decompile থেকে এক্সট্রাক্ট করুন :
$ androdd -i app.apk -o ./dir-for-output
এপিপি ফাইল জাভা সংরক্ষণাগার (জার) এর চেয়ে বেশি কিছু নয়, আপনি সংরক্ষণাগার থেকে ফাইলগুলি এর মাধ্যমে বের করতে পারেন:
$ unzip app.apk -d ./dir-for-output
এর বেশিরভাগ উত্তর পোস্ট হওয়ার পরে অনেক কিছু পরিবর্তন হয়েছে। এখনকার দিনে জিইউআই এর সাথে অনেকগুলি সহজ সরঞ্জাম রয়েছে, এর মতো:
APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit
এগুলির সন্ধানের জন্য সেরা স্থানটি এক্সডিএ বিকাশকারীদের ফোরামে।
আপনি জেএডএক্স চেষ্টা করতে পারেন ( https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler ), এটি ডেক্স সংক্ষেপণের জন্য একটি উপযুক্ত সরঞ্জাম।
এবং হ্যাঁ, এটি অনলাইনে (আমার: 0) নতুন সাইটেও উপলব্ধ: http://www.javadecompilers.com/apk/
নিম্নলিখিত পাঁচটি পদক্ষেপে এটি করা যেতে পারে:
এই মণিটি স্বয়ংক্রিয়ভাবে এমনকি প্রয়োজনীয় সরঞ্জামগুলির ইনস্টলেশন এমনকি আপনার জন্য এই জিনিসগুলি করে
অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি ছড়িয়ে দেওয়ার সহজতম পদ্ধতি হ'ল প্লেস্টোর থেকে শোজভা নামে একটি অ্যাপ্লিকেশন ডাউনলোড করা । অ্যাপ্লিকেশনগুলির তালিকা থেকে যে অ্যাপ্লিকেশনটি ক্ষয় করতে হবে তা কেবল নির্বাচন করুন। তিনটি পৃথক ডিকম্পাইলার রয়েছে যা আপনি কোনও অ্যাপ্লিকেশন ডিকম্পাইল করতে ব্যবহার করতে পারেন -
সিএফআর 0.110, জেডিএক্স 0.6.1 বা ফার্নফ্লোয়ার (বিশ্লেষণাত্মক ডিকম্পিলার)।
আপনি যদি ডেক্স 2জার ডাউনলোড করতে খুঁজছেন না, তবে জার ফাইলগুলিতে যে কোনও এপিকে ডেকম্পাইল করতে কেবল apk_grabber
পাইথন স্ক্রিপ্টটি ব্যবহার করুন । তারপরে আপনি এগুলি জেডি-গুই দিয়ে পড়েন।