Вечная жизнь в играх своими руками

         

в хвосте оказывается четыре файла:


После всех операций у нас в хвосте оказывается четыре файла: dump_1.exe/dump_2.exe с 50 патронами и dump_3.exe, dump_3.exe с 49- и 48 патронами соответственно. Теперь мы должны сравнить все четыре файла и найти такие ячейки, которые совпадают в dump_1.exe и dump_2.exe, но отличаются у всех остальных. Переменные, отвечающие за хранение количества патронов будут где-то среди них.

Для решения этой задачи мыщъх написал небольшую утилиту, исходный код которой приведен ниже:

#define MAX_DUMPS    0x10                 // макс. кол-во поддерживаемых дампов

main(int c, char **v)

{

       // объявляем переменные

       int pos=0; int a,b,flag; unsigned char ch[MAX_DUMPS]; FILE* f[MAX_DUMPS];

      

       // проверяем

аргументы

       if (c-- < 4) return printf("-err: need more files\n");

      

       // открываем все файлы

       for (a=0;a<c;a++)

              if (!(f[a]=fopen(v[a+1],"rb")))

                     return printf("-err: cant open %s\n",v[a+1]);

      

       // печать

имен файлов

       printf("raw offset");for (a=1;a<c;a++) printf("\t%s",v[a+1]);

      

       while(1)

       {

              // чтение очередной ячейки из каждого файла

              for(a=0;a<c;a++) if (!fread(&ch[a],1,1,f[a])) return 0; pos++;

             

              // если ячейки двух первых дампов совпадают они отбрасываются

              if (ch[0] - ch[1]) continue;

             

              // поиск совпадающих ячеек во втором и всех последущих дампах

              // (такие ячеки отбрасываются как "левые" и на фиг не нужные)

              for(a=flag=1;a<c;a++)

                     for(b=a;b<c;b++) if ((a-b) && (ch[a]==ch[b])) flag=0;

             

              // печать "правильных" ячеек

              if (flag)for (printf("\n%08Xh:",pos-1),a=1;a<c;a++)

                                                       printf("\t%02X",ch[a]);


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий