تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيفية التعديل على قيمه معينه داخل ملف هيكس
#31
(23-05-14, 11:02 AM)محمديات كتب : 1- بالنسبه لل crc وجدت برنامج يقوم بعمله بالطريقة الصحيحه ويكتب ال crc المناسب للملف والملف يعمل بطريقه صحيحه انا رفعت البرنامج لمعرفة نوع ال crc او الطريقة التي يتبعها في حساب ال crc او على الأقل طريقة دمجه داخل برنامجي ليعمل في الخلفية ويعدل ال crc

والله أنا ما عندي خبرة بالـ Ckeck Sum وأنواع التشفير Blush

بالنسبة للتحويل لـ Hex يوجد طريقتين:

كود :
1- Conversion.Hex(Value)
2- Value.ToString("X")

مثال
كود :
'الطريقة الأولى
TextBox2.Text = Conversion.Hex(Buffer(Index + 0))

'الطريقة الثانية
TextBox3.Text = Buffer(Index + 1).ToString("X")

أما بخصوص إظهار مصفوفة البايت بالمقلوب يمكنك استخدام هذا الكود Smile

كود :
''' <summary>
''' تحويل مصفوفة البايت لنص
''' </summary>
''' <param name="Array">المصفوفة</param>
''' <param name="Reverse">اخراج الناتج بشكل مقلوب</param>
''' <param name="Hex">اظهار الناتج بالـ Hex</param>
''' <returns>قيمة المصفوفة علي شكل نص</returns>
Function ByteArrayToString(ByVal Array As Byte(), ByVal Reverse As Boolean, Optional ByVal Hex As Boolean = True) As String
    Dim Result As String = String.Empty

    If Reverse Then
        For I As Integer = Array.Length - 1 To 0 Step -1
            Result += If(Hex, Array(I).ToString("X"), Array(I).ToString())
        Next
    Else
        For I As Integer = 0 To Array.Length - 1
            Result += If(Hex, Array(I).ToString("X"), Array(I).ToString())
        Next
    End If

    Return Result
End Function

تطبيق للكود
كود :
TextBox2.Text = ByteArrayToString(Find, True)

(23-05-14, 11:02 AM)محمديات كتب : مع امكانية عمل swap بالضغط على زر وليكن مثلا لنقل مربع ازرق مكان مربع ازرق اخر في نفس الملف

ممكن توضيح أكثر، وهل سيتم التعديل على القيم قبل عمل swap لها ولا سوف تبقى كما هي؟
الرد }}}
تم الشكر بواسطة:
#32
لا لن يتم التعديل على القيم قبل ال swap فقط يتم التبديل بينهما
الرد }}}
تم الشكر بواسطة:
#33
تفضل أخي Smile ، بخصوص Swap عند الضغط على زر

كود :
'تعريف متغيرات عامة
Dim MyBuffer As Byte()
Dim FilePath As String = "D:\test.exe"

'كود فتح الملف وتحميل بيانات الملف داخل MyBuffer
Private Sub OpenButton_Click(sender As System.Object, e As System.EventArgs) Handles OpenButton.Click
    Dim MyFileStream As IO.FileStream = Nothing

    Try
        'تعريف مسار الملف
        MyFileStream = New IO.FileStream(FilePath, IO.FileMode.Open, IO.FileAccess.Read)

        'مصفوفة من البايت بحجم الملف
        Array.Resize(MyBuffer, MyFileStream.Length - 1)

        'قرائة الملف حتي النهاية
        MyFileStream.Read(MyBuffer, 0, MyBuffer.Length)

    Finally
        If MyFileStream IsNot Nothing Then MyFileStream.Close()
    End Try
End Sub

'كود Swap
Private Sub SwapButton_Click(sender As System.Object, e As System.EventArgs) Handles SwapButton.Click
    If MyBuffer Is Nothing Then Return

    'المصفوفة 1 المراد البحث عنها داخل الملف
    Dim Find1 As Byte() = {&HB8, &H0, &H0, &H0}

    'المصفوفة 2 المراد البحث عنها داخل الملف
    Dim Find2 As Byte() = {&HE, &H1F, &HBA, &HE}

    'البحث عن المصفوفة الأولى
    Dim Index1 As Integer = SearchByteArray(MyBuffer, Find1, 0)

    'البحث عن المصفوفة الثانية
    Dim Index2 As Integer = SearchByteArray(MyBuffer, Find2, 0)

    If Not Index1 = -1 And Not Index2 = -1 Then
        'تبديل المصفوفة الأولى بالثانية
        For I As Integer = 0 To Find2.Length - 1
            MyBuffer(Index1 + I) = Find2(I)
        Next

        'تبديل المصفوفة الثانية بالأولى
        For I As Integer = 0 To Find1.Length - 1
            MyBuffer(Index2 + I) = Find1(I)
        Next
    End If
End Sub

'كود حفظ التغييرات للملف
Private Sub SaveButton_Click(sender As System.Object, e As System.EventArgs) Handles SaveButton.Click
    Dim MyFileStream As IO.FileStream = Nothing

    Try
        'تعريف مسار الملف
        MyFileStream = New IO.FileStream(FilePath, IO.FileMode.Open, IO.FileAccess.Write)

        'الانتقال لبداية الملف
        MyFileStream.Seek(&H0, IO.SeekOrigin.Begin)

        'كتابة المصفوفة للملف بعد التعديل
        MyFileStream.Write(MyBuffer, 0, MyBuffer.Length)

        'للتأكد من أنه تم كتابة كل البيانات للملف
        MyFileStream.Flush()

    Finally
        If MyFileStream IsNot Nothing Then MyFileStream.Close()
    End Try
End Sub
الرد }}}
تم الشكر بواسطة:
#34
بالنسبه للكود الذي يظهر القيم بالمقلوب اريده ان يخرج قيمتين فقط ولكنه يخرج عندي قيم الصناديق السابقه + القيم المطلوبة

ومن المفترض ان يظهر فيالصندوق الثالث FFF0
الرد }}}
تم الشكر بواسطة:
#35
القيم التي سوف يتم تغييرها ليست ثابته في كل الملفات ولكن تتغير من ملف لأخر
كود :
'المصفوفة 1 المراد البحث عنها داخل الملف
    Dim Find1 As Byte() = {&HB8, &H0, &H0, &H0}

    'المصفوفة 2 المراد البحث عنها داخل الملف
    Dim Find2 As Byte() = {&HE, &H1F, &HBA, &HE}
ولذلك فاننا سوف نقوم بالبحث اولا عن القيم الموجوده الثابته وهي 46 ونترك بايت ونذهب للبايتين الثابتين اللذي يليه وهما ff 0f



وشكرا لك
الرد }}}
تم الشكر بواسطة:
#36


الرد }}}
تم الشكر بواسطة:
#37
(23-05-14, 07:13 PM)محمديات كتب : القيم التي سوف يتم تغييرها ليست ثابته في كل الملفات ولكن تتغير من ملف لأخر
كود :
'المصفوفة 1 المراد البحث عنها داخل الملف
    Dim Find1 As Byte() = {&HB8, &H0, &H0, &H0}

    'المصفوفة 2 المراد البحث عنها داخل الملف
    Dim Find2 As Byte() = {&HE, &H1F, &HBA, &HE}
ولذلك فاننا سوف نقوم بالبحث اولا عن القيم الموجوده الثابته وهي 46 ونترك بايت ونذهب للبايتين الثابتين اللذي يليه وهما ff 0f



وشكرا لك

تفضل أخي Smile

كود :
Dim MyBuffer As Byte()
Dim FilePath As String = "D:\0B.bin"

Private Sub OpenButton_Click(sender As System.Object, e As System.EventArgs) Handles OpenButton.Click
    Dim MyFileStream As IO.FileStream = Nothing

    Try
        'تعريف مسار الملف
        MyFileStream = New IO.FileStream(FilePath, IO.FileMode.Open, IO.FileAccess.Read)

        'مصفوفة من البايت بحجم الملف
        Array.Resize(MyBuffer, MyFileStream.Length - 1)

        'قرائة الملف حتي النهاية
        MyFileStream.Read(MyBuffer, 0, MyBuffer.Length)

        Dim SearchIndex As Integer = 0
        Do
            SearchIndex = Array.IndexOf(Of Byte)(MyBuffer, &H46, SearchIndex)

            If SearchIndex <> -1 Then
                If (SearchIndex + 28) < MyBuffer.Length Then
                    Dim Index As Integer = SearchIndex

                    Dim Ckeck(1) As Byte
                    Index += 2
                    Array.ConstrainedCopy(MyBuffer, Index, Ckeck, 0, 2)

                    If IsArraysEqual(Ckeck, {&HFF, &HF}) Then
                        Dim Value1(2) As Byte
                        Index += Ckeck.Length + 2
                        Array.ConstrainedCopy(MyBuffer, Index, Value1, 0, 3)
                        TextBox1.Text = ByteArrayToString(Value1, True)

                        Dim Value2(2) As Byte
                        Index += Value1.Length + 1
                        Array.ConstrainedCopy(MyBuffer, Index, Value2, 0, 3)
                        TextBox2.Text = ByteArrayToString(Value2, True)

                        Dim Value3(2) As Byte
                        Index += Value2.Length + 1
                        Array.ConstrainedCopy(MyBuffer, Index, Value3, 0, 3)
                        TextBox3.Text = ByteArrayToString(Value3, True)

                        Dim Value4(2) As Byte
                        Index += Value3.Length + 1
                        Array.ConstrainedCopy(MyBuffer, Index, Value4, 0, 3)
                        TextBox4.Text = ByteArrayToString(Value4, True)

                        Dim Value5(2) As Byte
                        Index += Value5.Length + 1
                        Array.ConstrainedCopy(MyBuffer, Index, Value5, 0, 3)
                        TextBox5.Text = ByteArrayToString(Value5, True)

                        Dim Value6(2) As Byte
                        Index += Value5.Length + 1
                        Array.ConstrainedCopy(MyBuffer, Index, Value6, 0, 3)
                        TextBox6.Text = ByteArrayToString(Value6, True)

                        Exit Do
                    End If
                End If
            End If
        Loop Until SearchIndex = -1

    Finally
        If MyFileStream IsNot Nothing Then MyFileStream.Close()
    End Try
End Sub
الرد }}}
تم الشكر بواسطة: محمديات
#38
تمام اخي انا كنت حابب اني اضيف ايضا الثوابت في txtbox
يعني 46 في صندوق و 03 اللتي تتغير في صندوق وال ff0f الثابته في صندوق ولكن بالمقلوب و 00 في صندوق و07 في صندوق
ولاتنسى عمل الswap بين القيم اللتي باللون الزرق (قيم متغيره ) عن طريق مثلا نقل المربع الأزرق الأول مكان الثاني والعكس وايضا زر لنقل المربع الازرق الثالث مكان الاول

وشكرا لمساعدتك لي اخي معتز
ودعمك لي
ووضعه الله في ميزان حسناتك
Smile
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية منع ظهور الأخطاء من إعدادات البيسيك mmaalmesry 2 851 29-08-25, 10:30 AM
آخر رد: mmaalmesry
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,860 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  كيفية جلب أسماء الأعمدة بجدول من جداول sql heem1986 2 747 17-08-25, 09:15 PM
آخر رد: heem1986
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 3,004 06-08-25, 06:34 PM
آخر رد: Taha Okla
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,246 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  كيفية احتساب الفرق بين تاريخين بناء على عدد معين مصمم هاوي 2 554 15-01-25, 02:02 PM
آخر رد: مصمم هاوي
  كيفية التعامل مع inputbox في فيجوال ستوديو أسامة حسين 4 3,506 14-01-25, 02:04 AM
آخر رد: أبو خالد الشكري
  استدعاء من جدولين داخل اداه FlowLayoutPanel برجاء الافادة للضرورة جداً modymody300894 7 638 15-11-24, 11:02 AM
آخر رد: modymody300894
  كيفية معرفة الجهاز رئيسي ام فرعي المتألق9 1 398 13-11-24, 06:41 PM
آخر رد: justforit
  كتابه عدد معين من الارقام داخل تيكست بوكس modymody300894 3 559 07-11-24, 09:15 PM
آخر رد: modymody300894

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


يقوم بقرائة الموضوع: