Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.557
  • Registro em

  • Última visita

  • Dias Ganhos

    195

Tudo que Fernando Mercês postou

  1. Opa, O enunciado pede para tratar dois números inteiros. Você fez com um array (vetor) de inteiros e um inteiro. Consegue avaliar você mesmo se está de acordo ou não? Não posso responder por você. ? Abraço.
  2. Pelo que entendi aqui, basta que a função retorne o menor entre dois números inteiros, então não precisar tratar arrays? Valeu.
  3. Opa, se você precisar dos números que leu fora do loop que tá lendo, vai precisar colocá-los num array. ? Outra dica: por favor, indente seu código e use o botão se inserir código aqui do fórum. Olha a diferença: Sem indentação, nem formatação: for(i=1;i<=10;i++) { printf("\n%d\t%.2f",i,n); } m=t/u; sleep(2); return 0; Indentado e formatado como código: for(i=1;i<=10;i++) { printf("\n%d\t%.2f",i,n); } m=t/u; sleep(2); return 0; Fica bem melhor pra gente ler. ? Um abraço.
  4. Opa, tudo bem? Muito boas suas perguntas. ? Essas diretivas definem dados. Por exemplo, da documentação do FASM: Mas elas não estão limitadas apenas ao tamanho de um dado. Você também pode definir vários dados, que serão armazenados em sequência (conceito de array). Por exemplo, a seguinte diretiva define três bytes em sequência e associa o rótulo dados a ele (essa associação é como o nome de uma variável: só existe no código-fonte): dados: db 0x41, 0x42, 0x43 Outra sintaxe possível para definição dos mesmos três bytes é: dados: db 'A', 'B', 'C' Ou ainda: dados: db 'ABC' Ou: dados: db 'AB', 'C' Ou: dados: db 'AB', 0x43 E por aí vai... É o mesmo que, em C, fazer algo como: char *dados = "ABC"; Ou seja, o rótulo em Assembly será somente o endereço no segmento de dados do programa. Abraço!
  5. Oi Vinicius, tudo bem? Olha, se você não sabe começar, acho que o ideal então é eu te recomendar leituras. Aqui vai: Estrutura de Dados e Algoritmos em C - https://www.cos.ufrj.br/~rfarias/cos121/ Você vai precisar estudar bastante para poder concluir este trabalho. O quanto você sabe de C? Variáveis, funções, ponteiros, isso você já sabe? Se não souber, vai precisar de um material básico de programação também. Abraço!
  6. Caramba. Olha, eu não sei se é intencional, mas a descoberta é importante. Não é incomum fabricantes colocarem backdoors em seus dispositivos. Em geral a hipótese mais comentada é a de espionagem estatal, mas nessa seara tudo é muito difícil de se afirmar, a não ser quando ocorrem vazementos tipo o que o Snowde fez. ?
  7. Parece bom sim. Só o system("pause") aí que só funciona no Windows (ou DOS hehe), mas acho que a ideia do trabalho é testar sua lógica, então tá tudo certo. Parabéns!
  8. You will never find my command without debugging ?
  9. Oi @SpaceHoll0w, Talvez isso ajude: https://mentebinaria.gitbook.io/engenharia-reversa/o-formato-pe/enderecamento Abraço!
  10. Oi Antonio, tudo bem? Dá uma olhada aqui antes: Abraço, Fernando
  11. Pra facilitar seus testes, você pode escrever um arquivo texto com todas as entradas para o programa e depois só redirecionar a entrada ao executar seu programa. Por exemplo, o arquivo anexo pode ser usado da seguinte maneira no Prompt de Comando (no Windows) ou no shell do Linux: No examplo do arquivo anexo, ele vai criar: Produto de código 1. Produto de código 2. Cliente de código 1. Cliente de código 2. Cliente de código 3. Cliente de código 4. Venda para o cliente de código 2 do produto de código 1 de 5 unidades a 2.50 cada. Venda para o cliente de código 1 do produto de código 4 de 3 unidades a 5.00 cada. Venda para o cliente de código 1 do produto de código 2 de 1 unidade a 3.00. Ou seja, é o mesmo que você digitar tudo isso, só que não precisar digitar toda hora. ? Valeu. entrada.txt
  12. Opa, tudo bem? Para nos ajudar, pode editar seu tópico e formatar a parte do código como código? É o botãozinho <> no editor. ? Eu achei a lógica meio complexa, mas te recomendo examinar o valor da variável soma na iteração do loop na função mais_vendido. Se você souber colocar breakpoint de depurar, ótimo. Se não, pode usar um: printf("%f\n", soma); Bom, acredito que o problema esteja na seguinte parte: if(soma>mais_vendido){ mais_vendido=produtos[b]; } Aí você está comparando soma (que tem o total faturado por todas as vendas de determinado produto) com o código do produto. Na real você precisa armazenar quanto um produto vendeu e comparar soma com esta nova variável. Boa sorte!
  13. Fernando Mercês

    retoolkit

    Montar uma máquina virtual para analisar malware no Windows pode ser bastante demorado devido à quantidade de ferramentas que precisamos baixar e configurar. Mesmo existindo soluções que as baixam automaticamente, a banda de internet necessária pode ser bem grande, já que algums programas possuem muitos gigabytes. Pensando em otimizar este tempo, criamos o retoolkit, um conjunto de ferramentas pré-configurado que você baixa uma vez e usa sempre, em quantas máquinas virtuais quiser. A lista de ferramentas é grande, por isso criamos uma wiki no respositório do projeto no Github falando sobre cada uma delas, inclusive com exemplos de uso. Além de acelerar o setup de uma VM nova, você pode utilizar o retoolkit simplesmente para conhecer mais sobre algumas ferramentas utilizadas na área. ?
  14. Fernando Mercês

    FileGrab

    Muitas vezes quando analisando processos suspeitos estes criam arquivos e podem apagá-los depois. Algumas famílias de ransomware chegavam a escrever a chave usada para encriptar os arquivos no disco e depois apagar com o recurso de shredding (substituindo os bytes com zero ou com bytes aleatórios) para evitar a recuperação. Da necessidade de recuperar estes arquivos que "tocam" o filesystem surgiu, em 2014, o FileGrab, um software para monitorar a criação de arquivos no Windows e copiar assim que este for "fechado" (ter todo o seu conteúdo escrito). Na monitoração, é possível especificar um padrão de arquivos específicos para monitorar, utilizando a expansão tradicional do Windows (como *.exe) ou expressões regulares: Os nomes de arquivos que casarem sofrerão uma ação, se especificada na aba Capture. Esta pode ser a cópia para uma outra pasta, drive de rede ou um servidor FTP: O FileGrab é particularmente útil em máquinas virtuais para análise de malware e sandboxes. O código-fonte, assim como binários para Windows estão disponíveis no repositório do Github.
  15. Opa, na verdade basta uma estrutura (struct) com as coordenadas cartesianas e um código que converta, que você já tem. ? Algo assim: struct coord { float x; float y; }; Aí você declara assim: struct coord c; Após declarar, você acessa os membros da uma struct com o operador . (ponto). Por exemplo, para colocar valores nos membros: c.x = 9.1; c.y = 3.4; Você vai precisar adaptar isso na sua chamada à scanf(). Depois de ter os valores preenchidos na sua struct declarada, é só converter, acessando da mesma maneira e imprimir os resultados. Se já souber usar ponteiros, pode fazer uma função que receba a struct e substitua os valores, ou que receba duas structs (uma com as coordenadas cartesianas e a outra vazia, para preencher as coodernadas polares). Mas se ainda não trabalhou com ponteiros, ou não é exigido pelo exercício, pode fazer na main() mesmo. Um abraço e boa sorte!
  16. O vx-underground notou que o site do Ministério da Defesa Russo, https://mil.ru, está devolvendo um código de erro HTTP 418 para quem tenta acessá-lo de fora da Rússia, como mostra captura de tela abaixo: Mensagem de erro ao tentar acessar o site em 24/02/2022 às 15h51 UTC-3 Esse código de retorno foi parte de uma piada de primeiro de abril implementada na RFC do HTTP em 1998. De acordo com a documentação, o código HTTP 418 significa “Eu sou um bule de chá”, brincando com o fato de não poder fazer café por tal motivo. A única razão pela qual um webserver emitiria esse erro é trollar quem tenta acessar. Historicamente, alguns administradores de servidores web configuram seus servidores para emitirem este erro quando o webserver detecta scripts automatizando acessos (crawlers). Se um site oficial do governo russo o faz, é justamente para trollar o mundo, pois é algo configurado manualmente. A piada vem em momento de muito mal gosto, já que ontem a Rússia invadiu a Ucrânia, atacando a capital Kiev com mísseis, o que deu início a uma guerra. Diversas personalidades no mundo da tecnologia já se pronunciaram a respeito da guerra iniciada pela Rússia. Um dos criadores da criptomoeda Ethereum, o russo-canadense Vitaly Dmitriyevich "Vitalik" Buterin, disse num tweet que "O Ethereum é neutro, mas eu não". "Muito triste com a decisão do Putin de abandonar a possibilidade de solução pacífica na disputa com a Ucrânia e partir para a guerra. Isso é um crime contra os cidadãos ucranianos e russos. Eu espero que todos fiquem seguros, embora eu saiba que não vai haver segurança. Glória à Ucrânia.", diz no seu segundo tweet.
  17. O que é o radare2? O framework radare2 é um conjunto de poderosas ferramentas para engenharia reversa totalmente open source e multiplataforma que conta com inúmeras funções desde de um poderoso disassembler, debugger, decompiler, emulação de código, uma interface para scripting e criação de plugins, assim como suporte para vários formatos de arquivos. O curso O curso abordará os conceitos iniciais e intermediários do framework radare2, desde de à mais superficial análise de arquivos até emulação e scripting usando r2pipe, além de ser feito à análise de alguns arquivos usando features de debugging e scripting para automação de atividades em RE. O instrutor @anderson_leite (Buzzer no Discord) é um profissional da segurança da informação, com grande ênfase e prática em desenvolvimento, engenharia reversa e análise de malwares, utiliza o radare2 e o Cutter no seu dia a dia como ferramenta de trabalho para analisar diversas ameaças que atingem sistemas macOS e Windows. Pré-requisitos VM com Ubuntu 20.04. Conhecimento básico de programação, especialmente Python e C. Ter feito o Programação Moderna em C e o CERO, nessa ordem. Familiaridade com arquitetura de computadores e engenharia reversa. Aulas publicadas Aula 0 - Instalação do r2 Aula 1 - Trabalhando com o rax2 e o rahash2 Aula 2 - Navegando e resolvendo um crackme Aula 3 - Referências de chamadas e modo visual (Parte 1) Aula 4 - Referências de chamadas e modo visual (Parte 2) Aula 5 - Scripting com r2pipe (Parte 1) Aula 6 - Scripting com r2pipe (Parte 2) Aula 7 - Debugging Aula 8 - Conhecendo o Cutter Aula 9 - Reconstruindo structs e navegando pelo binário Aula 10 - Debugando e reconhecendo ponteiros
  18. Opa, Vamos preicsar de mais que o enunciado. ? Dá uma lida ó: Valeu!
  19. O fato de você estar compilando com gcc no Windows pelo Git Bash faz com que várias coisas sejam adicionadas no binário final, por conta do MinGW (Minimalist GNU for Windows). Fica mais complicado aprender assim. Eu recomendaria usar nasm e ld somente, de preferência num Linux virtual, ou via WSL2. Outra opção é usar ferramentas nativas para Windows. Aí recomendaria o fasm. Mas o livro é muito bom mesmo, então segui-lo como o autor propõe é a melhor recomendação, creio. ? Abraço.
  20. Opa, quando a gente fala "binário" é em referência ao arquivo executável (ou biblioteca), mas não precisa dar a saída em sistema binário de numeração não. ? Na verdade a melhor saída pra ver isso é com um disassembler, então você pode ou anexar o arquivo aqui (hello.o) ou postar a saída do seguinte comando: $ objdump -d hello.o Valeu!
  21. É outro label sim, porque tem dois underscores. Mas não vejo onde ele está sendo definido. Talvez esteja vazio? Como fica no binário depois de assemblado? Abraço!
  22. Não acho que dê. Que eu saiba, o NASM não suporta a sintaxe da AT&T usada pelo GAS. Eu insistiria no seu exemplo anterior com o ld mesmo. ? Abraço.
  23. Ah, você pode tentar linkar com o ld também: ld -o assembly assembly.obj
×
×
  • Criar Novo...