delphi4arab منتديات دلفي للعرب
كيف تربط برنامجك بملف خارجي؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف تربط برنامجك بملف خارجي؟ (/showthread.php?tid=3211)

الصفحات: 1 2


كيف تربط برنامجك بملف خارجي؟ - cargem - 19-06-2011

السلام عليكم
كيف يمكن ان نربط برنامجي بملف .dll خارجي
بحيث ينفذ روتين معين او عمليات حسابية
ثم نقطف الناتج بحيث استخدمة في حساب عملية ما؟


كيف تربط برنامجك بملف خارجي؟ - الزري2 - 19-06-2011

من مبرمج الملف ؟
إذا كان أنت فالموضوع سهل

حسب إعتقادي الموضوع ضمن عملية هندسة عكسية
لذا يجب عليك تتبع الملف الذي يتعامل مع هذا الملف وفهم آلية التعامل مع الـ Function الخاصة بملف الـ dll
قد يتعامل مع متغير Puplic ضمن البرنامج أو قد يتعامل مع ملف أو أي شئ آخر لذا يمكنك تعديل ملف dll حسبما تحتاج



كيف تربط برنامجك بملف خارجي؟ - cargem - 19-06-2011

مشكور على الرد اخي الزري2
ما احتاجة هو امكانية الوصول الى روتين معين وتنفيذه كما لو كان هذا الروتين مستدعى من البرنامج الاصل
انا لا احتاج اعمل باتش او كراك
اكيد انك قد رأيت كيجن يحتوي على ملف او اكثر يتعامل معه بكل سهولة
ولكن اسأل كيف يمكن ذلك بالدلفي؟


كيف تربط برنامجك بملف خارجي؟ - الزري2 - 19-06-2011

cargem كتب :امكانية الوصول الى روتين معين وتنفيذه كما لو كان هذا الروتين مستدعى من البرنامج الاصل

إنتظرت ردك لكي أتأكد أنك تريد فكرة عمل كيجن يرتبط بملفات dll التي يتعامل معها البرنامج

ما أردت قوله هو أنه يوجد درس للأستاذ Mouradpr في منتدى at4re رقم الموضوع هو 3751
بعنوان : "E@sy V!deo to DVD KeyGening"
برمجة الكيجن في الإسمبلي ولكن كل شئ ممكن بالدلفي طبعاً
فقط الدرس يشرح آلية إستعمال الملف



كيف تربط برنامجك بملف خارجي؟ - cargem - 19-06-2011

اشكرك اخي الزري2
هل يوضح المسئلة بطريقة برمجية
ام عن طريق الهندسة العكسية


كيف تربط برنامجك بملف خارجي؟ - cargem - 19-06-2011

خرجت بهذا الكود
والان نحن في مشكلة التحويل الى دلفي
اعتقد :
1-تحميل الملف
2- تؤشر على العنوان (البوابه)
3- تنفيذ عملية ما
4- خطف الناتج
5- اكمال الكود برمجيا مستفيد من نتائج الروتين


PHP كود :
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include "resource.h"

#define PROC_CAST  void (__stdcall * )(char*, char*)

HINSTANCE hInst;

BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    
HINSTANCE hLib;
    
char BufferName[256];
    
char Serial[256];

    
void (__stdcall *myProc)(char*, char*) = 0; // هنا تضع البروتوتايب تبع الدالة كيفنا كانت

    
switch (uMsg)
    {
    case 
WM_CLOSE:
        
EndDialog(hwndDlg, 0);
        return 
TRUE;

    case 
WM_COMMAND:
        switch (
LOWORD(wParam))
        {
        case 
ID_OK:
        {
            
GetDlgItemText(hwndDlg,ID_NAME,BufferName,32);
            
hLib = LoadLibrary("ether.dll");
            
myProc = (PROC_CAST) GetProcAddress(hLib,"reg_code");
            if (
myProc =t= NULL)
                return 
FALSE;
            
myProc(BufferName, Serial);
            
SetDlgItemText(hwndDlg,ID_SERIAL,Serial);
            
FreeLibrary(hLib);
        }
        return 
TRUE;
        }
    }
    return 
FALSE;
}


int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    
hInst = hInstance;
    return 
DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, DialogProc); 



كيف تربط برنامجك بملف خارجي؟ - Agmcz - 19-06-2011

السلام عليكم
شاهد الدرس السابع من دورة دلفي للعرب


كيف تربط برنامجك بملف خارجي؟ - TF6M - 19-06-2011

السلام عليكم
- لما كل هذا التعقيد , كل ما في الأمر (الطريقة الكلاسيكية) :
1- التأكد من وجود المكتبة
2- تحميل الملف
3- التحصل على عنوان الـMethods
4- تنفيذ الـ Method
5- إرجاع الناتج / تحرير المكتبة
راجع :
[دورة دلفي للعرب] الدرس التاسع: Windows API
كيف ابعث متغير لدالة في ملف dll ثم احصل على النتيجة
بالتوفيق,,


كيف تربط برنامجك بملف خارجي؟ - cargem - 21-06-2011

تشكر اخي TF6M
إقتباس :- التحصل على عنوان الـMethods
اعتقد انه صعب ان تحصل على اسم الـMethods
لان GetProcAddress تحتاج اسم الـMethods والمقبض
------------------
هل يمكن القفر الى عنوان داخل الـMethods
و تنفيذ عملية ما ؟


كيف تربط برنامجك بملف خارجي؟ - TF6M - 21-06-2011

يمكن التحصل على عنوان الـ Methods , عن طريق الإسم / الـ Index / الـ Address
- يمكن إستخراج مثلا أسماء الـ Methods بعدة طرق , أساليب الهندسة العكسية أو برمجيا ...
معرفة function المصدرة من مكتبة DLL