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

طلب مساعدة من الخبراء في مجال الاسمبلي

مغلق
بدأه sgr2001 في 4 أكتوبر 2004 · 15 رد · 1,411 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

نحمد الله انه اوجد فينا من يعرف هذه اللغة ويجيدها ليكون لنا مرجع متى ما طلبنا المساعدة فاسأل الله ان يمدكم بالعافية ويزيدكم علما ويجعل هذا في موازين حسناتكم

اخواني واحبتي :

هناك مشكلة تعترضني فأنتم اهل لحلها الا وهي ما هي الدوال التي يستخدمها المبرمج في برنامجه للتشييك على السي دي رووم أو القراءة منه والمقارنه هل السي دي المطلوب بالمشغل أي السواقة أم لا وبماذا يرجع ؟

ارجو ان القى ما اطلب ولو أنني متأكد ان هذه ليست بشئ أمام مدراء هذا المنتدى امثال الأخ : chik والأخ jaas

وفقكم الله وبانتظار ردكم .

#2

معقول إلى الآن ما أحد يرد علي

يا جماعة تكفون هناك بعض الدوال ( API) تستخدم للتشييك أو القراءة من السي دي روم

(CDROM)

ارجو أن لا تبخلوا علينا وجزاكم الله خير

#3

لاتعتجل اخي

فالاخوه فيهم الخير والبركه

وسيفيدوك بماتريد

عليك بالصبر

#4

السلام عليكم ,,

حتى يأتيك شباب الأسمبلي أقول يمكنك استخدام ال

mciSendCommand ,, لتشغيل ملف صوتي من ال CD-ROM أو حتى فتح واغلاق السيدي ,, والتحكم به بشكل كامل ,,

ويمكن أن تستخدم دوال ال WriteFile وال ReadFile للتحكم بكل مايخطر على بالك من أجهزة الدخل والخرج ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

السلام عليكم,

اقتباس
هناك مشكلة تعترضني فأنتم اهل لحلها الا وهي ما هي الدوال التي يستخدمها المبرمج في برنامجه للتشييك على السي دي رووم أو القراءة منه والمقارنه هل السي دي المطلوب بالمشغل أي السواقة أم لا وبماذا يرجع ؟

أولا أريد أن أقول أني لم أفهم مصطلح التشييك .

ومن ناحية أخرى إن قراءة ملف من السي دي مثل قراءة ملف من الفلوبي أو القرص الصلب. وكما دكر الأخ HGB فإن الدالة CreateFile يمكن أن تقوم بواجب فتح الملفات وإدا لم تتمكن من فتح ملف كان يجب أن يكون بالقرص قد نعتبر أن هدا ليس القرص الصحيح. هده الطريقة التي أظن أنها الأبسط.

لكن إدا أردنا يمكن أن نقوم في برنامجنا بمعرفة الأقراص الموجودة في الكمبيوتر بواسطة الدالة - لست متأكدا من الإسم الصحيح وليس لدي هنا أدواتي للتأكد من دلك وعلى كل حال يمكنأن أعطيك الدوال الصحيحة غدا - GetDrive أو شيء من هدا القبيل ونستعمل معها دالة أخرى على نحو هدا الإسم GetDriveType وهده ستعطينا نوع القرص الموجود وبما أننا سنهتم بالأقراص سي دي - إد يمكن أن تكون متعددة - نحتفض بأسمائها كمثال قد نعثر على E و F وعند محاولة قراءة ملف ما من القرص نكون نعرف أنه يستازم عليه أن يكون إما في E أو F ولدا سنحاول قراءته من E فغدا لم نستطع نعاود المحاولة من F وحين نمر على جميع أقراص السي دي ولم نفتح الملف فقد يكون القرص غير صحيح. وقد نقوم أيضا بقراءة اسم أو عنوان القرص في الأول والدالة إن لم تخني داكرتي GetVolumeInfo وإدا كان القرص لديه اسم معين فبمقارنة الأسماء يمكن أن نتأكد من صحة القرص أو لا.

هده قد تكون طريقة من بين طرق أخرى. وفيما يخص صحة أسماء الدوال سأحاول وضعها غدا إن شاء الله بعد التأكد من كتابتها لأني لا أتدكر كل أسماء الدوال وخاصة التي لا أستعملها كثيرا.

إلى اللقاء.

#6

أما إذا أردت كتابة أو قرائة سكتور (قطاع من القرص )

