الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب شرح كود يقوم بتصدير الـexe كـdll

مغلقمُجاب
بدأه allko في 16 يناير 2006 · 3 رد · 902 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا
ما وظيفة هذا الكود؟

#include <stdio.h>
#include <windows.h>


__declspec(dllexport) void Demo()
{
   #define PASSWORD_SIZE 100
   #define PASSWORD      "myGOODpassword\n"

   int count=0;
   char buff [PASSWORD_SIZE]="";

   for(;;)
   {
   printf("Enter password:");
   fgets(&buff[0], PASSWORD_SIZE-1, stdin);

   if (strcmp(&buff[0], PASSWORD))
   printf("Wrong password\n");
   else break;

   if (++count>2) return -1;
   }
   printf("Password OK\n");
}

main()
{
HMODULE hmod;
void (*zzz) ();

if ((hmod=LoadLibrary("crack0~1.exe"))
&& (zzz=(void (*) ())GetProcAddress (h, "Demo")))
zzz();

}

وحسبما قرات في الكتاب الذي وجدت هذا الكود فيه، فقد كتب التالي

What a way to call a function! This technique exports it directly from the executable file and loads the same file as a DLL. (Yes, the same file can be both the executable application and the DLL.)

فهل يمكنكم ان تخبروني بمعني #define ومعنى هذا السطر
fgets(&buff[0], PASSWORD_SIZE-1, stdin);
ومالمقصود &buff[0], هل هي array ؟؟


وشكرا

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 23 يونيو 2014 في 12:15 — السبب: Add some tags

#2 أفضل إجابة
اقتباس
#define

تستخدم لتعريف constant ... هذا من الأساسيات في لغة السي ...

اقتباس
fgets(&buff[0], PASSWORD_SIZE-1, stdin);

fgets من الإسم :File Get String ... وهنا file هو stdin ...

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

أما بالنسبة للكود فيستخدم LoadLibary وهي دالة API وضيفتها :

maps the specified executable module into the address space of the calling process.

حيث الـ executable module من الممكن أن يكون dll او exe .

راجع MSDN Help ستجد الشرح واضح ..

http://msdn.microsoft.com/library/default....loadlibrary.asp

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#3

حبيت أضيف شئ

يمكن إستدعاء دوال مصدرة من exe فقط من ذلك الـ exe او dll مستدعى فيه ... يعني العمل لا بد أن يكون في نفس الـ Process ...

للتوضيح

معانا A.exe , B.exe , Test.dll

A.exe فيه دالة مصدرة fun1 ..

1)يمكن استدعاء fun1 بالطريقة في الكود السابق من داخل A.exe ..

2)ان كان A.exe قام بعمل Load لـ test.dll فانه يمكن من داخل test.dll استدعاء fun1 ..

3) لا يمكن استدعاء fun1 من داخل B.exe ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#4

شكرا...

انا في الواقع اعرف اساسيات السي بلس بلس وليس السي لذلك استغربت قليلا...

شكرا جزيلا لك

هذا الموضوع مغلق.

مواضيع مشابهة