Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dynmx — الكشف المعتمد على التوقيعات لميزات البرامج الضارة استنادًا إلى تسلسلات استدعاء واجهة برمجة تطبيقات ويندوز. إنها مثل YARA لتتبعات واجهة برمجة تطبيقات الصندوق الرملي! | Kitploit
أدوات/GitHubGitHub/0x534a/dynmx
التحليل الديناميكي (عزل)تحليل البرمجيات الخبيثة
GitHub0x534a/dynmx

dynmx

الكشف المعتمد على التوقيعات لميزات البرامج الضارة استنادًا إلى تسلسلات استدعاء واجهة برمجة تطبيقات ويندوز. إنها مثل YARA لتتبعات واجهة برمجة تطبيقات الصندوق الرملي!

عرض المستودع
85658منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

dynmx نموذج أولي

dynmx (تُلفظ دايناميكس) هي منهجية كشف قائمة على التوقيعات للخصائص السلوكية للبرامج الضارة بناءً على متواليات استدعاءات واجهة برمجة تطبيقات Windows. بطريقة مبسطة، يمكنك التفكير في dynmx كنوع من YARA لآثار استدعاءات API (ما يسمى بسجلات الوظائف) الناشئة عن صناديق رمل البرامج الضارة. وبالتالي، فإن أساس البيانات لمنهجية الكشف ليس عينات البرامج الضارة نفسها التي يتم تحليلها بشكل ثابت، بل البيانات التي يتم توليدها أثناء تحليل ديناميكي لعينة البرنامج الضارة في صندوق رمل للبرامج الضارة. حالياً، يدعم dynmx سجلات الوظائف من صناديق الرمل التالية:

  • VMRay (سجل الوظائف، بصيغة نصية وXML)
  • CAPEv2 (ملف report.json)
  • Cuckoo (ملف report.json)

تم وصف منهجية الكشف بالتفصيل في رسالة الماجستير كشف التوقيعات للخصائص السلوكية للبرامج الضارة باستخدام استدعاءات واجهة برمجة تطبيقات Windows. هذا المشروع هو التنفيذ النموذجي لهذه المنهجية وتم تطويره في إطار رسالة الماجستير. يتم تعريف التوقيعات يدوياً من قبل محللي البرامج الضارة في لغة توقيعات dynmx DSL ويمكن اكتشافها في سجلات الوظائف بمساعدة هذه الأداة. يمكن أيضاً العثور على ميزات وبناء جملة لغة توقيعات dynmx DSL في رسالة الماجستير. علاوة على ذلك، يمكنك العثور على توقيعات dynmx نموذجية في المستودع dynmx-signatures. بالإضافة إلى كشف الخصائص الضارة بناءً على استدعاءات API، يمكن لـ dynmx استخراج موارد نظام التشغيل التي يستخدمها البرنامج الضار (ما يسمى بنموذج نشاط الوصول). يتم استخراج هذه الموارد من خلال فحص استدعاءات API وإعادة بناء العمليات على موارد نظام التشغيل. حالياً، يتم أخذ موارد نظام التشغيل من فئات نظام الملفات والتسجيل والشبكة في الاعتبار في النموذج.

مثال

في القسم التالي، يتم عرض أمثلة لكشف الخصائص الضارة واستخراج الموارد.

الكشف

لهذا المثال، نختار عينة البرنامج الضار بمجموع تجزئة SHA-256 c0832b1008aa0fc828654f9762e37bda019080cbdd92bd2453a05cfb3b79abb3. وفقاً لـ MalwareBazaar، تنتمي العينة إلى عائلة البرامج الضارة Amadey. يوجد تقرير تحليل VMRay عام لهذه العينة والذي يوفر أيضاً سجل الوظائف الذي تم تتبعه بواسطة VMRay. سيكون سجل الوظائف هذا هو أساس بياناتنا الذي سنستخدمه للكشف.

