لماذا لا يتم نقل البيانات كما هي
#1
عندي مشكل في نقل البيانات عند تحويلها الى سترنغ عن   طريق copymemory  عند تتبعها عن طريق عمل debug لها ارى ان البيانات مختلفة تماما  هذه  صورة وهذا المشروع
[صورة: p_460n8s0o1.jpg]
وهذا المشروع


الملفات المرفقة
.rar   ArrayToRun.rar (الحجم : 1.36 ك ب / التحميلات : 8)
الرد
#2
قلت ربما يتم التحويل عند النقل من decimal الى hex لكن المفروض ان 85 تعطينا 55وليس 56 و139 تعطينا بدورها حرف é
الرد
#3
ربما فهمت المشكل وهي انني لم احول الشال كود حقيقة الى سترينغ لذلك لم يتم وضع البيانات بالشكل الصحيح ام اني مخطا
الرد
#4
انا لا اعرف
لم اتعامل من قبل مع المؤشرات او النسخ بدوال مثل CopyMemory لعل احد مجرب هذه الامور يمر من هنا
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#5
(06-04-2017, 02:46 PM)Delphi4Us كتب : انا لا اعرف
لم اتعامل من قبل مع المؤشرات او النسخ بدوال مثل CopyMemory لعل احد مجرب هذه الامور يمر من هنا

جزاك الله خيرا اخي على الرد
الرد
#6
وعليكم السلام
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(sPathConfusedtring; var sFileConfusedtring):Boolean;
......
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#7
راح اشوف المشكل انه عند استعمالها تلتقي ب nullbyte حاولت عمل replace لها بحرف اخر ولكن لم ينجح واخيرا قمت بحذف nullbyte وتم الحل لكن لم يشتغل جربت خوارزميات عديدة نفس المشكل

القيت نظرة في هذا الموضوع

http://delphi4arab.net/forum/showthread.php?tid=5353

يبدوا الامر معقد نوعا ما انا استعيض عن هذه الاكواد بطريقة مبسطة قراءة الملف في الميموري ستريم ثم وضع السترنغ في متغير بالاستعانة بدالة setstring وعمل حلقة على السترنغ ان كان هناك null byte اقوم بحذفه كود لا يتعدى 6 اسطر ربما لكن حتى مع تحويله الى سترنغ عند نقله عبر copymemory أجد انه لا ينقله كما هو وتظهر الرسالة المعهودة runtime error لو في مشروع بسيط لفهم الفكرة اكون شاكر جدا مشروع يكون بدون عملية تشفير ان امكن
الرد
#8
هل حذف nullbyte يؤثر على الملف الناتج ؟
الرد
#9
صراحة لا أعرف كيف سأجيبك عليك
تدور تدور وترجع إلى نفس السؤال؟
ماذا تريد بالضبط؟
أنت أكيد تريد تشفير المصفوفة؟
سبحان الله وبحمده سبحان الله العظيم
الرد
#10
شوف اخي المشروع الذي صححته لي مرة تتذكره اكيد هنا
http://www.delphi4arab.net/forum/showthr...p?tid=8425
اردت بدا ان تكون مصفوفة بايتات تكون مصفوفة سترينغ الشال كود والملف معا المشكل انه عند تحويل المصفوفتين الى سترنغ ثم اعادة ارجاعها لا تشتغل تمام جربت كذلك تشغيل السترنغ مباشرة لكن لم انجح عن طريق التعديل في كود التشغيل السابق

var
RunPEProc:procedure(BufferTongueChar;BufferLenBig GrinWORD); 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(BufferTongueChar;BufferLenBig GrinWORD); stdcall;
begin

RunPEProc := @firststring[1];
RunPEProc(@secondstring[1],length(secondstring));
end.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم