dword: = DWORD
hex(2): = String expansível
hex(7): = Multi-String
A DWORDé um número inteiro não assinado de 32 bits (intervalo decimal: 0- 4294967295) e, no registro, um DWORDsempre começa com 0xe possui 8 dígitos a seguir 0x. Isso pode estar no formato decimal ou hexadecimal; por exemplo, 1000pode ser escrito como 0x00001000ou 0x000003e8.
DWORDSsó pode usar os dígitos 0- 9. Strings, de qualquer tipo, sempre usam ASCII e, no ACSII, 1000só podem ser escritas como 31,30,30,30. Para o tipo de dados String, o ASCII funciona em segundo plano sem que você saiba, porque o computador entende apenas 1s e 0s.
Para os tipos de dados String expansível e String múltipla, eles salvam suas entradas como uma série de códigos ASCII em formato hexadecimal, separados por vírgulas e zeros hexadecimais; então uma String expansível de 1000seriahex(2):31,00,30,00,30,00,30,00
Vamos converter %PROGRAMFILES%em uma string expansível:
- Use uma ferramenta de conversão ASCII para Hex , insira
%PROGRAMFILES%na caixa de texto Delimitador de saída definido pelo usuário:, %selecione Converter e ele fornecerá:
%25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
- Copie / cole o resultado em um editor de texto: Mova o primeiro
%para o final, Encontre / Substitua tudo %por ,00,e remova a vírgula no final da sequência. Voce deveria pegar:
25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
- Finalmente:
hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
Esta lição contém todo o conhecimento necessário para fazer engenharia reversa de qualquer entrada de registro codificada em hexadecimal que não esteja criptografada.
.batarquivo comregcomando em vez de um.regarquivo), mas por que ele fala sobre REG_MULTI_SZ quando a pergunta é sobre REG_EXPAND_SZ?