الفريق العربي للهندسة العكسية
مساعدة شباب في لغة السي ++ - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html)
+--- قسم : الأسئلة والإستفسارات، حلول المشاكل و تبادل الخبرات - Expert Exchange Newbie Questions Answers (https://www.at4re.net/f/forum-36.html)
+--- الموضوع : مساعدة شباب في لغة السي ++ (/thread-743.html)



مساعدة شباب في لغة السي ++ - Polia - 05-05-2019

السلام عليكم ورحمة الله 
اخوان انا بصدد كتابة برنامج صغير مع اني مبتدء في المجال (: 
المهم 

سؤالي هو مهو الكود لمستعمل الذي اذا استعملته ينقل بايت او بايتين الي متغير معا 
في بداي الحلقة وايل كايف انقل بايت او حرف الي متغير ما لاعمل عليه بعض العمليات المنطقية 
فمثلا هذا الكود من الأولي Olyy 

[صورة مرفقة: 692435830.png]

ارجو ان يكون استفساري واضح 



RE: مساعدة شباب في لغة السي ++ - [email protected] - 05-05-2019

 
 
fonction  strncpy
 strncpy ( char * destination, const char * source, size_t num );



RE: مساعدة شباب في لغة السي ++ - Polia - 05-05-2019

لو توضح قليلا اخي بارك الله فيك


RE: مساعدة شباب في لغة السي ++ - [email protected] - 05-05-2019

Output:
str2: AT

/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "AT4RE";
char str2[10];
strncpy ( str2, str1, 2 );
return 0;
}

اتمنى ات يكون واضح أعتذر لأنني متصل عن طريق الهاتف حاليا


RE: مساعدة شباب في لغة السي ++ - scriptkiddie - 06-05-2019

و عليكم السلام و رحمة الله تعالى و بركاته
من الأفضل اعتماد المؤشرات pointers و التمرن عليها...
 
#include <windows.h>

int main() {
    char  *EAX = (char *)malloc(6);
    memset(EAX, 0, 6);
    strcpy(EAX, "AT4RE");

   int ECX = 0;

    do {
        EAX = ECX + EAX;
        *EAX = *EAX ^ 0x89ABCDE;
        *(byte *)EAX = *(byte *)EAX & 0xE;

        ECX = ECX + 0x4;
    } while(ECX < 8);

    return 0;
}

محاكاة عمل اوامر الأسمبلي التي في الصورة فوق...


RE: مساعدة شباب في لغة السي ++ - hsn93 - 13-05-2019

scriptkiddie

اعتقد من السيء استخدام هذه الاسماء في المتغيرات .. هذه اسماء رجسترات في البروسسر بينما يتم تخزينها في الرام الاسم في رايي يعطي مفهوم خاطئ للجدد..

عندك memory leak

free (eax)

======

ايضا هذه مخرجات الكود
https://onlinegdb.com/Hk-A5ILnE


RE: مساعدة شباب في لغة السي ++ - hsn93 - 13-05-2019

هذا افضل اوضحت فيه ما يحدث في الكود المكتوب:

https://onlinegdb.com/S19QLvI3N


RE: مساعدة شباب في لغة السي ++ - scriptkiddie - 13-05-2019

(13-05-2019, 02:22 AM)hsn93 كتب : اعتقد من السيء استخدام هذه الاسماء في المتغيرات .. هذه اسماء رجسترات في البروسسر بينما يتم تخزينها في الرام الاسم في رايي يعطي مفهوم خاطئ للجدد..
بالعكس استعمال اسماء المتغيرات (اسماء السجلات) التي تعكس حقيقة ما يتم محاكاته (اوامر الأسمبلي الصورة فوق) يتيح فهم مراحل التنفيذ و السجلات التي يتم اعتمادها في المحاكاة...
 
(13-05-2019, 02:22 AM)hsn93 كتب : عندك memory leak

في حالة هذا المثال (فقط) تحرير الذاكرة المحجوزة غير اجباري لان التطبيق ينفذ الأوامر و بعدها يغلق (لا يقوم بتنفيذ اوامر اخرى اضافية)، و مع غلقه يقوم النظام بتحرير ما تم حجزه (داخل حيز العملية)

طبعا، هذا لا يمنع من اعتماد السلوك البرمجي الصحيح بتحرير ما يتم حجزه من ذاكرة...