المشاركات : 24
المواضيع 0
الإنتساب : May 2014
السمعة :
1
الشكر: 4
تم شكره 58 مرات في 14 مشاركات
(23-05-14, 11:02 AM)محمديات كتب : 1- بالنسبه لل crc وجدت برنامج يقوم بعمله بالطريقة الصحيحه ويكتب ال crc المناسب للملف والملف يعمل بطريقه صحيحه انا رفعت البرنامج لمعرفة نوع ال crc او الطريقة التي يتبعها في حساب ال crc او على الأقل طريقة دمجه داخل برنامجي ليعمل في الخلفية ويعدل ال crc
والله أنا ما عندي خبرة بالـ Ckeck Sum وأنواع التشفير
بالنسبة للتحويل لـ Hex يوجد طريقتين:
كود :
1- Conversion.Hex(Value)
2- Value.ToString("X")
مثال
كود :
'الطريقة الأولى
TextBox2.Text = Conversion.Hex(Buffer(Index + 0))
'الطريقة الثانية
TextBox3.Text = Buffer(Index + 1).ToString("X")
أما بخصوص إظهار مصفوفة البايت بالمقلوب يمكنك استخدام هذا الكود
كود :
''' <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 لها ولا سوف تبقى كما هي؟
المشاركات : 21
المواضيع 1
الإنتساب : May 2014
السمعة :
0
الشكر: 25
تم شكره 0 مرات في 0 مشاركات
لا لن يتم التعديل على القيم قبل ال swap فقط يتم التبديل بينهما
المشاركات : 24
المواضيع 0
الإنتساب : May 2014
السمعة :
1
الشكر: 4
تم شكره 58 مرات في 14 مشاركات
تفضل أخي ، بخصوص 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
المشاركات : 21
المواضيع 1
الإنتساب : May 2014
السمعة :
0
الشكر: 25
تم شكره 0 مرات في 0 مشاركات
بالنسبه للكود الذي يظهر القيم بالمقلوب اريده ان يخرج قيمتين فقط ولكنه يخرج عندي قيم الصناديق السابقه + القيم المطلوبة
ومن المفترض ان يظهر فيالصندوق الثالث FFF0
المشاركات : 21
المواضيع 1
الإنتساب : May 2014
السمعة :
0
الشكر: 25
تم شكره 0 مرات في 0 مشاركات
القيم التي سوف يتم تغييرها ليست ثابته في كل الملفات ولكن تتغير من ملف لأخر
كود :
'المصفوفة 1 المراد البحث عنها داخل الملف
Dim Find1 As Byte() = {&HB8, &H0, &H0, &H0}
'المصفوفة 2 المراد البحث عنها داخل الملف
Dim Find2 As Byte() = {&HE, &H1F, &HBA, &HE}
ولذلك فاننا سوف نقوم بالبحث اولا عن القيم الموجوده الثابته وهي 46 ونترك بايت ونذهب للبايتين الثابتين اللذي يليه وهما ff 0f
وشكرا لك
المشاركات : 21
المواضيع 1
الإنتساب : May 2014
السمعة :
0
الشكر: 25
تم شكره 0 مرات في 0 مشاركات
المشاركات : 24
المواضيع 0
الإنتساب : May 2014
السمعة :
1
الشكر: 4
تم شكره 58 مرات في 14 مشاركات
(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
وشكرا لك
تفضل أخي
كود :
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
المشاركات : 21
المواضيع 1
الإنتساب : May 2014
السمعة :
0
الشكر: 25
تم شكره 0 مرات في 0 مشاركات
تمام اخي انا كنت حابب اني اضيف ايضا الثوابت في txtbox
يعني 46 في صندوق و 03 اللتي تتغير في صندوق وال ff0f الثابته في صندوق ولكن بالمقلوب و 00 في صندوق و07 في صندوق
ولاتنسى عمل الswap بين القيم اللتي باللون الزرق (قيم متغيره ) عن طريق مثلا نقل المربع الأزرق الأول مكان الثاني والعكس وايضا زر لنقل المربع الازرق الثالث مكان الاول
وشكرا لمساعدتك لي اخي معتز
ودعمك لي
ووضعه الله في ميزان حسناتك
|