هديّة رأس السّنة : أوّل تذكرة لعالم احتراف صياغة السّوفتويرات

الحالة
مغلق و غير مفتوح للمزيد من الردود.
إنضم
17 نوفمبر 2005
المشاركات
0
مستوى التفاعل
1


هنا الدخول في الطريق الصّحيح لمجال تعديل السّوفتوير بالشكل المناسب غير المتعارف عليه سابقاااااا

abourayene_sunshinebar.gif


و نبدأ مع أوّل تذكرة في هذه الطّريقة الوعرة و المتشعّبة مع برنامج dasm st20 و طريقة استعماله و كيفيّة قراءة الملف الناتج عن تفكيك جزء من السوفتوير

abourayene_fan1.jpg


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

كود:
]===============================================================================
Subroutine Summary
===============================================================================
Subroutine Called From

===============================================================================
0000F660 30     ldnl #0
..........
..........
..........
0000F7D1 49     ldc #9
0000F7D2 42     ldc #2
0000F7D3 4D     ldc #D
0000F7D4 00     j loc_F7D5
0000F7D5 4E   loc_0000F7D5: ldc #E
0000F7D6 6572     ldl -#5E
0000F7D8 6100     j loc_F7BA
0000F7DA 42657461546563686E696B00  .string "BetaTechnik
0000F7E6 4E61677261566973696F6E00  .string "NagraVision
0000F7F2 416C376261722046544120556C747261 .string "Al7bar FTA Ultra"
  00
0000F803 4C69666574696D6520556C74726100  .string "Lifetime Ultra
0000F812 416C37626172202D20322E383900  .string "Al7bar - 2.89
0000F820 42     ldc #2
0000F821 6F6F74     ldl #F04
0000F824 20     .db #20
0000F825 76     ldl #6
0000F826 6572     ldl -#5E
0000F828 20     .db #20
0000F829 3A     ldnl #A
0000F82A 20     .db #20
0000F82B 00     j loc_F82C
0000F82C 32   loc_0000F82C: ldnl #2
0000F82D 34     ldnl #4
0000F82E 2E204E     ldc #E0E
0000F831 6F76     ldl -#FA
0000F833 2E2032     ldnl #E02
0000F836 30     ldnl #0
0000F837 30     ldnl #0
0000F838 35     ldnl #5
0000F839 2874     ldl #84
0000F83B 2900     j loc_F8CD
0000F83D 20     .db #20
0000F83E 20     .db #20
0000F83F 20     .db #20
0000F840 60BB     ajw -#5
0000F842 76     ldl #6
0000F843 21282E295E    ldnlp #18E9E
0000F848 2BF9     lbx
0000F84A 48     ldc #8
0000F84B 24F1     shl
0000F84D 76     ldl #6
0000F84E 21282E295E    ldnlp #18E9E
0000F853 81     adc #1
0000F854 2BF9     lbx
0000F856 24FB     or
0000F858 2F2F2F4F    ldc #FFFF
0000F85C 24F6     and
0000F85E D4     stl #4
0000F85F 40     ldc #0
0000F860 D0     stl #0
0000F861 76     ldl #6
0000F862 2B2C53     ldnlp #BC3
0000F865 25FA     dup
0000F867 D6     stl #6
0000F868 30     ldnl #0
0000F869 53     ldnlp #3
0000F86A D3     stl #3
0000F86B 70   loc_0000F86B: ldl #0
0000F86C 73     ldl #3
0000F86D 28F1     wsubdb
0000F86F 25FA     dup
0000F871 D2     stl #2
0000F872 82     adc #2
0000F873 2CFA     ls
0000F875 25FA     dup
0000F877 D1     stl #1
0000F878 272F2F4F    ldc #7FFF
0000F87C 24F6     and
0000F87E 74     ldl #4
0000F87F F4     diff
0000F880 C0     eqc #0
0000F881 A9     cj loc_F88B
0000F882 71     ldl #1
0000F883 28202040    ldc #8000
0000F887 24F6     and
0000F889 C0     eqc #0
0000F88A AA     cj loc_F895
0000F88B 70   loc_0000F88B: ldl #0
0000F88C 81     adc #1
0000F88D D0     stl #0
0000F88E 48     ldc #8
0000F88F 70     ldl #0
0000F890 F9     gt
0000F891 22A8     cj loc_F8BB
0000F893 6206     j loc_F86B
0000F895 72   loc_0000F895: ldl #2
0000F896 51     ldnlp #1
0000F897 2CFA     ls
0000F899 272F2F4F    ldc #7FFF
0000F89D 24F6     and
0000F89F 77     ldl #7
0000F8A0 2CF8     ss
0000F8A2 70     ldl #0
0000F8A3 76     ldl #6
0000F8A4 30     ldnl #0
0000F8A5 53     ldnlp #3
0000F8A6 28F1     wsubdb
0000F8A8 51     ldnlp #1
0000F8A9 2CFA     ls
0000F8AB 28202040    ldc #8000
0000F8AF 24F6     and
0000F8B1 4F     ldc #F
0000F8B2 24F0     shr
0000F8B4 78     ldl #8
0000F8B5 23FB     sb
0000F8B7 41     ldc #1
0000F8B8 B5     ajw #5
0000F8B9 22F0     ret
0000F8BB 40   loc_0000F8BB: ldc #0
0000F8BC B5     ajw #5
0000F8BD 22F0


