PmoshBR
-
Postagens
2 -
Registro em
-
Última visita
Tipo de Conteúdo
Fóruns
Treinamentos
Notícias
Artigos
Contribuindo
Profissões
Materiais de estudo
Pesquisa
Downloads
Loja
Eventos
Blogs
Galeria
Posts postados por PmoshBR
-
-
Ola pessoal,
Tenho um aplicativo que desenvolvi a muito tempo (2003) no Delphi que utilizo diariamente, porem a um ano atrás meu HD de backup (onde estava o código fonte) pifou e não consegui restaurar 100% dos arquivos desse código fonte, apenas arquivos parciais.
Já com a ideia de que vou ter que reescrever todo o programa de novo, já comecei o projeto em uma outra plataforma. Mais ainda vai demorar até estar 100%. Enquanto isso vou usando a ultima versão compilada.Precisava de uma ajuda para alterar um PATH onde o programa salva e lê arquivos na rede, que foi compilada dentro da linha de código. a função em questão seria essa abaixo:
(Esse foi um dos arquivos do código fonte que consegui recuperar)procedure TFrm_EntDocumentos.BtAdicionarClick(Sender: TObject); var nomefinal,pathfinal:string; ano,mes,dia,hora,minuto,segundo,extensao:string; begin hora:=Copy(TimeToStr(Time),0,2); minuto:=Copy(TimeToStr(Time),4,2); segundo:=Copy(TimeToStr(Time),7,2); hora:=Copy(TimeToStr(Time),0,2); ano:=Copy(DateToStr(Date),7,4); mes:=Copy(DateToStr(Date),4,2); dia:=Copy(DateToStr(Date),0,2); extensao:=ExtractFileExt(EdNomeArquivo.Text); nomefinal:=ano+mes+dia+'-'+hora+minuto+segundo+'-'+EdPedido.Text+'-'+InttoStr(Random(100))+extensao; pathfinal:='\\SERVIDOR\producao$\'+EdTipoArquivo.Text+'\'+nomefinal; try if EdTipoArquivo.Text='CVC' then begin Dm.SQLComando.ConnectionString:=Dm.SQLCvc.ConnectionString; DM.SQLComando.CommandText:=('INSERT INTO TbArquivos (NomeArquivo, CodModVeiculo) VALUES ('+ #39+nomefinal+#39+','+ #39+EdPedido.Text+#39+');'); DM.SQLComando.Execute; end else begin Dm.SQLComando.ConnectionString:=Dm.SQLProducao.ConnectionString; DM.SQLComando.CommandText:=('INSERT INTO TbArquivos (CodPedido, Data, ' + 'NomeArquivo, Observacao, Tipo) VALUES ('+ #39+EdPedido.Text+#39+','+ #39+ano+'/'+mes+'/'+dia+#39+','+ #39+nomefinal+#39+','+ #39+MObservacao.Lines.Text+#39+','+ #39+EdTipoArquivo.Text+#39+');'); DM.SQLComando.Execute; end; if EdTipoArquivo.Text='PRE-CADASTRO IMPLEMENTO' then begin Dm.SQLComando.ConnectionString:=Dm.SQLProducao.ConnectionString; DM.SQLComando.CommandText:=('UPDATE TbProducao SET Pre_Cadastro = 1 WHERE CodPedido = '+#39+EdPedido.Text+#39); DM.SQLComando.Execute; end; try FileSetReadOnly(EdNomeArquivo.Text,true); if CBMover.Checked then begin if not MoveFile(PChar(EdNomeArquivo.Text),PChar(pathfinal)) then raise Exception.Create('Erro ao tentar salvar o arquivo!'); end else if not CopyFile(PChar(EdNomeArquivo.Text),PChar(pathfinal),False) then raise Exception.Create('Erro ao tentar salvar o arquivo!'); except DM.SQLComando.CommandText:=('DELETE FROM TbArquivos WHERE NomeArquivo = '+#39+nomefinal+#39); Dm.SQLComando.Execute; raise Exception.Create('Erro ao tentar salvar o arquivo!'); end; except on E : Exception do begin ShowMessage('Tipo do Erro = '+E.ClassName+#13+'Messagem do Erro = '+E.Message); end else ShowMessage('Erro desconhecido!'); end; end;
No começo da função tem a variável "pathfinal" e esta direcionando os arquivos para o diretório \\SERVIDOR\producao$, queria poder alterar esse path, pois a topologia da rede aqui foi alterada e não existe mais esse caminho.
Já tentei utilizar os programas abaixo para tentar achar a "string" para modifica-la no executável, mais sem sucesso.
- Win32dasm
- dede32
- Resource Hacker
- Hex-Rays IDA Pro
- Ollydbg
- Hiew32
Não sou um conhecedor de assembly de PC x86 ou x64, inclusive estou assistindo os cursos aqui do site para ver se ajuda. Mais tenho conhecimento de asm de microcontroladores com PIC e Atmel.
Alguém poderia me dar uma luz de como alterar esse executável ?? precisava resolver isso enquanto o novo programa não fica pronto....
Obrigado!!!!
Modificando Execultavel feito em Delphi
em Windows
Postado
Ola Fernando,
Obrigado pela ajuda, não conhecia o IDR... foi rodar ele e achar na hora a localização da String, muito bom esse software...
Usei o x64dbg e realmente confirmei a localização da string...
Agora só falta uma coisa, qual programa posso usar para alterar a string e salvar o exe corrigido? pois a quantidade de caracteres não são iguais... teria que alterar o tamanho do arquivo...
Estou gostando bastante do curso CERO...!!
Abraço e obrigado pela resposta...