مثل برنامج Nero :)

هذة طريقة من مرجع مايكروسفت بإستخدام حزمة DDK

#include <windows.h>
#include <winioctl.h>  // From the Win32 SDK \Mstools\Include
#include "ntddcdrm.h"  // From the Windows NT DDK \Ddk\Src\Storage\Inc

/*
   This code reads sectors 16 and 17 from a compact disc and writes
   the contents to a disk file named Sector.dat
*/


{ 
   HANDLE  hCD, hFile;
   DWORD   dwNotUsed;

   //  Disk file that will hold the CD-ROM sector data.
   hFile = CreateFile ("sector.dat",
                       GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
                       FILE_ATTRIBUTE_NORMAL, NULL);

   // For the purposes of this sample, drive F: is the CD-ROM
   // drive.
   hCD = CreateFile ("\\\\.\\F:", GENERIC_READ,
                     FILE_SHARE_READ|FILE_SHARE_WRITE,
                     NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
                     NULL);

   if (hCD != INVALID_HANDLE_VALUE)
   {
      DISK_GEOMETRY         dgCDROM;
      PREVENT_MEDIA_REMOVAL pmrLockCDROM;

      pmrLockCDROM.PreventMediaRemoval = TRUE;
      DeviceIoControl (hCD, IOCTL_CDROM_MEDIA_REMOVAL,
                       &pmrLockCDROM, sizeof(pmrLockCDROM), NULL,
                       0, &dwNotUsed, NULL);

      // Get sector size of compact disc
      if (DeviceIoControl (hCD, IOCTL_CDROM_GET_DRIVE_GEOMETRY,
                           NULL, 0, &dgCDROM, sizeof(dgCDROM),
                           &dwNotUsed, NULL))
      {
         LPBYTE lpSector;
         DWORD  dwSize = 2 * dgCDROM.BytesPerSector;  // 2 sectors

         lpSector = VirtualAlloc (NULL, dwSize,
                                  MEM_COMMIT|MEM_RESERVE,
                                  PAGE_READWRITE);

         // Move to 16th sector for something interesting to read.
         SetFilePointer (hCD, dgCDROM.BytesPerSector * 16,
                         NULL, FILE_BEGIN);

         // Read sectors from the compact disc and write them to a file.
         if (ReadFile (hCD, lpSector, dwSize, &dwNotUsed, NULL))
            WriteFile (hFile, lpSector, dwSize, &dwNotUsed, NULL);

         VirtualFree (lpSector, 0, MEM_RELEASE);
      }

      // Unlock the disc in the CD-ROM drive.
      pmrLockCDROM.PreventMediaRemoval = FALSE;
      DeviceIoControl (hCD, IOCTL_CDROM_MEDIA_REMOVAL,
                       &pmrLockCDROM, sizeof(pmrLockCDROM), NULL,
                       0, &dwNotUsed, NULL);

      CloseHandle (hCD);
      CloseHandle (hFile);
   }

}

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#7

مداخلة :

jaas سبق وأن قرات أن كتبت أنت أنك كنت تبحث عن رابط لتنزيل ال DDK من موقع مايكروسوفت ,, هل وجدت الرابط مرة أخرى ,, لأن ال DDK قبل 9 أشهر تقريبا كنت أريد تنزيلها من الموقع وكانت خاصة لمسجلين في ال MSDN Subscription كما فهمت ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#8

مرحبا أخي هيثم

كيف عرفت أني كنت أبحث عن الرابط :)

فعلا كانت حزمة DDK موجودة في موقع مايكروسفت وبالتحديد

http://download.microsoft.com/download/win...S/WinHECDDK.exe

ولكنها إختفت

والآن أقوم بتجميع هذة الحزمة من عدة مواقع منها

http://people.freenet.de/Power-Info/Win2000_Pro_DDK_End.htm

http://www.dcs.gla.ac.uk/~lewis/ac4.html

وإن شاء الله أجمعها كلها

وإذا كان لديك أي موقع توجد بة الحزمة أو مقتطفات جديدة لهذة الحزمة

أتحفنا بها

--

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#9

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

وأخص بالشكر كل من HGB و chik و jazz و عيسى

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

والفكرة هي الدالة التي تعمل تست للسطوانة المضغوطة

تقبلو تحياتي

#10

السلام عليكم,

