المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
السلام عليكم
كيف يمكن ان نربط برنامجي بملف .dll خارجي
بحيث ينفذ روتين معين او عمليات حسابية
ثم نقطف الناتج بحيث استخدمة في حساب عملية ما؟
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2010
من مبرمج الملف ؟
إذا كان أنت فالموضوع سهل
حسب إعتقادي الموضوع ضمن عملية هندسة عكسية
لذا يجب عليك تتبع الملف الذي يتعامل مع هذا الملف وفهم آلية التعامل مع الـ Function الخاصة بملف الـ dll
قد يتعامل مع متغير Puplic ضمن البرنامج أو قد يتعامل مع ملف أو أي شئ آخر لذا يمكنك تعديل ملف dll حسبما تحتاج
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
مشكور على الرد اخي الزري2
ما احتاجة هو امكانية الوصول الى روتين معين وتنفيذه كما لو كان هذا الروتين مستدعى من البرنامج الاصل
انا لا احتاج اعمل باتش او كراك
اكيد انك قد رأيت كيجن يحتوي على ملف او اكثر يتعامل معه بكل سهولة
ولكن اسأل كيف يمكن ذلك بالدلفي؟
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2010
cargem كتب :امكانية الوصول الى روتين معين وتنفيذه كما لو كان هذا الروتين مستدعى من البرنامج الاصل
إنتظرت ردك لكي أتأكد أنك تريد فكرة عمل كيجن يرتبط بملفات dll التي يتعامل معها البرنامج
ما أردت قوله هو أنه يوجد درس للأستاذ Mouradpr في منتدى at4re رقم الموضوع هو 3751
بعنوان : "E@sy V!deo to DVD KeyGening"
برمجة الكيجن في الإسمبلي ولكن كل شئ ممكن بالدلفي طبعاً
فقط الدرس يشرح آلية إستعمال الملف
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
اشكرك اخي الزري2
هل يوضح المسئلة بطريقة برمجية
ام عن طريق الهندسة العكسية
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
خرجت بهذا الكود
والان نحن في مشكلة التحويل الى دلفي
اعتقد :
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);
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
السلام عليكم
شاهد الدرس السابع من دورة دلفي للعرب
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
19-06-2011, 10:06 PM
(آخر تعديل لهذه المشاركة: 19-06-2011, 10:18 PM بواسطة TF6M.)
السلام عليكم
- لما كل هذا التعقيد , كل ما في الأمر (الطريقة الكلاسيكية) :
1- التأكد من وجود المكتبة
2- تحميل الملف
3- التحصل على عنوان الـMethods
4- تنفيذ الـ Method
5- إرجاع الناتج / تحرير المكتبة
راجع :
[دورة دلفي للعرب] الدرس التاسع: Windows API
كيف ابعث متغير لدالة في ملف dll ثم احصل على النتيجة
بالتوفيق,,
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
تشكر اخي TF6M
إقتباس :- التحصل على عنوان الـMethods
اعتقد انه صعب ان تحصل على اسم الـMethods
لان GetProcAddress تحتاج اسم الـMethods والمقبض
------------------
هل يمكن القفر الى عنوان داخل الـMethods
و تنفيذ عملية ما ؟
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
يمكن التحصل على عنوان الـ Methods , عن طريق الإسم / الـ Index / الـ Address
- يمكن إستخراج مثلا أسماء الـ Methods بعدة طرق , أساليب الهندسة العكسية أو برمجيا ...
معرفة function المصدرة من مكتبة DLL