الفرق بين Disassembler, Decompiler, Debugger
1-الDisassembler عبارة عن برنامج بياخد الMachine Code الموجود في سكشن .text اللي جوا الملف ويحوله لـ Assembly Code
الDisassembler يختلف عن الDecompiler في انه بيطلع الكود في شكل Assembly code ولكن الDecompiler بيطلع الكود في شكل High-Level Programming Language زي C++ مثلا
فيه disassemblers كتير تقدر تستخدمهم زي:
IDA
Ghidra
Binary Ninja
Cutter
gdb
2-الDecompiler عكس الCompiler، بيقوم بنفس اللي بيعمله الDisassembler ولكن بإختلاف ان الDecompiler بيطلع High-Level Code،، يعني الDecompiler بياخد الexecutable file يحوله ل source file فيه high-level progamming language code زي كود C مثلا او غيره
أمثلة لtools تقدر تستخدمها كdecompilers:
dnSpy
IDA
JD Project
Cavaj Java Decompiler
Ghidra
ILSpy
3-الDebugger برنامج بيستخدم لاختبار وتصحيح البرامج، بيتم تشغيله تحت شروط معينة بتسمح للشخص انه يراقب ويحدد العمليات والتغييرات اللي بتحصل في ال memory والcpu registers والdisk وبيسمح كمان بتعديل محتوياتهم .... كل دا والبرنامج شغال
أمثلة على الdebuggers اللي تقدر تستخدمها:
ollydbg
x64dbg
gdb
IDA pro debugger
WinDbg
=ممكن نستخدم الDisassembler والDecompiler في مرحلة Advanced Static Analysis عشان نراجع الassembly instructions والcode
=ممكن نستخدم الDebugger في مرحلة Advanced Dynamic Analysis عشان نفحص ونحلل الMalware وهو شغال