سأعطي هنا برنامجا بالأسمبلر يقوم بقراءة مختلف الأقراص الموجودة في الكمبيوتر وذلك باستعمال الدالة GetLogicalDriveStrings وهي تعطينا أحرف الأقراص وبعدها نستعمل الدالة GetDriveType وهي تعطينا نوع القرص وعلما أن هناك عدة أنواع يمكن أن نراها في مكتبة مايكروسوفت مثلا ثم استعملت الدالة GetVolumeInformation لقراءة اسم أو عنوان القرص.

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

هذا من جهة وفيما يخص الأقراص المحمية فهنا يجب أن نعرف كيف تعمل مختلف الحمايات لأنها متعددة حتى نحاول أن نعرف إن كان القرص محمي بهدا النوع أو داك.

الأخ jaas والأخ هيثم فيما يخص DDK فأنا لدي كلها أعني 98 و 2000 و XP ولكن يصعب وضعها هنا لأنها طويلة وإذا تعذر الأمر يمكن أن نتقاسمها في برنامج كازا مثلا. وفيما يخص 2000 أو 98 يمكن تجربة الموقع التالي :

http://www.vckbase.com/tools/drv/

فرغم أنه بلغة أسيوية غير مفهومة ولكن نفهم ما يخص DDK والتحميل مكتوب بلغة لاتينية.

أتمنى التوفيق للجميع وإلى اللقاء.

Drives.zip

#11

ما شاء الله اخي chik عيني عليك بارده

الله يعطيك العافية وما قصرت وربنا يحميك ويرعاك

لكن عندي عشم فيك تدلني على طريقة الحماية بالليزر لوك

تقبل تحياتي

#12
اقتباس
مرحبا أخي هيثم

كيف عرفت أني كنت أبحث عن الرابط

هاها ,, في استخبارات :)

وأعتقد أن موقع chik يفي بالغرض تماما ,, وموقعك الثاني أخي jaas به أمثلة ودروس مناسبة للغاية ,,

وتشكر يا chik على الكود الواضح والسهل ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#13

ممكن احصل على لنكات مواقع اخوي Chik & Jaas لو تكرمت اخي هيثم

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

#14

والله يا chik تستاهل كل خير ... إحتراف في نبش المواقع

أعتقد إني بعيد تركيب الحزمة ... لأن أغلب الملفات ناقصة عندي

ولكن في شيء غريب .. حجم DDK 2000 الذي عرضة chik تقريبا 64 ميجا

هل هو كامل؟

لأني وجدت حزمة DDK لتطوير أجهزة الشبكات فقط 80 ميجا

تجدها في الرابط التي وضعتها في الرد السابق

أخي sgr2001 أي لنكات تقصد .. كلها معروضة في الردود ؟

أما عن المخابرات هيثم ... (أكيد مافي شيء يخفى عليك )

وإكتشفت اللغز . في منتدى السي . موضوع الإسمبلي (أعتقد : ) )

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#15

للتحكم في سي دي روم، كبديل يمكنك استخدام مكتبة Advanced SCSI interface programming واختصارا ASPI وهي مكتبة في wnaspi32.dll

http://www.hochfeiler.it/alvise/ASPI_1.HTM

أعتقد تدعم كذلك مشغلات ATAPI ؟

تم تعديل هذه المشاركة بواسطة SaD jAckAl في 7 أكتوبر 2004 في 05:54

Igonrance is HeLL,need to say any more?

Laziness is HeLL, Lazy programmers must be shoot on the head

Stupidity is HeLL, u can patch everything but not human stupidity

#16

السلام عليكم,

فيما يخص طول حزمات DDK أضن أنه يمكن أن يتغير من حزمة إلى أخرى فقد يضيف لها فلان ما بعض الأمثلة. لأن DDK الخالصة إن صح التعبير ليست كبيرة جدا إنما برامج المساعدة والأمثلة هي التي قد تزيد في الطول. فقد سبق وأن حملتهما بينما كانا لا زالا موجودين عند مايكروسوفت وإدا لا زلت أتدكر فحزمة 2000 قد تكون في هدا الطول وحزمة الإكس بي في حوالي 100 ميغا وسأعطيك الأرقام الصحيحة بعد التأكد منها إن شاء الله.

وعلى سبيل المثال لو تقم ببحث في برنامج eMule أضن أنك تجد ما تبحث عنه وأكثر حيث هناك حتى الحزمة الخاصة ب Service Pack الجديد وأتمنى أن تبقى هده البرامج وقتا طويلا.

إلى اللقاء.

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…