05-04-2017, 08:26 PM
عندي مشكل في نقل البيانات عند تحويلها الى سترنغ عن طريق copymemory عند تتبعها عن طريق عمل debug لها ارى ان البيانات مختلفة تماما هذه صورة وهذا المشروع
![[صورة: p_460n8s0o1.jpg]](https://c.top4top.net/p_460n8s0o1.jpg)
وهذا المشروع
![[صورة: p_460n8s0o1.jpg]](https://c.top4top.net/p_460n8s0o1.jpg)
وهذا المشروع
|
لماذا لا يتم نقل البيانات كما هي
|
|
05-04-2017, 08:26 PM
عندي مشكل في نقل البيانات عند تحويلها الى سترنغ عن طريق copymemory عند تتبعها عن طريق عمل debug لها ارى ان البيانات مختلفة تماما هذه صورة وهذا المشروع
![]() وهذا المشروع
06-04-2017, 07:16 AM
قلت ربما يتم التحويل عند النقل من decimal الى hex لكن المفروض ان 85 تعطينا 55وليس 56 و139 تعطينا بدورها حرف é
06-04-2017, 09:13 AM
ربما فهمت المشكل وهي انني لم احول الشال كود حقيقة الى سترينغ لذلك لم يتم وضع البيانات بالشكل الصحيح ام اني مخطا
06-04-2017, 02:46 PM
انا لا اعرف
لم اتعامل من قبل مع المؤشرات او النسخ بدوال مثل CopyMemory لعل احد مجرب هذه الامور يمر من هنا
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
06-04-2017, 05:37 PM
06-04-2017, 08:16 PM
وعليكم السلام
arrRunPE ليست مصفوفة وإنما هي سلسلة نصية في حالتك فما داعي لكتابتها بهذا الشكل؟؟ عملية النسخ سليمة إنتبه معي لما يساوي هذه السلسلة في جدول الاسكي "85,139,236" 8 = 56 5 = 53 , = 44 1 = 49 3 = 51 9 = 57 , = 44 2 = 50 3 = 51 6 = 54 ------------- بما أنك تتعامل مع exe file فلماذا حولته إلى هذا الشكل الق نظرة في هذا الموضوع http://delphi4arab.net/forum/showthread.php?tid=5353 واستعمل الدالة function FileToStr(sPath tring; var sFile tring):Boolean;......
سبحان الله وبحمده سبحان الله العظيم
راح اشوف المشكل انه عند استعمالها تلتقي ب nullbyte حاولت عمل replace لها بحرف اخر ولكن لم ينجح واخيرا قمت بحذف nullbyte وتم الحل لكن لم يشتغل جربت خوارزميات عديدة نفس المشكل
القيت نظرة في هذا الموضوع http://delphi4arab.net/forum/showthread.php?tid=5353 يبدوا الامر معقد نوعا ما انا استعيض عن هذه الاكواد بطريقة مبسطة قراءة الملف في الميموري ستريم ثم وضع السترنغ في متغير بالاستعانة بدالة setstring وعمل حلقة على السترنغ ان كان هناك null byte اقوم بحذفه كود لا يتعدى 6 اسطر ربما لكن حتى مع تحويله الى سترنغ عند نقله عبر copymemory أجد انه لا ينقله كما هو وتظهر الرسالة المعهودة runtime error لو في مشروع بسيط لفهم الفكرة اكون شاكر جدا مشروع يكون بدون عملية تشفير ان امكن
07-04-2017, 09:10 AM
هل حذف nullbyte يؤثر على الملف الناتج ؟
07-04-2017, 09:23 AM
صراحة لا أعرف كيف سأجيبك عليك
تدور تدور وترجع إلى نفس السؤال؟ ماذا تريد بالضبط؟ أنت أكيد تريد تشفير المصفوفة؟
سبحان الله وبحمده سبحان الله العظيم
شوف اخي المشروع الذي صححته لي مرة تتذكره اكيد هنا
http://www.delphi4arab.net/forum/showthr...p?tid=8425 اردت بدا ان تكون مصفوفة بايتات تكون مصفوفة سترينغ الشال كود والملف معا المشكل انه عند تحويل المصفوفتين الى سترنغ ثم اعادة ارجاعها لا تشتغل تمام جربت كذلك تشغيل السترنغ مباشرة لكن لم انجح عن طريق التعديل في كود التشغيل السابق var RunPEProc:procedure(Buffer Char;BufferLen WORD); stdcall;begin RunPEProc := @teststring[1]; RunPEProc(@exestring[1],length(exestring)); end. كتبت هذا الكود لتحويل المصفوفة الخاصو بالشال كود الى سترنغ لاني اخطات في التحويل في الكود السابق for c in arrRunPE do begin str:=str+ inttostr(ord(c))+','; end; str1:=EncodeString(str); ونفس الكود ايضا لتحويل مصفوفة بايتات الملف for c in test do begin str:=str+ inttostr(ord(c))+','; end; str1:=EncodeString(str); يعني بالمختصر المفيد هل يمكن تحويل المصفوفتين الى سترنغ وتشغيلهما عبر هذا الفنكشن var RunPEProc:procedure(Buffer Char;BufferLen WORD); stdcall;begin RunPEProc := @firststring[1]; RunPEProc(@secondstring[1],length(secondstring)); end. |
|
|