Jump to content

Fernando Mercês

Administradores
  • Posts

    1,040
  • Joined

  • Last visited

Everything posted by Fernando Mercês

  1. Opa, é jogo de Windows, @Eletro? PE?
  2. De nada. É, pra Delphi acho que é o melhor. Não precisa de outro programa. Dá pra encontrar uma code cave com o próprio x64dbg. No canal temos um vídeo sobre injeção de código, mas serve para injeção de dados também: Se não houver "holes" utilizáveis (o que é raro), dá pra criar uma seção também (assunto coberto no vídeo da parte 2). Mas não deixa de seguir o CERo até o final. Tu vai curtir! Abraço e boa sorte!
  3. Humm.. neste caso em específico eu acho mais fácil criar um registro para o SERVIDOR no DNS interno e simplesmente mapear producao$ para o novo lugar. Assim nem precisa alterar o programa. 😉 Se realmente for partir pra engenharia reversa, bem, já passei por um caso parecido. Eu diria que sua linha de pensamento de buscar a string no executável está certa. O que eu faria: Usaria o IDR para buscar o endereço do evento BtAdicionarClick. Usaria o x64dbg para colocar um breakpoint no endereço conseguido no passo acima. Seguiria a execução até encontrar onde a string é carregada. Certamente o CERO vai te ajudar. Se preferir ler, tem o livro gratuito Fundamentos de Engenharia Reversa também. Se tiver dúvidas durante o processo, pode postar aqui que a galera ajuda (screenshots, trechos de código, etc são bem vindos). 🤗 Abraço e boa sorte!
  4. Código interessante! Acho que o @Felipe.Silva vai curtir também! Ele publicou um artigo recentemente sobre alocação de memória aqui no Mente Binária. :) Marta, ao que me parece, sua myFree() não está funcionando. Criei uma main() básica: int main(void) { int *p = myMalloc(sizeof(int)); scanf("%d", p); printf("Before freeing it: %d\n", *p); myFree(p); printf("After freeing it: %d\n", *p); return 0; } E o conteúdo de p é impresso na tela, mesmo depois da chamada à myFree(): % ./marta <<< 42 Before freeing it: 42 After freeing it: 42 Em que momento você recebe um runtime error? Abraço, Fernando
  5. Imagina. Foi uma sugestão mesmo, pra ficar melhor pra todos. Tá tudo certo. ;) Acho que neste caso precisaria ser alguém que conheça de Arduino. Eu não sei o que são essas DDRD, PORTC, etc. Você sabe? Talvez ajude relembrar os operadores em C. Por exemplo, o código abaixo: PORTD |= (1<<3); É o mesmo que: PORTD = PORTD | 8; Ou seja, é uma operação OU do valor desta variável/porta com "1 com 3 bits deslocados para a esquerda", que dá no mesmo que "multiplicar por 2 três vezes", que seria 1x2x2x2 que é igual a 8. O resultado é atualizado na própria variável/porta. Os links vão te ajudar a entender. Agora a razão pela qual o código faz isso, não sei te dizer. :( Vou ver se consigo ajuda de alguém que entenda de Arduino. Abraço, Fernando
  6. Opa! Seria legal você editar seu post pra formatar seu código como código (é o botão com os símbolos <> aqui no editor) e usar a opção de realce de sintaxe em C. Porque aí fica assim ó: unsigned int i,n,k,d,y; unsigned long previousTime = 0; byte hours = 12; // start time byte minutes = 15; byte seconds = 00; int val; void setup() { DDRD = 0xFE; DDRB = 0xFF; DDRC = 0xFE; PORTC = 0x01; PORTD = 0x03; PORTB = 0x00; if(hours == 12) hours = 0; } Muito melhor de ler. :) Sobre o programa em si, a sua dúvida é aonde exatamente? Qual parte do código que você não entendeu? Abraço, Fernando
  7. A Hex-Rays surpreendeu todo mundo agora. Liberou a versão mais recente do IDA, a 7.6, no modelo freeware. Só isso já seria muito bom, mas eles foram além: O IDA 7.6 freeware inclui um descompilador online (cloud-based) gratuito! Pois é, pessoas... Parece que a concorrência exercida pelo Ghidra realmente está sendo saudável para a comunidade. Ao disparar o plugin de descompilação (F5), o programa deixa claro que este recurso na versão gratuita suporta somente binários de 64-bits, dentre outros avisos: Ao continuar, a descompilação é concluída e códiogo em pseudo-C é exibido ao lado. Veja o exemplo descompilando o notead.exe nativo do Windows: Os recursos de interação como renomear variáveis e funções no descompilador estão habilitados, uma notícia muito boa para a comunidade! Além do descompilador, a versão 7.6 do IDA freeware inclui: Modo escuro Tá na moda né? E o IDA não ficou de fora. Se você for em Options -> Colors e mudar o Theme para dark, vai ter um visual assim: Organização de dados em pastas Sendo um disassembler interativo, a versão 7.6 oferece a opção de organizar os dados em pastas. Isso vale para vários locais. Um deles é a janela de funções. É possível agora criar pastas e organizar as funções dentro delas. Para isso, basta clicar com o botão direito do mouse na janela de funções e escolher Show folders. Depois é só selecionar as funções desejadas e escolher Create folder with items. E mais: Suporte a binários compilados em Go. Suporte ao novo Apple M1. Rebasing mais rápido. Sincronização entre o descompilador online e o disassembly. Lembando que o disassembler em si suporta binários de 32-bits também (PE, ELF e Mach-O). Só o descompilador que não.
  8. Interessante. Temos aqui também: https://mentebinaria.gitbook.io/engenharia-reversa/apendices/ferramentas#disassemblers Abraço!
  9. Avançou bem! :) Algumas observações aí: Você não precisa desse "funcionário fantasma" (kkkkk) só pra manter a soma. Basta uma variável do tipo int (que precisa ser declarada na main) e no final do segundo loop você pode fazer algo como soma = soma + func[i].salario; No seu printf no final você tá assumindo que o primeiro elemento do array (vetor) func tá na posição 1, mas na verdade arrays em C começam em zero, logo, o primeiro elemento é func[0] e o segundo é func[1]. Ainda no printf, parece que tem mais "percents" do que variáveis para substituí-los. Confere aí. O número de "percents" tem que ser igual ao número de argumentos depois dessa string que tem os "percents". Uma dica pra ajudar a não se perder é pular linha no printf pra deixar mais legível. C permite isso. Só prestar atenção nas vírgulas e não esquecer de fechar parênteses no fim. Tipo: printf("%s : R$ %d\n%s : R$ %d\n", func[0].nome, func[0].salario, func[1].nome, func[1].salario); Boa sorte!
  10. Olá! Que bom que você está tentando. Vira e mexe aparecem pessoas aqui que só querem as repostas. O problema disso é que não aprendem. :( Indo ao assunto, bom, você vai precisar adicionar uma função. No momento o seu programa só tem uma função, a main. Para completar esse exercício você vai precisar de mais uma, que o exercício já te dá o nome, salarioCargo. Ela retorna o total pago, então você já sabe que o retorno da função é do tipo int (já que tá usando este tipo para o salário no programa todo). A função recebe 2 parâmetros: um vetor para a estrutura de funcionários e uma string. A declaração então ficaria mais ou menos assim: int salarioCargo(Funcionario *funcionarios, char *cargo) { // seu código daqui } No código, você vai precisar iterar (usando um loop, tipo for ou while) pelo vetor de funcionários e comparar seus cargos com o cargo passado para a função. A partir daí somar os valores de seus salários. Pontos importantes: Na main, o jeito como você tá preenchendo as informações dos 5 funcionários é pouco otimizado. Seria melhor declarar um vetor de funcionários e fazer um loop para preencher as informações deles (for i=0; i<5; i++). Assim você já vai ter o vetor pra passar pra função salarioCargo também. O exercício é seu, por isso por favor, nunca peça para alguém fazê-lo (não to dizendo que você fez isso - pelo contrário, você não fez, mas só deixando claro que ninguém vai fazer pra você, afinal você é a futura programadora que está se formando e o mercado vai contar com você ☺️). Pode contar com a gente para todas as suas dúvidas. Pode ser que você precise revisitar suas notas, reler livros etc para entender sobre funções, arrays (vetores), ponteiros e loops para completar este exercício. Abraço, Fernando
  11. Opa! O exercício é esse mesmo! A coluna que você destacou exibe a posição dos bytes em grupos de 16 bytes. Analisemos a posição 0x210 por exemplo. Nela, há o byte 0x58. Já na posição 0x211, temos o byte 0x03, entende? Vai contando pra direita de um em um. 😉 Quando chegar no fim da linha, no caso da linha da posição 0x210, será o byte na posição 0x21F, que é 0x00. O próximo já é a posição 0x220, que é o byte 0x44. E assim segue... E aí. Qual é o byte na posição 0x2f4? 🙂 Abraço!
  12. Nussa, jamais pensaria nisso! haha boa fica, Felipe! 🙂
  13. Boa noite! Ah, é um .exe? No Linux, o edb só suporta os formatos nativos (ELF, a.out, etc). Tenta com um ELF nativo do sistema, tipo o /bin/ls. ;) Abraço!
  14. Salve! Bem vindo! Executa sim, sem necessidade de converso. Não faltou uma permissão de execução aí não (chmod +x arquivo)? Abraço!
  15. @Boina Verde pode dar algum contexto aqui? O que são esses arquivos?
  16. Que legal, Estevam! Boa sorte! Vou divulgar na próxima segunda também, no boletim! ❤️
  17. Opa, Já fiz vídeos sobre isso e pus no canal. 😉 Dá uma olhada: Se tiver dúvidas é só falar. Abraço!
  18. Oi @Jhenifer tudo bem? Belo avatar! rsrs Então, a gente certamente pode ajudar, mas você vai precisar postar o código de até onde foi e onde estão suas dúvidas. Não leve a mal, mas do jeito que postou, pode dar a entender que você quer que alguém faça pra você, o que seria um crime contra o seu aprendizado. 😉 Valeu!
  19. Não tenho certeza, mas talvez o RST seja enviado pelo SO, na linha do que o @Dirceu disse. Um workaround que consigo imaginar é bloquear pacotes TCP com essa flag. Já que você tá no Debian, vai ser algo como: iptables -A OUTPUT -p tcp --tcp-flags RST -j DROP E claro, depois vai ter que deletar essa regra, porque nada de rede nessa máquina vai funcionar mais hehe. Abraço!
  20. 104 downloads

    Esta obra apresenta de maneira introdutória, prática e dirigida o uso do programa gnuplot. São explorados diversos recursos a partir da apresentação de gráficos gerados com base em funções matemáticas e de recursos diretamente do programa e de arquivos de dados. Este livro é material ideal para reforçar o estudo de funções a estudantes de segundo grau e para programadores de computador que necessitam implementar o uso de gráficos em seus sistemas. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/gnuplot-5-introducao-e-aplicacao Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/
  21. 141 downloads

    LISP designa uma grande família de linguagens de programação para computadores, como: Run, Cloujure, Racket, Scheme, AutoLISP, Emacs LISP, Common LISP, entre outras. Nesta obra faz-se introdução ao dialeto Common LISP (LISP comum) referenciado neste texto como CL. Não é foco explorar a linguagem em sua totalidade, a intenção é fornecer um caminho de aprendizagem e orientação básica ao público brasileiro carente de obras neste contexto. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/linguagem-lisp Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/
  22. 154 downloads

    Este livro apresenta em linguagem direta e simples as instruções para uso do interpretador de português estruturado ILA+, favorável ao ensino de lógica de programação de computadores para as aulas de: Lógica de Programação e Algoritmos ao fazer uso de uma versão de linguagem de programação codificada em português estruturado. Neste trabalho são abordados os recursos para definição e uso de: variáveis, constantes, operadores aritméticos, expressões aritméticas, operação de entrada, operação de processamento, operação de saída, uso de condições, tomada de decisão, operadores relacionais, operadores lógicos, laços, variáveis indexadas (matrizes), sub-rotinas e passagens de parâmetro. A versão impressa deste livro pode ser adquirida com os devidos custos em https://clubedeautores.com.br/livro/ila Para mais livros e outros downloads acesse http://novo.manzano.pro.br/wp/downloads/.
  23. Version 10

    41 downloads

    Máquina virtual do Windows 10 para desenvolvedores, disponibilizada pela própria Microsoft com licença válida por 3 meses. Tem 20 GB o download mas ela já vem com o seguinte: Windows 10 Windows 10 SDK Visual Studio 2019 com UWP, .NET desktop e Azure workflows habilitados, além da extensão do Windows Template Studio Visual Studio Code Windows Subsystem for Linux com Ubuntu instalado Modo desenvolvedor habilitado Pode ser uma mão na roda pra criar uma VM de análise de malware.
  24. hahahaha maravilhoso @bsantos. Acontece. De boa. 🙂
×
×
  • Create New...