إذا أردنا معرفة ما إذا كانت عينة البرنامج الضار تستخدم تقنية حقن تسمى Process Hollowing، يمكننا محاولة كشف توقيع dynmx التالي في سجل الوظائف.```yaml dynmx_signature: meta: name: process_hollow title: Process Hollowing description: Detection of Process hollowing malware feature detection: proc_hollow: # Create legit process in suspended mode - api_call: ["CreateProcess[AW]", "CreateProcessInternal[AW]"] with: - argument: "dwCreationFlags" operation: "flag is set" value: 0x4 - return_value: "return" operation: "is not" value: 0 store: - name: "hProcess" as: "proc_handle" - name: "hThread" as: "thread_handle" # Injection of malicious code into memory of previously created process - variant: - path: # Allocate memory with read, write, execute permission - api_call: ["VirtualAllocEx", "VirtualAlloc", "(Nt|Zw)AllocateVirtualMemory"] with: - argument: ["hProcess", "ProcessHandle"] operation: "is" value: "$(proc_handle)" - argument: ["flProtect", "Protect"] operation: "is" value: 0x40 - api_call: ["WriteProcessMemory"] with: - argument: "hProcess" operation: "is" value: "$(proc_handle)" - api_call: ["SetThreadContext", "(Nt|Zw)SetContextThread"] with: - argument: "hThread" operation: "is" value: "$(thread_handle)" - path: # Map memory section with read, write, execute permission - api_call: "(Nt|Zw)MapViewOfSection" with: - argument: "ProcessHandle" operation: "is" value: "$(proc_handle)" - argument: "AccessProtection" operation: "is" value: 0x40 # Resume thread to run injected malicious code - api_call: ["ResumeThread", "(Nt|Zw)ResumeThread"] with: - argument: ["hThread", "ThreadHandle"] operation: "is" value: "$(thread_handle)" condition: proc_hollow as sequence

root@kitploit:~
بناءً على التوقيع، يمكننا العثور على بعض ميزات DSL التي تجعل *dynmx* قويًا:
* تعريف تسلسلات استدعاء API بمسارات بديلة
* مطابقة أسماء دوال استدعاء API مع تعبيرات منتظمة
* مطابقة قيم الوسائط والإرجاع مع العديد من العوامل
* تخزين المتغيرات، على سبيل المثال لتتبع المقابض في تسلسل استدعاء API
* تعريف شرط الكشف مع العوامل المنطقية (`AND`، `OR`، `NOT`)

إذا قمنا بتشغيل *dynmx* مع التوقيع الموضح أعلاه مقابل دالة العينة `c0832b1008aa0fc828654f9762e37bda019080cbdd92bd2453a05cfb3b79abb3`، نحصل على الإخراج التالي الذي يشير إلى أنه تم اكتشاف التوقيع.```
$ python3 dynmx.py detect -i 601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9.json -s process_hollow.yml


    |
  __|         _  _    _  _  _
 /  |  |   | / |/ |  / |/ |/ |  /\/
 \_/|_/ \_/|/  |  |_/  |  |  |_/ /\_/
          /|
          \|
            
 Ver. 0.5 (PoC), by 0x534a


[+] Parsing 1 function log(s)
[+] Loaded 1 dynmx signature(s)
[+] Starting detection process with 1 worker(s). This probably takes some time...

[+] Result
process_hollow	c0832b1008aa0fc828654f9762e37bda019080cbdd92bd2453a05cfb3b79abb3.txt

يمكننا الدخول في مزيد من التفاصيل عن طريق ضبط تنسيق الإخراج إلى detail. الآن، يمكننا رؤية تسلسل استدعاء API الدقيق الذي تم اكتشافه في سجل الوظيفة. علاوة على ذلك، يمكننا رؤية أن التوقيع تم اكتشافه في العملية 51f0.exe.``` $ python3 dynmx.py -f detail detect -i 601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9.json -s process_hollow.yml

root@kitploit:~
|

__| _ _ _ _ _ / | | | / |/ | / |/ |/ | // _/|/ _/|/ | |/ | | |_/ /_/ /| |

Ver. 0.5 (PoC), by 0x534a

[+] Parsing 1 function log(s) [+] Loaded 1 dynmx signature(s) [+] Starting detection process with 1 worker(s). This probably takes some time...

[+] Result Function log: c0832b1008aa0fc828654f9762e37bda019080cbdd92bd2453a05cfb3b79abb3.txt Signature: process_hollow Process: 51f0.exe (PID: 3768) Number of Findings: 1 Finding 0 proc_hollow : API Call CreateProcessA (Function log line 20560, index 938) proc_hollow : API Call VirtualAllocEx (Function log line 20566, index 944) proc_hollow : API Call WriteProcessMemory (Function log line 20573, index 951) proc_hollow : API Call SetThreadContext (Function log line 20574, index 952) proc_hollow : API Call ResumeThread (Function log line 20575, index 953)

root@kitploit:~
### Resources
لاستخراج موارد نظام التشغيل التي تم الوصول إليها من سجل دالة، يمكننا ببساطة تشغيل الأمر *dynmx* `resources` على سجل الدالة. يوضح أدناه مثال على المخرجات التفصيلية للعينة التي تحتوي على قيمة تجزئة SHA-256 `601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9`. هذا تقرير صندوق رمل CAPE وهو جزء من [Avast-CTU Public CAPEv2 Dataset](https://github.com/avast/avast-ctu-cape-dataset).```
$ python3 dynmx.py -f detail resources --input 601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9.json


    |
  __|         _  _    _  _  _
 /  |  |   | / |/ |  / |/ |/ |  /\/
 \_/|_/ \_/|/  |  |_/  |  |  |_/ /\_/
          /|
          \|

 Ver. 0.5 (PoC), by 0x534a