و هذه الصّورة تبيّن معاني بعض المصطلحات المستعملة حيث هذه هي لغة برنامج assembleur


abourayene_fan2.jpg


و عندما نفهم جيّداااا لغة الأسومبلار نستطيع التعامل مع الملف كأنّه كود سورس للسوفتوير
علما بأن الكود سورس مكتوب بلغة البرمجة C+ مثلما نرى هنا مثال حول كيفيّة قراءة RAM :


كود:
]*
 * memory/simple.c
 *
 * Copyright (C) SGS-THOMSON Microelectronics Ltd. 1997
 *
 * Simple memory partition functions
 */
/*{{{  includes*/
#include <stdlib.h>
#include "memi.h"
#include "os20i.h"
/*}}}  */
#define partition_base u.partition_fast.partition_fast_base
#define partition_size u.partition_fast.partition_fast_size
#define partition_free u.partition_fast.partition_fast_free

/*{{{  void* memory_allocate_simple (partition_t* Partition, size_t Requested)*/
void* memory_allocate_simple (partition_t* Partition, size_t Requested)
{
  void*         Memory = NULL;
  unsigned int  Claimed;
  unsigned int  Available;
  if (Partition == NULL || Requested == (size_t) NULL)
    return NULL;
  Available = Partition->partition_size -
    ((char*)Partition->partition_free - (char*)Partition->partition_base);
  if (Available >=  Requested)
    {
      Memory   = Partition->partition_free;
      Claimed  = (Requested + (BYTES_PER_WORD - 1)) & WORD_MASK;
      Partition->partition_free = (char*)Memory + Claimed;
    }
  return Memory;
}
/*}}}  */
/*{{{  void memory_deallocate_simple (partition_t* Partition, void* Block)*/
void memory_deallocate_simple (partition_t* Partition, void* Block)
{
}
/*}}}  */
/*{{{  void* memory_reallocate_simple (partition_t* Partition, void* Block, size_t size)*/
void* memory_reallocate_simple (partition_t* Partition, void* Block, size_t size)
{
  return 0;
}
/*}}}  */
const partition_class_t partition_class_simple_init = {
    partition_uninit_generic,
    memory_allocate_simple,
    memory_deallocate_simple,
    memory_reallocate_simple,
};
int partition_init_simple_generic(partition_t* Partition, void* Base,
    size_t Size, const struct partition_class_s *partition_class)
{
  if (Size==0)
    return -1;
  task_align(&Base, &Size);
  Partition->partition_class = partition_class;
  Partition->partition_base = Base;
  Partition->partition_size = Size;
  Partition->partition_free = Base;
  Partition->partition_next = NULL;
  partition_add(Partition);
  return 0;
}
/*{{{  void partition_init_simple(partition_t* Partition, void* Base, size_t Size)*/
int partition_init_simple(partition_t* Partition, void* Base,
    size_t Size)
{
  return partition_init_simple_generic(Partition,Base,Size,
        &partition_class_simple_init);
}
/*}}}  */

انتهى الشّرح الأوّل متمنّيا أن أكون قد وفّقت في إيصال معلومة واضحة لكم و خاصّة لخبراء لغة البرمجة مع أنني أعلم بأنّ الأمر معقّد كثيراااا
و الى اللقاء في مناسبة أخرى و شرح آخر تقبلوا مني أحلى تحيّة مرفوقة بالبرنامج المستعمل و ملف كود سورس ( غير مكتمل) لجهاز بلاك بيرد ذو ميكروبروساسور 5500

:satelite:
:spinstar:
 
شكر لك اخي العزيز ابو ريان
على المشاركة المهمة والمفيدة

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

ثق من هنا وصاعدا لن تسمع منّى كلمة شكر لانّها قليلة عليك

تقبّل تحيّاتى وأرسم لى قبلة على جبين ريّــــــــــــــــــــــان :kiss:
 
ابو امل قال:
يا راجل راك عقدتنى بصراحة كل مرّة حاجة جديدة

ثق من هنا وصاعدا لن تسمع منّى كلمة شكر لانّها قليلة عليك

تقبّل تحيّاتى وأرسم لى قبلة على جبين ريّــــــــــــــــــــــان :kiss:

هههههههههههه

هذا لا شيء صديقي الغالي فالآتي أروع بكثير

:kiss:
 
نسكت علا روخي خير
هذا هاو شي كبير
بصراحة يعطيك الصحة
 
مثل هذه الإبداعات ليست بغريبة عنك أستاذي وأخي العزيز أبوريّان
:bravo:
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى