
Reverify যা করে
Reverify হলো একটি AI-সহায়িত রিভার্স-ইঞ্জিনিয়ারিং টুলকিট, যা বাইনারি বিশ্লেষণের সময় হ্যালুসিনেশন কমানোর জন্য তৈরি। কোনো ল্যাঙ্গুয়েজ মডেলের পুনর্গঠনের ওপর আস্থা রাখার পরিবর্তে, Reverify সেটিকে একটি হাইপোথিসিস হিসেবে বিবেচনা করে এবং প্রকৃত বাইনারির সঙ্গে মিলিয়ে যাচাই করে।
ওয়ার্কফ্লোটি সহজ: মডেল প্রস্তাব করে, আর ডিটারমিনিস্টিক টুল যাচাই করে। Reverify বাইট ডিসঅ্যাসেম্বল করতে, প্যাটার্ন স্ক্যান করতে, এক্সিকিউটেবল ফরম্যাট পার্স করতে, স্ট্রিং এক্সট্র্যাক্ট করতে, কোড এমুলেট করতে এবং ওয়্যার ফরম্যাট পরিদর্শন করতে পারে। যাচাই করা কোনো দাবির ফলাফল তিনটির একটিতে নির্ধারিত হয়: VERIFIED, REFUTED, অথবা INCONCLUSIVE; এর সঙ্গে পর্যবেক্ষিত প্রমাণও দেওয়া হয়।
Reverify কেবল অনুমোদিত রিভার্স ইঞ্জিনিয়ারিংয়ের কাজে ব্যবহার করুন, যেমন ম্যালওয়্যার বিশ্লেষণ, CTF চ্যালেঞ্জ, ইন্টারঅপারেবিলিটি গবেষণা এবং আপনার মালিকানাধীন বা পরিদর্শনের অনুমতি থাকা সফটওয়্যার।
মূল বৈশিষ্ট্য
- ডিটারমিনিস্টিক যাচাই: AI-উৎপাদিত ব্যাখ্যা থেকে গ্রহণ করার পরিবর্তে, টার্গেট বাইনারিতে পর্যবেক্ষিত বাইটের ভিত্তিতে দাবিগুলো মূল্যায়ন করা হয়।
- এক্সিকিউটেবল পার্সিং: PE, ELF এবং Mach-O ফাইল পরিদর্শন করুন; সমর্থিত ক্ষেত্রে আর্কিটেকচার, এন্ট্রি পয়েন্ট, সেকশন, ইমপোর্ট এবং এক্সপোর্টও দেখা যায়।
- ডিসঅ্যাসেম্বলি ও এমুলেশন: x86, x64, ARM এবং ARM64 কোড বিশ্লেষণ করুন; সক্ষমতা সক্রিয় ব্যাকএন্ডের ওপর নির্ভর করে।
- প্যাটার্ন ও স্ট্রিং বিশ্লেষণ:
??ওয়াইল্ডকার্ড ব্যবহার করে AOB প্যাটার্ন স্ক্যান করুন এবং অফসেটসহ ASCII বা UTF-16LE স্ট্রিং এক্সট্র্যাক্ট করুন। - প্রোটোকল পরিদর্শন: স্কিমা ছাড়াই Protobuf এবং TLV ডেটা ডিকোড করুন।
- রিভার্স-ইঞ্জিনিয়ারিং ইউটিলিটি: Frida হুক জেনারেট করুন, অ্যালাইন্ড হেক্স ডাম্প তৈরি করুন এবং বাইনারি ডিফ বা প্যাচ প্রস্তুত করুন।
- এজেন্ট ইন্টিগ্রেশন: Claude Code এবং Cursor-এর মতো টুলের জন্য Reverify-কে Model Context Protocol সার্ভার হিসেবে চালান।
- Pure-Python fallback: বেস প্যাকেজটি Ghidra বা বাধ্যতামূলক নেটিভ বিশ্লেষণ ইঞ্জিন ছাড়াই কাজ করে।
ইনস্টলেশন ও সেটআপ
Pure-Python Core ইনস্টল করুন
PyPI থেকে CLI এবং MCP সার্ভার ইনস্টল করুন:
pip install reverify
এতে Pure-Python core পাওয়া যায় এবং শুরু করার জন্য এটিই সবচেয়ে সহজ উপায়।
ঐচ্ছিক পরিণত ইঞ্জিন ইনস্টল করুন
উন্নত পার্সিং, ডিসঅ্যাসেম্বলি এবং এমুলেশনের জন্য full extra ইনস্টল করুন:
pip install "reverify[full]"
পূর্ণ ইনস্টলেশন Reverify-কে ডিসঅ্যাসেম্বলির জন্য Capstone, CPU এমুলেশনের জন্য Unicorn এবং PE, ELF ও Mach-O পার্সিংয়ের জন্য LIEF ব্যবহার করতে সক্ষম করে। এই প্যাকেজগুলো অনুপলব্ধ হলে Reverify তার Pure-Python বাস্তবায়নে ফিরে যায়।
কোন ইঞ্জিনগুলো সক্রিয় আছে তা পরীক্ষা করুন:
reverify backends
Checkout থেকে সরাসরি চালান
প্যাকেজ ইনস্টল না করেও রিপোজিটরি ব্যবহার করা যায়:
python reverify/cli.py auto sample.bin --json
python reverify/cli.py parse-pe sample.exe --json
python reverify/cli.py disasm 90505831C0C3 --arch x86_64
বেসিক বাইনারি ট্রায়াজ
ফাইলের ফরম্যাট ও আর্কিটেকচার শনাক্ত করতে, সেকশন পরিদর্শন করতে এবং উল্লেখযোগ্য স্ট্রিং রিপোর্ট করতে auto কমান্ড দিয়ে শুরু করুন:
reverify auto sample.bin --json
অন্য কোনো স্ক্রিপ্ট, CI job বা AI agent-কে প্রোগ্রাম্যাটিকভাবে ফলাফল ব্যবহার করাতে হলে --json অপশনটি কার্যকর।
PE, ELF বা Mach-O ফাইলের কেন্দ্রীভূত এক্সিকিউটেবল পার্সিংয়ের জন্য parse ব্যবহার করুন:
reverify parse sample.bin --json
Windows executable-এর ক্ষেত্রে, নির্দিষ্ট PE parser PE32 বা PE32+ header, imports এবং exports পরিদর্শন করতে পারে:
reverify parse-pe sample.exe --json
Raw Byte ডিসঅ্যাসেম্বল করা
disasm কমান্ড হেক্সাডেসিমেল machine code ডিকোড করতে পারে। এই উদাহরণটি একটি সংক্ষিপ্ত x86-64 sequence বিশ্লেষণ করে:
reverify disasm 90505831C0C3 --arch x86_64
কোনো প্রস্তাবিত instruction sequence বাইটের সঙ্গে মেলে কি না তা পরীক্ষা করতে ডিসঅ্যাসেম্বলি কার্যকর। Reverify কোনো বাইনারি সেকশন থেকেও কোড ডিসঅ্যাসেম্বল করতে পারে, ফলে দাবিগুলো বিচ্ছিন্নভাবে মডেল-উৎপাদিত ব্যাখ্যার পরিবর্তে ফাইলের কনটেন্টের সঙ্গে যুক্ত থাকে।
Verification Loop ব্যবহার
Reverify claim হলো কোনো বাইনারি সম্পর্কে একটি structured hypothesis। verify কমান্ড দাবিটি মূল্যায়ন করে এবং toolkit-এ পর্যবেক্ষিত evidence-সহ এর status ফেরত দেয়।
একটি Instruction Sequence যাচাই করুন
নিচের দাবিটি পরীক্ষা করে যে 4096 offset-এর বাইটগুলো push, mov এবং sub দিয়ে শুরু হওয়া একটি function prologue হিসেবে ডিকোড হয় কি না:
reverify verify sample.bin --claim '{
"kind": "instructions",
"offset": 4096,
"mnemonics": ["push", "mov", "sub"],
"note": "function prologue"
}'
Reverify কেবল প্রস্তাবিত ব্যাখ্যাটি পুনরাবৃত্তি করে না। এটি প্রাসঙ্গিক বাইট পড়ে ডিসঅ্যাসেম্বল করে, তারপর অনুরোধ করা mnemonic sequence সমর্থিত কি না তা রিপোর্ট করে।
একটি Emulated Result যাচাই করুন
এমুলেটরে machine code চালিয়ে এবং ফলস্বরূপ register পরীক্ষা করে আচরণগত দাবিও যাচাই করতে পারেন:
reverify verify - --claim '{
"kind": "emulate_result",
"code": "b805000000b90300000001c8c3",
"arch": "x86",
"expect_registers": {"eax": 8}
}'
এটি যাচাই করে যে প্রদত্ত routine eax-এর মান 8 রেখে যায়। নির্দেশগুলো কী গণনা করে বলে মনে হয়, সে বিষয়ে মডেলের বর্ণনা গ্রহণ করার চেয়ে এটি একটি শক্তিশালী পরীক্ষা।
উপলব্ধ Claim Type
Reverify এই claim kind-গুলো সমর্থন করে:
bytes_atনির্দিষ্ট অবস্থানে থাকা বাইট পরীক্ষা করে।pattern_presentকোনো বাইট প্যাটার্ন আছে কি না পরীক্ষা করে।string_presentবাইনারিতে কোনো স্ট্রিং আছে কি না পরীক্ষা করে।instructionsপ্রস্তাবিত ইনস্ট্রাকশন সিকোয়েন্স পরীক্ষা করে।emulate_resultইমুলেশনের পর প্রত্যাশিত রেজিস্টার ফলাফল পরীক্ষা করে।protobuf_fieldকোনো Protobuf ফিল্ড-সংক্রান্ত দাবির পরীক্ষা করে।pe_importকোনো PE ইমপোর্ট-সংক্রান্ত দাবির পরীক্ষা করে।
ব্যাচ যাচাই এবং CI গেটিং
বড় তদন্তের ক্ষেত্রে, একটি JSON ফাইলে একাধিক দাবি রাখুন এবং সেগুলো একসঙ্গে যাচাই করুন:
reverify verify sample.bin --claims-file claims.json
কোনো দাবি খণ্ডিত হলে CLI নন-জিরো স্ট্যাটাসে প্রস্থান করে। এই আচরণ এটিকে CI পাইপলাইন এবং স্বয়ংক্রিয় এজেন্ট ওয়ার্কফ্লোর জন্য উপযোগী করে তোলে: পুনর্গঠিত কোনো স্ট্রাকচার বা রুটিন প্রকাশের আগে বা পরবর্তী ধাপে ব্যবহারের আগে প্রত্যাখ্যান করা যেতে পারে।
একটি ব্যবহারিক ওয়ার্কফ্লো হলো:
- প্রাথমিক প্রমাণ সংগ্রহ করতে
auto,parse,strings, অথবাdisasmব্যবহার করুন। - কোনো বিশ্লেষক বা মডেলকে সুনির্দিষ্ট পরিসরের দাবি প্রণয়ন করতে দিন।
- সম্পর্কিত দাবিগুলো একটি JSON ফাইলে সংরক্ষণ করুন।
verifyচালান এবং প্রতিটিREFUTEDবাINCONCLUSIVEফলাফল পরীক্ষা করুন।- পুনর্গঠন সংশোধন করুন এবং সমর্থিত দাবিগুলো পর্যবেক্ষিত প্রমাণের ভিত্তিতে প্রতিষ্ঠিত না হওয়া পর্যন্ত প্রক্রিয়াটি পুনরাবৃত্তি করুন।
অতিরিক্ত বিশ্লেষণ কমান্ড
Reverify-এ যাচাই প্রক্রিয়াকে সহায়তা করার জন্য কয়েকটি নির্দিষ্ট কমান্ড রয়েছে:
- প্যাটার্ন স্ক্যানিং: নির্দিষ্ট বাইট এবং
??ওয়াইল্ডকার্ডযুক্ত AOB অনুসন্ধানের জন্যpattern-scanব্যবহার করুন। - স্ট্রিং এক্সট্রাকশন: ASCII এবং UTF-16LE স্ট্রিং খুঁজে তাদের অফসেট সংরক্ষণ করতে
stringsব্যবহার করুন। - মাইক্রো-ইমুলেশন: CPU রেজিস্টার এবং স্ট্যাকের আচরণ পরীক্ষা করতে
emulateব্যবহার করুন। - ওয়্যার-ফরম্যাট বিশ্লেষণ: স্কিমাহীন ডেটা বিশ্লেষণের জন্য
decode-protobufবাdecode-tlvব্যবহার করুন। - Frida ইন্টিগ্রেশন: একটি ইন্টারসেপ্টর স্ক্রিপ্ট তৈরি করতে
gen-hookব্যবহার করুন। - কাঁচা পরিদর্শন: বাইনারি ডেটার সারিবদ্ধ ভিউ পেতে
hexdumpব্যবহার করুন। - পরিবর্তন বিশ্লেষণ: বাইনারি পার্থক্য এবং প্যাচ তৈরির জন্য
diff-patchব্যবহার করুন। - সীমানা অডিটিং: প্রতিরক্ষামূলক ফাইলসিস্টেম এবং SSRF সীমানা পরীক্ষা করতে
audit-boundaryব্যবহার করুন।
পুনর্গঠনের মাধ্যমে প্রক্রিয়াটি সম্পূর্ণ করা
reconstruct কমান্ডটি Reverify-এর ক্লোজড-লুপ পদ্ধতি বাস্তবায়ন করে: একটি মডেল দাবি প্রস্তাব করে, নির্ধারক টুলগুলো সেগুলোর যথার্থতা যাচাই করে এবং প্রক্রিয়াটি প্রমাণসমর্থিত ফলাফলের দিকে এগোয়। কোনো মডেলকে সম্পূর্ণ স্ট্রাকচার বা অ্যালগরিদম তৈরি করতে বলে তার প্রথম উত্তরকে কর্তৃত্বপূর্ণ ধরে নেওয়ার চেয়ে এই পদ্ধতি বেশি নির্ভরযোগ্য।
নির্ভরযোগ্য ফলাফলের জন্য দাবিগুলো ছোট এবং পরীক্ষাযোগ্য রাখুন। নির্দিষ্ট বাইট, একটি সংক্ষিপ্ত ইনস্ট্রাকশন সিকোয়েন্স, একটি ইমপোর্ট করা ফাংশন, অথবা একটি রেজিস্টার ফলাফল সম্পর্কে দাবি সম্পূর্ণ বাইনারি নিয়ে বিস্তৃত বর্ণনার চেয়ে যাচাই ও সংশোধন করা সহজ।
Reverify-কে AI এজেন্টের সঙ্গে সংযুক্ত করা
একটি রিপোজিটরি চেকআউট থেকে নিম্নলিখিত কমান্ড দিয়ে MCP সার্ভার চালু করুন:
python reverify/mcp_server.py
এরপর আপনি Claude Code বা Cursor-এর মতো MCP-সামঞ্জস্যপূর্ণ ক্লায়েন্টকে সার্ভার চালু করার জন্য কনফিগার করতে পারেন। এজেন্ট সরাসরি Reverify-এর পার্সিং, ডিসঅ্যাসেম্বলি, স্ক্যানিং এবং যাচাই টুলগুলো কল করতে পারবে।
re_verify_claim MCP টুলটি এজেন্টদের জন্য একই যাচাই লুপ উন্মুক্ত করে। এর মাধ্যমে কোনো এজেন্ট একটি হাইপোথিসিস জমা দিতে, VERIFIED, REFUTED, অথবা INCONCLUSIVE ফলাফল পেতে এবং সিদ্ধান্ত জানানোর আগে নিজের বিশ্লেষণ সংশোধন করতে পারে।
উন্নত টিপস
- প্রথমে সক্রিয় ব্যাকএন্ড পরীক্ষা করুন: বিশ্লেষণের আগে
reverify backendsচালান, যাতে Capstone, Unicorn এবং LIEF উপলভ্য কি না জানতে পারেন। - JSON আউটপুট অগ্রাধিকার দিন: ফলাফল স্ক্রিপ্ট, এজেন্ট বা CI সিস্টেমে পার্স করা হলে
--jsonব্যবহার করুন। - পর্যবেক্ষণকে ব্যাখ্যা থেকে আলাদা রাখুন: উচ্চস্তরের ব্যাখ্যা লেখার আগে অফসেট, বাইট, ডিকোড করা ইনস্ট্রাকশন এবং রেজিস্টার স্টেট রেকর্ড করুন।
- অমীমাংসিত ফলাফল সৎভাবে বিবেচনা করুন:
INCONCLUSIVEফলাফল যাচাই নয়। আরও প্রমাণ সংগ্রহ করুন অথবা দাবির পরিসর সংকুচিত করুন। - সম্পর্কিত অ্যাসারশনগুলো ব্যাচ করুন: স্ট্রাকচারাল এবং আচরণগত পরীক্ষাগুলো একটি claims ফাইলে রাখুন, যাতে একটি খণ্ডিত অনুমান স্বয়ংক্রিয় পুনর্গঠন থামিয়ে দিতে পারে।
- আচরণগত দাবির জন্য ইমুলেশন ব্যবহার করুন: কোনো দাবি যদি বলে একটি রুটিন কী গণনা করে, তবে শুধু ডিসঅ্যাসেম্বলির ওপর নির্ভর না করে প্রত্যাশিত রেজিস্টার স্টেট যাচাই করুন।
- পোর্টেবিলিটির জন্য Pure-Python ফলব্যাক ব্যবহার করুন: বেস প্যাকেজ দিয়ে শুরু করুন, তারপর পরিণত নেটিভ ইঞ্জিন প্রয়োজন হলে
reverify[full]ইনস্টল করুন।
উপসংহার
Reverify বাইনারির বিরুদ্ধে নির্ধারক পরীক্ষায় গুরুত্বপূর্ণ দাবিগুলোকে টিকে থাকতে বাধ্য করে AI-সহায়িত রিভার্স ইঞ্জিনিয়ারিংকে আরও নির্ভরযোগ্য করে। এর CLI দ্রুত ট্রায়াজ, পার্সিং, ডিসঅ্যাসেম্বলি, প্যাটার্ন স্ক্যানিং, ইমুলেশন এবং ব্যাচ যাচাই সমর্থন করে; আর এর MCP সার্ভার AI এজেন্টদের একই প্রমাণভিত্তিক ওয়ার্কফ্লোতে প্রবেশাধিকার দেয়। ফলে বিশ্লেষণ আত্মবিশ্বাসী অনুমানের পরিবর্তে পর্যবেক্ষিত বাইটের ওপর ভিত্তি করে তৈরি হয়।
Reverify MIT লাইসেন্সের অধীনে প্রকাশিত এবং PyPI-এ উপলভ্য।
