o OEP.Entretando, como este endereco esta fora da secao de codigos (> 0x00521000) entao e necessario um hardware breakpoint. Embora o hardware breakpoint possa funcionar para o que queremos que e acessar o OEP, quando fazemos o JMP para o EAX o codigo ainda nao fica legivel, mesmo apos o Ctrl+A (Analyse code).Entao, uma maneira mais "elegante" e provocar um loop infinito no programa, adicionar o processo em execucao ao debugger e alterar a instrucao do loop infinito para "JMP EAX" e ai sim acessar o OEP. Para isso, basta alterar 0x00525D0A de "JMP EAX" para "EB FE" ou "JMP 0x00525D0A, "EB FE" e o opcode para JMP $EIP, executar um JMP no atual endereco do EIP, ou seja, do atual endereco de memoria, causando um loop infinito. Apos salvar a alteracao em um outro arquivo "bradesco3_novo.exe" e executa-lo, e necessario anexar o processo ao OllyApos anexar o processo, executar (F9) e pausar (F12), ira para no endereco 0x00525D0A.Alterar para "JMP EAX", basta pressionar a tecla de espaco para fazer a alteracao.E entao executar a instrucao via F7.Finalmente chegamos ao OEP, note que as primeiras instrucoes "PUSH EBP; MOV EBP, ESP" sao comumente utilizadas no inicio do programa ou de qualquer funcao para salvar o endereco de retorno, portanto este e provavelmente o inicio "real" do programa.Dump do processo e recuperando IATAgora e necessario fazer o dump do processo, para isso vou utilizar o OllyDump, plugin para o OllyDBG. Das opcoes padroes, retire a opcao "Rebuild Import", por alguma razao essa opcao nem sempre funciona e e necessario importar as DLLs manualmente.Salvei o novo arquivo como "bradesco3_novo_dumped.exe", observe que ele nao e executavel pois esta faltando as DLLs.Para importar as DLLs, ou recuperar a IAT (Import Address Table) vamos utilizar o ImpREC, porem e necessario descobrir algumas informacoes que faltam via Olly:RVA (Relative Virtual Address) - primeiro endereco de memoria da IATSize - tamanho da IAT, ou seja, (ultimo endereco+0x04) - (primeiro endereco) = sizeOEP - ja descobrimos 0x00472864Ainda no Olly, com o "bradesco3_novo.exe", procurar por "FF 25" (Ctrl+B) ou "JMP DWORD PTR DS:" comumente utilizado quando e necessario acessar uma funcao de uma DLL, a partir dai e possivel procurar na memoria os enderecos da IAT. Basta selecionar a instrucao e seguir a instrucao do dump de memoria (Follow in Dump -> Memory Address).Na verdade o utimo endereco de memoria da tabela e o 0x47AE3C mas como temos que calcular o tamanho, teriamos que adicionar +0x04, ou seja, 0x47AE3C + 0x04 = 0x47AE40. Entao, o tamanho da tabela e 0x0047AE3C - 0x0047A140 = CFC. Agora basta utilizar o ImpREC para salvar a IAT no arquivo "bradesco3_novo_dumped.exe".Clicar em "Fix Dump" e selecionar o arquivo bradesco3_novo_dumped.exe, o novo arquivo com o IAT e pronto para ser executado sera salvo com o nome do arquivo "+ _", neste caso "bradesco3_novo_dumped_.exe".Resultados do VirusTotalO arquivo descompactado e consideravelmente bem maior que o compactado.O arquivo descompactado tem menor deteccao do que o compactado 8/43, enquanto o compactado atualmente possui 24/42.ConclusaoEmbora o malware esteja compactado, o mesmo foi compactado com um packer conhecido o que nao dificultou descompactar