
Vibe Reverse Engineer with IDA SQL: واجهة لـ IDA بلغة SQL عبر جداول افتراضية حيّة
امنح أي وكيل ذكاء اصطناعي القدرة على فهم الملفات الثنائية المترجمة.
IDASQL هي واجهة SQL لقواعد بيانات IDA Pro، أنشأها Elias Bachaalany. تُتيح أكثر من 30 جدولًا افتراضيًا تغطي الدوال، والمراجع المتقاطعة، والسلاسل النصية، والأنواع، والواردات، وفك التجميع، وفك الترجمة. استخدم مهارات /idasql من وكيل البرمجة لديك للعمل بشكل كامل بدون واجهة رسومية -- إذ يشغّل الوكيل IDA في الخلفية نيابةً عنك -- أو افتح واجهة IDA وتعاون مع وكيل البرمجة لديك في الهندسة العكسية معًا. لا حاجة إلى IDAPython. لا برمجة نصية. فقط SQL.
لماذا SQL؟ SQL هي لغة الاستعلامات العالمية التي تتحدث بها كل وكلاء الذكاء الاصطناعي بالفعل. IDASQL لا تعتمد على وكيل محدد: Claude وChatGPT وCopilot وCursor والوكلاء المخصصون، أو حتى بدون أي وكيل. أي أداة يمكنها إصدار استعلام SQL يمكنها تحليل ملف ثنائي.
تدعم IDASQL تحليل التعليقات التوضيحية وربطها المرجعي ونقلها بين قاعدة بيانات واحدة أو أكثر في الوقت نفسه. ما يمكنك فعله محدود فقط بخيالك وقوة النموذج الذي تستخدمه.
يمتلك IDA Pro بالفعل تنسيق قاعدة بيانات خاصًا به يصف الدوال والسلاسل النصية والمراجع المتقاطعة والأنواع والمزيد. تقوم IDASQL بربط هذه البنى الداخلية بجداول SQL افتراضية مباشرة SQL virtual tables. لا توجد خطوة تصدير أو فهرسة منفصلة -- تُنفَّذ الاستعلامات مباشرة على قاعدة بيانات IDA وتنعكس التغييرات مباشرةً.
|
/idasql skills (LLM translates intent to SQL)
|
IDASQL --> IDA database(s)
|
Results --> LLM summarizes & reasons
Please provide the Markdown content to translate.```
$ idasql -s WerFaultTool.exe.i64 -q "SELECT * FROM funcs LIMIT 5"
Opening: WerFaultTool.exe.i64...
Database opened successfully.
+------+-------------------------------------------------+------+----------+-------+
| addr | name | size | end_addr | flags |
+------+-------------------------------------------------+------+----------+-------+
| 16 | WerFaultTool.AboutForm::.ctor | 13 | 29 | 4096 |
| 32 | WerFaultTool.AboutForm::Dispose | 30 | 62 | 4096 |
| 64 | WerFaultTool.AboutForm::InitializeComponent | 295 | 359 | 4096 |
| 400 | WerFaultTool.WerFaultGUI::.ctor | 936 | 1336 | 4096 |
| 1344 | WerFaultTool.WerFaultGUI::CreateDynamicControls | 231 | 1575 | 4096 |
+------+-------------------------------------------------+------+----------+-------+
5 row(s)
أمر واحد. نتائج فورية. لا حاجة إلى برمجة نصية.
بعد تثبيت IDASQL CLI والملحق الإضافي، ابدأ وكيل البرمجة المفضل لديك وابدأ الهندسة العكسية عبر الأوامر النصية. يعمل IDASQL بالكامل دون واجهة رسومية -- وكيلك يدير IDA Pro: تشغيله، تحليله، فك ترجمته، إضافة التعليقات التوضيحية عليه، وحفظه -- أو يُستضاف داخل واجهة IDA الرسومية حيث تتعاون مع وكيلك في الوقت الفعلي.
افتح وكيل البرمجة المفضل لديك (مثل Claude Code) واكتب:``` /idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
يشغّل الوكيل IDASQL في الخلفية بدون واجهة رسومية. من هذه النقطة فصاعدًا، يمكنك الدردشة بشكل طبيعي مع قاعدة البيانات. على سبيل المثال:```
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
يقوم النموذج بالتفكير بشكل مستقل في أفضل نهج لفهم الوظيفة، ويقوم بهندستها عكسيًا بالكامل، ويضيف التعليقات التوضيحية عليها.
عند الانتهاء، اطلب من الوكيل الحفظ والإغلاق:``` /idasql:connect Please save all databases and shut down IDASQL.
### العمل مع قواعد بيانات متعددة
يمكنك العمل مع قاعدتي بيانات أو أكثر في نفس الوقت. وجّه وكيلك:```
/idasql:connect In this folder, there are many *.exe files. Please use parallel agents to open IDASQL in the background and report how many functions each has.
ثم تابع:``` Tell me, how many strings all these databases have in common?
الوكيل يعمل مع جميع قواعد البيانات في نفس الوقت. يمكنك الربط المرجعي والمقارنة ونقل التعليقات التوضيحية بينها.
### العمل مع واجهة IDA
كل ما سبق يعمل بالمثل من واجهة IDA الرسومية. لتفعيل وكيلك مع جلسة IDA مفتوحة:
1. في موجه `idasql>` في IDA، اكتب: ```
.http start
الآن أصبح IDASQL وواجهة IDA الخاصة بك متصلين ويعملان معًا.
تمنحك مهارات IDASQL لوكيل البرمجة لديك تحكمًا كاملاً في قواعد بيانات IDA من خلال اللغة الطبيعية.
allthingsida/idasql-skills.ida.exe على ويندوز، ida على macOS/Linux)idasql --version من سطر الأوامرداخل Claude Code، قم بتشغيل:```text /plugin marketplace add allthingsida/idasql-skills
ثم قم بتثبيت المكوّن الإضافي `idasql` من هذا السوق. راجع [README لـ idasql-skills](https://github.com/allthingsida/idasql-skills#installation) لمعرفة مسارات التثبيت الخاصة بـ Codex وغيرها.
#### المهارات
| المهارة | الوصف |
|-------|-------------|
| `connect` | الاتصال بقواعد بيانات IDA: CLI، خادم HTTP، تهيئة الجلسة، توجيه المهارات، العقود العامة. |
| `disassembly` | الاستعلام عن تفكيك IDA: الدوال، المقاطع، التعليمات، الكتل، المعاملات، الرسوم البيانية. |
| `data` | الاستعلام عن سلاسل IDA، والبايتات، والبيانات الثنائية: البحث، إعادة البناء، أنماط البايت. |
| `xrefs` | تحليل المراجع المتقاطعة في IDA: المستدعون، المستدعى منهم، الواردات، مراجع البيانات، بحث grep. |
| `decompiler` | فك ترجمة دوال IDA: الكود الزائف، شجرة AST لـ ctree، المتغيرات المحلية، التسميات. |
| `annotations` | تحرير قواعد بيانات IDA: التعليقات، إعادة التسمية، الأنواع، العلامات المرجعية، عرض التعداد/الهيكل. |
| `types` | نظام الأنواع في IDA: إنشاء/تعديل/تطبيق الهياكل، الاتحادات، التعدادات، typedefs، parse_decls. |
| `debugger` | مصحح أخطاء IDA: نقاط التوقف، تصحيح البايت، الشروط، جرد التصحيحات. |
| `storage` | تخزين المفتاح-القيمة الدائم في قواعد بيانات IDA عبر netnode_kv. |
| `idapython` | تنفيذ IDAPython عبر idasql: مقاطع برمجية، بيئة معزولة، التقاط الإخراج. |
| `functions` | كتالوج مرجعي كامل لدوال SQL الخاصة بـ idasql. |
| `analysis` | تحليل ملفات IDA الثنائية: الفرز، التدقيق الأمني، اكتشاف التشفير/الشبكة، استعلامات متعددة الجداول. |
| `resource` | إعادة بناء مصادر ملفات IDA الثنائية: تعليق متكرر، استعادة البنية، إعادة بناء الأنواع. |
| `ui-context` | التقاط سياق واجهة مستخدم IDA المباشرة: الشاشة، التحديد، تركيز الأدوات، مراسي العناوين. |
#### أمثلة على المطالبات```
/idasql:analysis analyze this binary; tell me the most called functions.
/idasql:data find functions that reference "password" strings and rank by xrefs.
/idasql:xrefs show callers of CreateFileW and summarize error handling.
/idasql:data identify suspicious hardcoded URLs and the functions that reference them.
مهارات /idasql تقود التحليل من CLI البرمجة الخاص بك -- دون الحاجة إلى كتابة سكربتات IDAPython.
idasql v0.0.18 - SQL interface to IDA databases
Usage: idasql -s [-q ] [-f ] [-i] [--export ]
Options: -s IDA database (.idb/.i64) OR raw binary (.exe/.dll/firmware/etc.) — raw binaries trigger fresh idalib analysis and string-list rebuild — legacy 32-bit .idb files upgrade to .i64 and require an explicit reopen --token Auth token for HTTP/MCP server mode (if server requires it) -q Execute SQL query or semicolon-separated script -f Execute SQL from file -i Interactive REPL mode -w, --write Save database on exit (persist changes) --export Export tables to SQL file (local mode only) --export-tables=X Tables to export: * (all, default) or table1,table2,... --http [port] Start HTTP REST server (default: 8080, local mode only) --bind Bind address for HTTP/MCP server (default: 127.0.0.1) --mcp [port] Start MCP server (default: random port, use in -i mode) Or use .mcp start in interactive mode -h, --help Show this help --version Show version
Examples: idasql -s test.i64 -q "SELECT name, size FROM funcs LIMIT 10" idasql -s test.i64 -q "SELECT * FROM binary; SELECT COUNT(*) FROM funcs;" idasql -s test.i64 -f queries.sql idasql -s test.i64 -i idasql -s test.i64 --export dump.sql idasql -s test.i64 --http 8080 idasql -s sample.exe --http # raw PE: idalib auto-analyzes, then serves SQL (default port 8080) idasql -s firmware.bin -q "SELECT * FROM binary" idasql -s test.i64 --mcp 9000
Thank you for using IDA. Have a nice day!
Legacy 32-bit `.idb` inputs are upgraded by idalib to a sibling `.i64`. When that
happens, idasql exits before serving SQL, returns exit code `3`, and prints one
JSON object to stdout with `status:"upgraded"` and `reopen_with`. Repeat the same
operation with `-s <reopen_with>`.
</details>
### البناء من المصدر
#### المتطلبات الأساسية
- CMake 3.20+
- مترجم C++20
- IDA SDK 9.0+ (اضبط متغير البيئة `IDASDK`)```bash
cmake -S . -B build -DIDASQL_WITH_MCP=ON -DIDASQL_BUILD_EXAMPLES=OFF
cmake --build build --config Release
Useful CMake switches:
| الوضع | طريقة البدء | الأنسب لـ |
|---|
| واجهة سطر أوامر مستقلة | idasql -s binary.i64 -i | SQL مباشر، برمجة نصية، خطوط أنابيب |
| إضافة IDA | اختر idasql من القائمة المنسدلة لواجهة أوامر IDA | SQL داخل الواجهة الرسومية، قاعدة بيانات حية |
| سير عمل المهارة | /idasql:connect في واجهة أوامر البرمجة لديك | تحليل بقيادة الذكاء الاصطناعي -- حيث يصدر الوكيل استعلامات SQL بشكل مستقل |
| You / Agent --> Natural language or SQL |
| Switch | Default | Description |
|---|
IDASQL_WITH_MCP | ON | إنشاء دعم خادم MCP عبر fastmcpp. عطّله لبناء أصغر/بدون إنترنت أو عندما لا تحتاج إلى --mcp / .mcp. |
IDASQL_BUILD_CLI | ON | بناء الأداة المستقلة لسطر الأوامر idasql. |
IDASQL_BUILD_PLUGIN | ON | بناء إضافة IDA. |
IDASQL_BUILD_EXAMPLES | ON | بناء البرامج المثال تحت examples/. |
Notes:
--http من CLI أو .http start من REPL/CLI الخاص بالإضافة.PRAGMA idasql.enable_idapython = 1;.IDASQL_WITH_MCP=ON يجلب fastmcpp؛ بينما OFF يزيل دعم MCP وأوامر --mcp / .mcp.XSQL_WITH_THINCLIENT مُجبَر على ON، وHTTPLIB_USE_OPENSSL_IF_AVAILABLE مُجبَر على OFF لأن IDASQL يستخدم HTTP محليًا غير مشفَّر.أكثر من 30 جدولًا افتراضيًا تغطي الدوال، والسلاسل، والأنواع، والمراجع المتبادلة، والتفكيك، والتفكيك العكسي للكود، والمزيد.
| Table | Description |
|---|---|
funcs | الدوال - الاسم، العنوان، الحجم، عنوان النهاية، الأعلام (INSERT/UPDATE/DELETE) |
segments | المقاطع - الاسم، عنوان البداية/النهاية، الصلاحيات، الصنف (INSERT/UPDATE/DELETE) |
names | المواقع المسمّاة - العنوان، الاسم، الأعلام (INSERT/UPDATE/DELETE) |
entries | نقاط الدخول - عمليات الاسترجاع للتصدير/البرنامج/TLS (الترتيب، العنوان، الاسم) |
imports | الاستيرادات - الوحدة، الاسم، العنوان، الترتيب |
xrefs | المراجع المتبادلة - العنوان من/إلى، النوع، is_code |
blocks | الكتل الأساسية - عنوان البداية/النهاية، func_addr، الحجم |
fchunks | أجزاء الدوال - الأجزاء المنقسمة/الذيلية مع المالك |
instructions | التفكيك - العنوان، رمز العملية، المعاملات، itype، func_addr (UPDATE معامل format_spec / DELETE) |
instruction_operands | معاملات تعليمات طبيعية - opnum، النص، النوع، القيمة؛ مُحسَّنة حسب addr و func_addr |
heads | جميع عناصر head (كود + بيانات) - بحث محسَّن عن العناوين وتنقل عبر النطاقات |
| Table | Description |
|---|---|
strings | السلاسل - العنوان، المحتوى، الطول، النوع |
bytes | البايتات الخام - value/word/dword/qword قابلة للكتابة (UPDATE يطبّق الترقيعات، DELETE يعيد الحالة)، original_value، is_patched (عدّ سريع للترقيعات عبر WHERE is_patched = 1) |
| Table | Description |
|---|---|
pseudocode | الكود الزائف المُفكَّك عبر Hex-Rays |
ctree | عُقد شجرة ctree من Hex-Rays |
ctree_lvars | المتغيرات المحلية من تفكيك Hex-Rays |
ctree_call_args | تفاصيل وسائط استدعاءات Hex-Rays لكل موقع استدعاء |
ctree_labels | تسميات ctree في Hex-Rays (أهداف goto) |
| Table | Description |
|---|---|
types | مكتبة الأنواع - البنيات والنقابات والتعدادات مع الأعضاء (INSERT/UPDATE/DELETE) |
types_members | تفاصيل أعضاء البنية/النقابة (INSERT/UPDATE/DELETE) |
types_enum_values | قيم أعضاء التعداد (INSERT/UPDATE/DELETE) |
types_func_args | تفاصيل وسائط أنواع الدوال |
local_types | إدخالات مكتبة الأنواع المحلية |
| Table | Description |
|---|---|
comments | التعليقات - العنوان، التعليقات العادية والمتكررة (INSERT/UPDATE/DELETE) |
bookmarks | الإشارات المرجعية - الفتحة، العنوان، الوصف (INSERT/UPDATE/DELETE) |
breakpoints | نقاط التوقف - العنوان، النوع، مفعّلة، الشرط (CRUD كامل) |
hidden_ranges | النطاقات المطوية/المخفية - البداية/النهاية، الوصف، الرأس، التذييل |
| Table | Description |
|---|---|
grep | جدول بحث موحّد للكيانات (النمط، الاسم، النوع، العنوان، الترتيب، parent_name، full_name) |
| Table | Description |
|---|---|
binary | ملخص/نظرة عامة لقاعدة البيانات - المعالج، عدد البتات، نطاق العناوين، العدادات |
db_info | أزواج القيمة-المفتاح لبيانات تعريف قاعدة البيانات |
ida_info | أزواج القيمة-المفتاح لمعلومات تحليل IDA |
problems | مشاكل/تحذيرات تحليل IDA |
signatures | حالة توقيعات FLIRT |
fixups | إدخالات التصحيح/إعادة التوطين |
mappings | تعيينات مساحات العناوين |
| Table | Description |
|---|---|
netnode_kv | تخزين قيم-مفاتيح دائم (netnode) |
| Table | Description |
|---|---|
disasm_calls | مخطط الاستدعاءات - أزواج المستدعي/المستدعى لكل دالة |
disasm_loops | كشف الحلقات - كتل الرأس والحواف الرجعية |
| Function | Description |
|---|---|
decompile(addr) | فكّك الدالة عند العنوان (يُرجع كودًا زائفًا) |
disasm_at(addr) | قائمة التفكيك القياسية عند العنوان |
get_ui_context_json() | JSON سياق واجهة المستخدم — متاح مباشرة في إضافة GUI؛ دالة تجريبية "غير قابلة للتطبيق" في CLI/idalib |
استخدم جدول grep لعمليات بحث SQL قابلة للتركيب عبر الدوال المسمّاة، والتسميات، والمقاطع، والأنواع، والأعضاء.```sql
-- Search anything starting with "Create"
SELECT name, kind, printf('0x%X', addr) as addr
FROM grep
WHERE pattern = 'Create%'
LIMIT 20;
-- Search anywhere in name (plain text performs a contains search) SELECT name, kind, full_name FROM grep WHERE pattern = 'File' AND kind IN ('function', 'import') LIMIT 20;
-- Find struct members SELECT name, parent_name, full_name FROM grep WHERE pattern = 'dw%' AND kind = 'member';
-- Pagination SELECT name, kind, full_name FROM grep WHERE pattern = 'Create%' ORDER BY kind, name LIMIT 20 OFFSET 20;
## التكامل
### HTTP REST API
خادم HTTP عديم الحالة للتكامل البسيط. لا حمل بروتوكول إضافي.```bash
idasql -s database.i64 --http 8080
The input content is missing — the chunk text was not included in your message. Please provide chunk 33 of 53 so I can translate it into Arabic.```bash curl http://localhost:8080/status curl -X POST http://localhost:8080/query -d "SELECT name FROM funcs LIMIT 5" curl -X POST http://localhost:8080/query -d "SELECT * FROM binary; SELECT COUNT(*) FROM funcs;"
جميع استجابات `/query` تستخدم الغلاف البرمجي الأساسي — العبارة الواحدة = مصفوفة من عنصر واحد:```
{
"success": true,
"statement_count": <N>,
"results": [
{ "statement_index": 0, "success": true, "columns": [...], "rows": [...], "row_count": <N>, "elapsed_ms": <ms>, "error": null },
...
],
"row_count_total": <N>,
"elapsed_ms_total": <ms>,
"first_error_index": null
}
الفشل السريع هو السلوك الافتراضي؛ مرّر continue_on_error=true (مثل ?continue_on_error=1) لتنفيذ كل عبارة بغضّ النظر عن الإخفاقات السابقة. كل results[i].error هو المرجع الأساسي لأخطاء كل عبارة؛ ويشير first_error_index إلى أول إخفاق أو يكون null. عند فشل المقسم (مثل اقتباس غير مغلق) تكون الاستجابة success:false وstatement_count:0 وresults:[] بالإضافة إلى parse_error على المستوى الأعلى.
لقواعد بيانات متعددة، شغّل حالات منفصلة:```bash idasql -s malware.i64 --http 8080 idasql -s kernel.i64 --http 8082
النقاط الطرفية: `/status`, `/help`, `/query`, `/shutdown`
#### خادم HTTP من REPL
ابدأ تشغيل خادم HTTP بشكل تفاعلي من REPL أو من واجهة سطر الأوامر الخاصة بإضافة IDA:```
idasql -s database.i64 -i
idasql> .http start
HTTP server started on port 8142
URL: http://127.0.0.1:8142
...
Press Ctrl+C to stop and return to REPL.
في إضافة IDA (غير محظورة):``` idasql> .http start HTTP server started on port 8142 idasql> .http stop HTTP server stopped
يستخدم الخادم منفذًا عشوائيًا (8100-8199) لتجنب التعارضات مع `--http`.
### التشغيل التلقائي (التثبيت)
`.pin` يُثبّت تفضيل الخادم في قاعدة بيانات IDB (netnode `$ idasql config`) بحيث **يبدأ المكوّن الإضافي لـ IDA تلقائيًا** خادم HTTP أو MCP كلما تم فتح قاعدة البيانات تلك — وهو مفيد للإعدادات متعددة الحالات حيث تحتفظ كل قاعدة بيانات بمنفذ مستقر ومعروف.```
idasql> .pin set http 8080 # pin HTTP at 127.0.0.1:8080 (autostart on)
idasql> .pin set mcp 0.0.0.0 9500 # bind override + port (port optional; omit or 0 = fresh random port each launch)
idasql> .pin list # show pinned config
idasql> .pin off http # disable autostart but keep host/port
idasql> .pin clear all # remove all pins
بعد التثبيت (pinning)، تؤدي إعادة فتح قاعدة البيانات إلى تشغيل الخادم تلقائيًا — ستلاحظ ذلك في نافذة إخراج IDA عند التحميل:``` IDASQL v0.0.18: Query engine initialized IDASQL CLI: Installed IDASQL: autostart -> IDASQL HTTP server: http://127.0.0.1:8099 Type '.http stop' to stop the server.
`.pin` (أو `.pin list`) يعرض الإعداد الحالي لكلا الخدمتين:```
idasql> .pin
Autostart pins:
http 127.0.0.1:8099 (autostart: on)
mcp (not set)
.pin نفسه يعمل في كلٍّ من واجهة الأوامر والمكوّن الإضافي (واجهة الأوامر تقرأ/تكتب قيمة التثبيت فقط)..http start / .mcp start بدون منفذ صريح استخدام المضيف/المنفذ المثبَّت..pin إلا عند التشغيل باستخدام -w/--write (مثل أي تعديل آخر على IDB).لعملاء متوافقين مع MCP (بروتوكول سياق النموذج، معيار لتكامل أدوات الذكاء الاصطناعي):
يتوفر --mcp و.mcp عند البناء باستخدام -DIDASQL_WITH_MCP=ON، وهو الإعداد الافتراضي. ابنِ باستخدام -DIDASQL_WITH_MCP=OFF لاستبعاد دعم MCP.```bash
idasql -s database.i64 --mcp idasql -s database.i64 --mcp 9500 # specific port
idasql -s database.i64 -i .mcp start
قم بتكوين عميل MCP الخاص بك:```json
{
"mcpServers": {
"idasql": { "url": "http://127.0.0.1:<port>/sse" }
}
}
الأدوات: idasql_query (استعلام SQL مباشر أو سكربت مفصول بفواصل منقوطة)
IDASQL جزء من عائلة أدوات تُوفّر منصات مختلفة لتحليل الثنائيات ومعلومات التصحيح عبر سطح SQL نفسه، وكلها مبنية على إطار عمل الجداول الافتراضية المشترك libxsql. الاستعلام الذي تتعلمه على أداة واحدة ينطبق إلى حد كبير على الأدوات الأخرى — على سبيل المثال، نفس SELECT name, size FROM funcs ORDER BY size DESC LIMIT 10 يعمل في كل مكان.
منصات الهندسة العكسية
معلومات التصحيح وبيانات المترجم
النواة
باختصار: يمكنك قراءة idasql غير المعدّل وبناؤه وتقييمه وقياس أدائه وتعبئته واستخدامه، بما في ذلك الاستخدام التجاري، شريطة الحفاظ على الإشعارات واتباع شروط الترخيص. ويمكنك عمل fork أو patch عليه لإعداد إصلاحات للأخطاء، أو تحسينات، أو ميزات، أو اختبارات، أو تحسينات للتوثيق، بهدف إعادة المساهمة بها ضمن قواعد غرض المساهمة المنصوص عليها في الترخيص.
لا يجوز لك الإبقاء على fork خاص متباعد، أو نقل (port)، أو إعادة تسمية تجارية (rebrand)، أو استنساخ (clone)، أو بديل متوافق مع API، أو تنفيذ منافس، أو استخدام idasql كمدخلات للذكاء الاصطناعي لإعادة إنشاء أو تحسين تنفيذ مشتق، دون إذن كتابي مسبق من Elias Bachaalany. ولا تُحظر التنفيذات المستقلة التي ليست منسوخة من idasql، ولا مشتقة منه ماديًا، ولا مستندة إليه بشكل جوهري، بالمعنى المحدد في الترخيص.
طلبات الإذن: افتح issue على GitHub في allthingsida/idasql/issues.
إذا كان مشروع موزع يستمد معلوماته بشكل جوهري من idasql، فحافظ على الأصل البشري: اذكر idasql وElias Bachaalany بشكل واضح في README/التوثيق الخاص بك وفي واجهة المستخدم الخاصة بـ About/credits عند الاقتضاء. ويتضمن الترخيص قسم أمثلة/الأسئلة الشائعة (FAQ) للاستخدامات الشائعة المسموح بها والتي تتطلب إذنًا. وتبقى تبعيات الأطراف الثالثة (libxsql، وIDA SDK، وتبعياتهما غير المباشرة) خاضعة لتراخيصها الخاصة.
راجع النسخة الكاملة من Human-Origin Source License v1.0.