[+] Parsing 1 function log(s)
[+] Processing function log(s) with the command 'resources'...

[+] Result
Function log: 601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9.json (/Users/sijansen/Documents/dev/dynmx_flogs/cape/Public_Avast_CTU_CAPEv2_Dataset_Full/extracted/601941f00b194587c9e57c5fabaf1ef11596179bea007df9bdcdaa10f162cac9.json)
	Process: 601941F00B194587C9E5.exe (PID: 2008)
		Filesystem:
			C:\Windows\SysWOW64\en-US\SETUPAPI.dll.mui (CREATE)
			API-MS-Win-Core-LocalRegistry-L1-1-0.dll (EXECUTE)
			C:\Windows\SysWOW64\ntdll.dll (READ)
			USER32.dll (EXECUTE)
			KERNEL32.dll (EXECUTE)
			C:\Windows\Globalization\Sorting\sortdefault.nls (CREATE)
		Registry:
			HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SourcePath (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\DisableImprovedZoneCheck (READ)
			HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings (READ)
			HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Security_HKLM_only (READ)
	Process: 601941F00B194587C9E5.exe (PID: 1800)
		Filesystem:
			C:\Windows\SysWOW64\en-US\SETUPAPI.dll.mui (CREATE)
			API-MS-Win-Core-LocalRegistry-L1-1-0.dll (EXECUTE)
			C:\Windows\SysWOW64\ntdll.dll (READ)
			USER32.dll (EXECUTE)
			KERNEL32.dll (EXECUTE)
			[...]
			C:\Users\comp\AppData\Local\vscmouse (READ)
			C:\Users\comp\AppData\Local\vscmouse\vscmouse.exe:Zone.Identifier (DELETE)
		Registry:
			HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup (READ)
			[...]
	Process: vscmouse.exe (PID: 900)
		Filesystem:
			C:\Windows\SysWOW64\en-US\SETUPAPI.dll.mui (CREATE)
			API-MS-Win-Core-LocalRegistry-L1-1-0.dll (EXECUTE)
			C:\Windows\SysWOW64\ntdll.dll (READ)
			USER32.dll (EXECUTE)
			KERNEL32.dll (EXECUTE)
			C:\Windows\Globalization\Sorting\sortdefault.nls (CREATE)
		Registry:
			HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SourcePath (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\DevicePath (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\DisableImprovedZoneCheck (READ)
			HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings (READ)
			HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Security_HKLM_only (READ)
	Process: vscmouse.exe (PID: 3036)
		Filesystem:
			C:\Windows\SysWOW64\en-US\SETUPAPI.dll.mui (CREATE)
			API-MS-Win-Core-LocalRegistry-L1-1-0.dll (EXECUTE)
			C:\Windows\SysWOW64\ntdll.dll (READ)
			USER32.dll (EXECUTE)
			KERNEL32.dll (EXECUTE)
			C:\Windows\Globalization\Sorting\sortdefault.nls (CREATE)
			C:\ (READ)
			C:\Windows\System32\uxtheme.dll (EXECUTE)
			dwmapi.dll (EXECUTE)
			advapi32.dll (EXECUTE)
			shell32.dll (EXECUTE)
			C:\Users\comp\AppData\Local\vscmouse\vscmouse.exe (CREATE,READ)
			C:\Users\comp\AppData\Local\iproppass\iproppass.exe (DELETE)
			crypt32.dll (EXECUTE)
			urlmon.dll (EXECUTE)
			userenv.dll (EXECUTE)
			wininet.dll (EXECUTE)
			wtsapi32.dll (EXECUTE)
			CRYPTSP.dll (EXECUTE)
			CRYPTBASE.dll (EXECUTE)
			ole32.dll (EXECUTE)
			OLEAUT32.dll (EXECUTE)
			C:\Windows\SysWOW64\oleaut32.dll (EXECUTE)
			IPHLPAPI.DLL (EXECUTE)
			DHCPCSVC.DLL (EXECUTE)
			C:\Users\comp\AppData\Roaming\Microsoft\Network\Connections\Pbk\_hiddenPbk\ (CREATE)
			C:\Users\comp\AppData\Roaming\Microsoft\Network\Connections\Pbk\_hiddenPbk\rasphone.pbk (CREATE,READ)
		Registry:
			HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT (READ)
			HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup (READ)
			[...]
		Network:
			24.151.31.150:465 (READ)
			http://24.151.31.150:465 (READ,WRITE)
			107.10.49.252:80 (READ)
			http://107.10.49.252:80 (READ,WRITE)

بناءً على المخرجات المعروضة والموارد التي تم الوصول إليها، يمكننا استنتاج بعض ميزات البرامج الضارة:

  • داخل العملية 601941F00B194587C9E5.exe (PID 1800)، تم حذف معرف المنطقة (Zone Identifier) للملف C:\Users\comp\AppData\Local\vscmouse\vscmouse.exe
  • يتم تحميل بعض ملفات DLL ديناميكيًا
  • تتصل العملية vscmouse.exe (PID: 3036) بنقاط النهاية الشبكية http://24.151.31.150:465 و http://107.10.49.252:80

الموارد التي تم الوصول إليها مثيرة للاهتمام لتحديد مؤشرات الكشف القائمة على المضيف والشبكة. بالإضافة إلى ذلك، يمكن استخدام الموارد في توقيعات dynmx. ومن الأمثلة الشائعة على ذلك اكتشاف آليات الثبات في السجل (Registry).``` dynmx_signature: meta: name: run_keys_persistence title: Run Keys Persistence description: Detection of persistence based on Registry Run Keys detection: run_keys: - resource: category: "registry" access_operations: ["write"] with: - attribute: "location" operation: "regex" value: "^(HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE)\\Software\\Microsoft\\Windows\\CurrentVersion\\(Run|RunOnce|RunOnceEx)\\" startup_folders_keys: - resource: category: "registry" access_operations: ["write"] with: - attribute: "location" operation: "regex" value: "^(HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE)\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\(Shell Folders|User Shell Folders)\\" condition: run_keys as simple or startup_folders_keys as simple

root@kitploit:~
## التثبيت
لاستخدام البرنامج، يجب أن يكون Python 3.9 متاحًا على النظام المستهدف. بالإضافة إلى ذلك، يجب تثبيت حزم Python التالية:
* `anytree`,
* `lxml`,
* `pyparsing`,
* `PyYAML`,
* `six` و
* `stringcase`

لتثبيت الحزم، قم بتشغيل الأمر `pip3` الموضح أدناه. يُوصى باستخدام بيئة Python افتراضية بدلاً من تثبيت الحزم على مستوى النظام.```
pip3 install -r requirements.txt

الاستخدام

لاستخدام النموذج الأولي، ما عليك سوى تشغيل نقطة الدخول الرئيسية dynmx.py. يمكن عرض معلومات الاستخدام باستخدام معلمة سطر الأوامر -h كما هو موضح أدناه.``` $ python3 dynmx.py -h usage: dynmx.py [-h] [--format {overview,detail}] [--show-log] [--log LOG] [--log-level {debug,info,error}] [--worker N] {detect,check,convert,stats,resources} ...

Detect dynmx signatures in dynamic program execution information (function logs)

optional arguments: -h, --help show this help message and exit --format {overview,detail}, -f {overview,detail} Output format --show-log Show all log output on stdout --log LOG, -l LOG log file --log-level {debug,info,error} Log level (default: info) --worker N, -w N Number of workers to spawn (default: number of processors - 2)

sub-commands: task to perform

{detect,check,convert,stats,resources} detect Detects a dynmx signature check Checks the syntax of dynmx signature(s) convert Converts function logs to the dynmx generic function log format stats Statistics of function logs resources Resource activity derived from function log

root@kitploit:~
بشكل عام، كما هو موضح في المخرجات، يمكن تعريف عدة معاملات لسطر الأوامر تتعلق بمعالجة السجلات، تنسيق المخرجات للنتائج أو المعالجة المتعددة. علاوة على ذلك، يجب اختيار أمر لتشغيل مهمة محددة. يرجى ملاحظة أن عدد العمال يؤثر فقط على الأوامر التي تستخدم المعالجة المتعددة. حالياً، هذه الأوامر هي `detect` و `convert`. 

تحتوي الأوامر على معاملات سطر أوامر محددة يمكن استكشافها بإعطاء المعامل `-h` للأمر، مثلاً لأمر `detect` كما هو موضح أدناه.```
$ python3 dynmx.py detect -h
usage: dynmx.py detect [-h] --sig SIG [SIG ...] --input INPUT [INPUT ...] [--recursive] [--json-result JSON_RESULT] [--runtime-result RUNTIME_RESULT] [--detect-all]

optional arguments:
  -h, --help            show this help message and exit
  --recursive, -r       Search for input files recursively
  --json-result JSON_RESULT
                        JSON formatted result file
  --runtime-result RUNTIME_RESULT
                        Runtime statistics file formatted in CSV
  --detect-all          Detect signature in all processes and do not stop after the first detection

required arguments:
  --sig SIG [SIG ...], -s SIG [SIG ...]
                        dynmx signature(s) to detect
  --input INPUT [INPUT ...], -i INPUT [INPUT ...]
                        Input files

كمستخدم لـ dynmx، يمكنك تحديد كيفية تنظيم المخرجات. إذا اخترت عرض السجل على وحدة التحكم بتعريف المعلمة --show-log، فإن المخرجات تتكون من قسمين (انظر القائمة أدناه). يتم عرض السجل أولاً ثم نتائج الأمر المستخدم. بشكل افتراضي، لا يتم عرض السجل في وحدة التحكم ولا كتابته إلى ملف سجل (والذي يمكن تعريفه باستخدام المعلمة --log). بسبب المعالجة المتعددة، فإن الإدخالات في ملف السجل ليست بالضرورة بالترتيب الزمني.```

root@kitploit:~
|

__| _ _ _ _ _ / | | | / |/ | / |/ |/ | // _/|/ _/|/ | |/ | | |_/ /_/ /| |

Ver. 0.5 (PoC), by 0x534a

[+] Log output 2023-06-27 19:07:38,068+0000 [INFO] (main) [PID: 13315] []: Start of dynmx run [...] [+] End of log output

[+] Result [...]

root@kitploit:~
مستوى التفاصيل في مخرجات النتيجة يمكن تحديده باستخدام معلمة سطر الأوامر `--output-format` والتي يمكن تعيينها إلى `overview` للحصول على نتيجة عالية المستوى أو إلى `detail` للحصول على نتيجة مفصلة. على سبيل المثال، إذا قمت بتعيين تنسيق المخرجات إلى `detail`، فإن نتائج الكشف المعروضة في وحدة التحكم ستحتوي على استدعاءات واجهة برمجة التطبيقات والموارد الدقيقة التي تسببت في الكشف. تنسيق المخرجات `overview` سيشير فقط إلى التوقيع الذي تم اكتشافه في أي سجل دالة.

## أسطر أوامر مثال
الكشف عن توقيع *dynmx* في سجل دالة باستخدام عملية عامل واحدة```
python3 dynmx.py -w 1 detect -i "flog.txt" -s dynmx_signature.yml

تحويل سجل دالة إلى تنسيق سجل الدالة العام dynmx``` python3 dynmx.py convert -i "flog.txt" -o /tmp/

root@kitploit:~
تحقق من التوقيع (فحوصات أساسية فقط للسلامة)```
python3 dynmx.py check -s dynmx_signature.yml

احصل على قائمة مفصلة بالموارد المستخدمة بواسطة عينة برمجيات ضارة بناءً على سجل الوظائف (نموذج نشاط الوصول)``` python3 dynmx.py -f detail resources -i "flog.txt"

root@kitploit:~
## استكشاف الأخطاء وإصلاحها
يرجى مراعاة أن هذه الأداة هي إثبات للمفهوم تم تطويره إلى جانب كتابة رسالة الماجستير. وبالتالي، فإن جودة الكود ليست دائمًا الأفضل وقد تكون هناك أخطاء وعلل. لقد حاولت جعل الأداة قوية قدر الإمكان في الإطار الزمني المحدد.

أفضل طريقة لاستكشاف الأخطاء وإصلاحها هي تمكين التسجيل (على وحدة التحكم و/أو إلى ملف سجل) وضبط مستوى السجل إلى `debug`. يجب أن تقوم معالجات الاستثناءات بكتابة أخطاء مفصلة إلى السجل مما يساعد في استكشاف الأخطاء وإصلاحها.
تنزيل الأداة