يمكنك مثلا تغيير قيمة رصيدك في اللعبة أو قراءة صحتك وتنفيذ أوامر للشفاء. مثال:

https://giphy.com/gifs/tibia-libvas-l378tLY1LWaz673fa

كيف يمكنك أن تساعد؟

  • إذا كنت تستخدم نظام UNIX _عدا_ macOS، Linux و BSD: حمل المشروع من على Github وابنيه على نظامك ونفذ الإختبارات (التعليمات موجودة على صفحة الـGithub)

  • على BSD جرب كذلك أن تبني بـ cmake -DBACKEND=ptrace

  • تواصل معي إذا نجح الاختبار أو إذا ظهرت مشاكل

  • بالطبع يمكنك كذلك إستخدام المكتبة أو كتابة wrapper لها في لغتك المفضلة. أرحب بالأسئلة :)

المكتبة مكتوبة بالسي وهي حرة متاحة تحت رخصة LGPL.

تبدوا رائعة

انا احب هذه الاشياء ولكني لا استخدمها في التلاعب في الالعاب بل في الهندسة العكسية

انا استخدم حاليا memorpy [https://github.com/n1nj4sec/memorpy] من برمجة الرائع n1nj4sec وهي مبرمجة بـ بايثون (ويمكنك التلاعب في الالعاب بها كذلك) ما هي ميزات مكتبتك التي تتفرد بها عن memorpy


ما سبب برمجتك لwrapper بلغة Perl بدل بايثون

للهندسة العكسية يوجد scriptable debuggers مثل IDA و ImmunityDbg ذات إنتاجية أكبر بكثير من إستخدم python repl.

الفائدة التي أراها من قراءة الذاكرة بصفة دورية في برنامج منفصل هي لتنفيذ ردود فعل على حسب الحالة (= تلاعب في الألعاب).

الهدف من المكتبة ليس فقط القراءة والكتابة ولكن التعامل مع الـvirtual address spaces عامة على نظم مختلفة. لذلك المشروع لا يحتاج لأي مكتبات خارجية أو برامج عدا مترجم معياري للسي/سي++.

وقت الـconfiguration يتم إختبار النظام للوقوف على الـbackend المناسبة (مثلا على بعض الـBSDs يستخدم ptrace على البعض الأخر procfs. على لينكس حديثة vm_process، على القديم procfs ...إلخ) ويمكنك إختيارهم يدويا كذلك.

ويتم توفير دوال تستخدم إمكانيات خاصة للنظام. مثلا على linux vas_poll تستخدم vas_read. أما على Mach يمكنك الطلب من النواه اتاحة نفس الـmemory page في عدة برامج (remapping) ويوفر ذلك وقت لا بأس به لأن قراءة الذاكرة تتم مباشرة دون الرجوع للنواه ودون TLB flush (في المرات التالية).

للـremapping في نفس البرنامج فوائد كذلك. يمكنك نسخ الذاكرة بـCopy-on-Write semantics. ويكون لديك عنوانين وهميين لكن نفس العنوان الفيزيائي في الذاكرة. يوجد لذلك دالة vas_dup_cow.

يسهل ذلك عمل ring buffers. بدلا من تضييع جزء من الوقت في إختبار إذا ما كنت داخل حدود الـbuffer يمكنك حجز page ثم remapـها بعدها مباشرة وبذلك لا تحتاج لبرمجة الـwrap-around أساسا. يتم كل ذلك في الذاكرة. هذا الموضوع مفيد خصوصا في الـdigital signal processing. يوجد لذلك vas_ringbuf.

يمكنك أن تـmemory map الملفات مباشرة في الذاكرة. يوجد vas_fmap لذلك.

في المستقبل سيتم إضافة إمكانية التعامل مع الـaccess violations الناتجة عن الكتابة الخاطئة، قراءة وتعديل صلاحيات الـpages (مثلا لإنشاء guard pages).

لما Perl؟ لأنها لغة الـscripting التي استخدمها. رغم أني لا إستخدم الـPerl wrapper شخصيا إلا أن وجوده يسمح باختباره مع المكتبة على أجهزة المشتركين في CPAN testers. كل إصدار من المكتبة يتم تجريبه واختباره على عدة مئات من الأجهزة المختلفة للوقوف على المشاكل. ضف إلى ذلك أن كتابة الإختبارات في Perl أكثر سلاسة وأني لا استلطف البايثون.

هل تحب الشروع في كتابة Python Wrapper؟ ;)

برمجة

المواضيع والنقاشات المتعلقة بالبرمجة بشكل عام او لغات البرمجة التي لايوجد لها مجتمعات فرعية.

16.4 ألف متابع