Esta noite me deparei com um fenômeno estranho no win7 (64 bits pro). Quando copio regedit.exe para, por exemplo, c:\ não consigo mais executá-lo. Simplesmente não inicia mais. Quando tento depurá-lo com olly db, olly diz que não há mais arquivo pe válido de 32 bits. Uma análise mais detalhada revela que o arquivo está de alguma forma embaralhado/realinhado. O cabeçalho PE é movido 8 bytes para trás. As seções rdata e pdata aparecem do nada.
O que o hack está acontecendo aqui?
Felicidades, janeiro
Responder1
Não é um arquivo válido de 32 bits porque C:\Windows\regedit.exe
é um executável de 64 bits. A versão de 32 bits é C:\Windows\SysWow64\regedit.exe
.
Posso confirmar que nenhum dos dois será executado se for copiado do local padrão.
Win7 faz mágica nos bastidores. Se você executar o regedit a partir de um processo de 32 bits, obterá o exe de 32 bits do C:\Windows\SysWow64
. Se você executar a partir de um processo de 64 bits, obterá aquele em C:\Windows. Então, quando o seu depurador de 32 bits pensa que está depurando, C:\Windows\regedit.exe
na verdade ele tem arquivos C:\Windows\SysWow64\regedit.exe
. Quando você copia o regedit.exe, C:\Windows
o redirecionamento não ocorre e seu depurador de 32 bits possui o exe de 64 bits - daí a aparente mudança.
Responder2
Ao copiar regedit.exe
, você deve copiar também seu .mui
arquivo localizado em uma culture
subpasta (por exemplo fr-FR\regedit.exe.mui
, ), caso contrário ele não iniciará.
Responder3
Várias ferramentas no NT6 são estúpidas assim, elas não serão executadas sem seus arquivos MUI (provavelmente na pasta en-us).
Certa vez, hackeei o regedit para rodar sem ser elevado como administrador e tive que lutar até o fim para que a cópia hackeada fosse executada e não me lembro dos detalhes exatos do que tive que fazer ...