1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Восстановить данные измененного значения реестра

Тема в разделе "WASM.RESEARCH", создана пользователем Rel, 1 июн 2021.

Статус темы:
Закрыта.
  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.199
    Собственно сабж. Есть некий ключ реестра, у этого ключа есть некое значение, известно, что в некоторый момент в прошлом это значение было изменено. Есть ли какие то тулзы, которые могут восстановить старые данные значения, после его изменения? При каких ситуациях непосредственное значение реестра будет физически перезаписано, а при каких вероятнее всего, что данные останутся при изменении значения до последующего переиспользования этого места? Так же интересен опыт восстановления данных из удаленных ключей и значений реестра. Спасибо!
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.066
    Ну, раз ресерч, то ресерчствуй:

    Код (C):
    1.  
    2. /* -------------------------------------------------------------------------- */
    3.  
    4. #define HIVE_HEADER_SIGNATURE       ((DWORD)'fger')
    5. #define HIVE_BIN_SIGNATURE          ((DWORD)'nibh')
    6. #define HIVE_SECURITY_SIGNATURE     ((WORD)'ks')
    7. #define HIVE_KEY_SIGNATURE          ((WORD)'kn')
    8. #define HIVE_SUBKEY_LF_SIGNATURE    ((WORD)'fl')
    9. #define HIVE_SUBKEY_LH_SIGNATURE    ((WORD)'hl')
    10. #define HIVE_SUBKEY_LI_SIGNATURE    ((WORD)'il')
    11. #define HIVE_SUBKEY_RI_SIGNATURE    ((WORD)'ir')
    12. #define HIVE_VALUE_SIGNATURE        ((WORD)'kv')
    13. #define HIVE_BIGDATA_SIGNATURE      ((WORD)'bd')
    14. #define HIVE_KEYF_PREDEFINED        0x0040
    15. #define HIVE_KEYF_ASCII_NAME        0x0020
    16. #define HIVE_KEYF_SYMLINK           0x0010
    17. #define HIVE_KEYF_DISABLE_DEL       0x0008
    18. #define HIVE_KEYF_ROOT_KEY          0x0004
    19. #define HIVE_KEYF_MOUNT_POINT       0x0002
    20. #define HIVE_KEYF_VOLATILE          0x0001
    21. #define HIVE_VALF_ASCII_NAME        0x0001
    22. #define HIVE_INVALID_OFFSET         0xffffffff
    23. #define HIVE_MAX_OFFSET             0xffffffff
    24. #define HIVE_INVALID_SIZE           0xffffffff
    25.  
    26. /* -------------------------------------------------------------------------- */
    27.  
    28. #pragma pack(push, 1)
    29.  
    30. typedef struct _HIVE_HEADER
    31. {
    32.     DWORD   signature;
    33.     DWORD   sequence1;
    34.     DWORD   sequence2;
    35.     DWORD   timestampLow;
    36.     DWORD   timestampHigh;
    37.     DWORD   versionMajor;
    38.     DWORD   versionMinor;
    39.     DWORD   type;
    40.     DWORD   format;
    41.     DWORD   rootKey;
    42.     DWORD   lastBin;
    43.     DWORD   unknown2;
    44.     CHAR    fileName[64];
    45.     GUID    unknown3;
    46.     GUID    unknown4;
    47.     DWORD   unknown5;
    48.     GUID    unknown6;
    49.     DWORD   unknown7;
    50.     BYTE    unknown8[340];
    51.     DWORD   checksum;
    52.     BYTE    unknown9[3528];
    53.     GUID    unknown10;
    54.     GUID    unknown11;
    55.     GUID    unknown12;
    56.     DWORD   unknown13;
    57.     DWORD   unknown14;
    58.     /* bins... */
    59. }hive_header_t;
    60.  
    61. typedef struct _BIN
    62. {
    63.     DWORD signature;
    64.     DWORD relOffset;
    65.     DWORD size;
    66.     BYTE unknown[16];
    67.     DWORD nextBin;
    68.     /* cells... */
    69. }hive_bin_t;
    70.  
    71. typedef struct _CELL
    72. {
    73.     DWORD size;
    74.     /* record... */
    75. }hive_cell_t;
    76.  
    77. typedef struct _SECURITY_RECORD
    78. {
    79.     WORD signature;
    80.     WORD unknown;
    81.     DWORD prev;
    82.     DWORD next;
    83.     DWORD refCount;
    84.     DWORD descriptorSize;
    85.     /* BYTE securityDescriptor[] */
    86. }hive_secutiry_record_t;
    87.  
    88. typedef struct _KEY_RECORD
    89. {
    90.     WORD signature;
    91.     WORD flags;
    92.     DWORD timestampLow;
    93.     DWORD timestampHigh;
    94.     DWORD unknown0;
    95.     DWORD parentKey;
    96.     DWORD subKeyCount;
    97.     DWORD subKeyCountV;
    98.     DWORD subKeyList;
    99.     DWORD subKeyListVolatile;
    100.     DWORD valueCount;
    101.     DWORD valueList;        /* cell with offsets to cells with VALUE_RECORD */
    102.     DWORD securityRecord;
    103.     DWORD className;
    104.     DWORD maxSubKeyNameLength;
    105.     DWORD maxClassNameLength;
    106.     DWORD maxValueNameLength;
    107.     DWORD maxValueDataSize;
    108.     DWORD unknown1;
    109.     WORD nameLength;
    110.     WORD classNameLength;
    111.     /* BYTE name[] */
    112. }hive_key_record_t;
    113.  
    114. typedef struct _SUBKEY_LIST
    115. {
    116.     WORD signature;
    117.     WORD itemCount;
    118.     /* items... */
    119. }hive_subkey_list_t;
    120.  
    121. /*
    122. typedef struct _SUBKEY_ITEM_LF_LH
    123. {
    124.     DWORD keyOffset; / * hive_nk_record_t * /
    125.     DWORD hash;
    126. }hive_item_lf_lh_t;
    127.  
    128. typedef struct _SUBKEY_ITEM_RI
    129. {
    130.     DWORD subKeyList;
    131. }hive_item_ri_t;
    132.  
    133. typedef struct _SUBKEY_ITEM_LI
    134. {
    135.     DWORD offset; ???
    136. }hive_item_li_t;
    137. */
    138.  
    139. typedef struct _VALUE_RECORD
    140. {
    141.     WORD signature;
    142.     WORD nameLength;
    143.     DWORD dataLength;
    144.     DWORD data;         /* offset to cell with data or data itself if MSB in dataLength is set */
    145.     DWORD type;
    146.     WORD flags;
    147.     WORD unknown;
    148.     /* BYTE name[] */
    149. }hive_value_record_t;
    150.  
    151. typedef struct _BIGDATA_RECORD
    152. {
    153.     WORD signature;
    154.     WORD fragmentCount;
    155.     DWORD indirectCells;
    156.     DWORD unknown;
    157. }hive_bigdata_t;
    158.  
    159. #pragma pack(pop)
    160.  
    161. /* -------------------------------------------------------------------------- */
    162.  
    Не, ну серьезно, ты же не думал, что местные спецовые спецы тебе готовых скриптов на петоне или расте накидают? :)
     
    M0rg0t нравится это.
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.199
    Вопрос решен, топик можно закрывать, всем спасибо.
     
Статус темы:
Закрыта.