Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.495
  • Registro em

  • Última visita

  • Dias Ganhos

    155

Fernando Mercês venceu a última vez em Março 13

Fernando Mercês tinha o conteúdo mais apreciado!

Últimos Visitantes

19.599 visualizações

Conquistas de Fernando Mercês

319

Reputação

  1. De quebra, acabei lendo o artigo. Parabéns pela pesquisa! 🙂 E nem foi nada. Por um momento achei que fosses spammers se aproveitando do conteúdo da PRIDE, mas tá tudo certo já! 😎
  2. Que legal! No exercício 4, a ideia é você dar, de cabeça, a resposta em hexadecimal. 😉 No 5, pensa como seria 0x10 - 4 e aí aplica a regra na operação que ele sugere. Ajudou? Abraço e obrigado por estudar com a gente! ❤️
  3. Gostei dos nomes das seções. 🙂 Maneiro seu projeto!
  4. @miguelblefari falta um ponto-e-vírgula no fim da definição da classe, ou seja, no fim de tudo. 😉
  5. Eu ajudaria, mas segurança ofensiva não é minha praia. Ouço falar bem da DCPT, mas não conheço a Exin. 😞 Vamos esperar se alguém com conhecimento sobre o assunto ajuda mais. 🙂
  6. hahah tranquilo! No GitHub, em geral, binários vão na seção Releases. 😉 Abraço!
  7. Oi @Kevin Almeida! Que maneiro! Parabéns! 🙂 Uma pergunta: algum motivo especial pra você não disponibilizar o binário ao invés do código? Acho que facilitaria para que as pessoas de fato tentassem resolver (antes de ver o código). Abraço!
  8. até
    A MiniDebConf acontecerá de 27 a 30 de abril no Campus Pampulha da UFMG - Universidade Federal de Minas Gerais. No dia 27 (sábado) também realizaremos uma edição do FLISOL - Festival Latino-americano de Instalação de Software Livre, evento que acontece no mesmo dia em várias cidades da América Latina. Enquanto a MiniDebConf terá atividades focados no Debian, o FLISOL terá atividades gerais sobre Software Livre e temas relacionados como linguagem de programação, CMS, administração de redes e sistemas, filosofia, liberdade, licenças, etc. 2) Inscrição gratuita e oferta de bolsas ======================================== Você já pode realizar a sua inscrição gratuita para a MiniDebConf Belo Horizonte 2024. A MiniDebConf é um evento aberto a todas as pessoas, independente do seu nível de conhecimento sobre Debian. O mais importante será reunir a comunidade para celebrar um dos maiores projeto de Software Livre no mundo, por isso queremos receber desde usuários(as) inexperientes que estão iniciando o seu contato com o Debian até Desenvolvedores(as) oficiais do projeto. Ou seja, estão todos(as) convidados(as)! Este ano estamos ofertando bolsas de hospedagem e passagens para viabilizar a vinda de pessoas de outras cidades que contribuem para o Projeto Debian. Contribuidores(as) não oficiais, DMs e DDs podem solicitar as bolsas usando o formulário de inscrição. Também estamos ofertando bolsas de alimentação para todos(as) os(as) participantes, mesmo não contribuidores(as), e pessoas que moram na região de BH. Os recursos financeiros são bastante limitados, mas tentaremos atender o máximo de pedidos. Se você pretende pedir alguma dessas bolsas, acesso o link abaixo e veja mais informações antes de realizar a sua inscrição: https://bh.mini.debconf.org/evento/bolsas A inscrição (sem bolsas) poderá ser feita até a data do evento, mas temos uma data limite para o pedido de bolsas de hospedagem e passagens, por isso fique atento(a) ao prazo final: até 18 de fevereiro. Como estamos usando mesmo formulário para os dois eventos, a inscrição será válida tanto para a MiniDebConf quanto para o FLISOL. Para se inscrever, acesso o site, vá em "Cria conta". Criei a sua conta (preferencialmente usando o Salsa) e acesse o seu perfil. Lá você verá o botão de "Se inscrever". https://bh.mini.debconf.org 3) Chamada de atividades ======================== Também está aberta a chamada de atividades tanto para MiniDebConf quanto para o FLISOL. Para mais informações, acesso o link abaixo: https://bh.mini.debconf.org/evento/chamada-de-atividades/ Fique atento ao prazo final para enviar sua proposta de atividade: até 18 de fevereiro. 4) Contato ========== Qualquer dúvida, mande um email para contato (noSPAM) debianbrasil . org . br 5) Organização: =============== - Comunidade Debian Brasil - Comunidade Debian MG - DCC/UFMG - Departamento de Ciência da Computação da UFMG Abraços, -- Paulo Henrique de Lima Santana (phls)
  9. Tenta nesse: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug😉
  10. Tem esse link de backup, pessoal: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug
  11. Opa, bem vindo @Crystoppher! Em algum momento da vida, o x64dbg passou a criar um símbolo exportado (na aba Símbolos/Symbols) chamado OptionalHeader.AddressOfEntryPoint. O nome deste símbolo vem do fato de o endereço do entrypoint ser um campo do cabeçalho chamado Optional Header. No disassembly, se você estiver diante de um endereço de um símbolo, o x64dbg coloca o nome do símbolo do lado. 😉 Abraço.
  12. Legais as perguntas! 🙂 O nome é deslocamento aritimético para a direita. Tem o deslocamento lógico também, que é feito pela instrução SHL. 😉 O que essa instrução faz é, tomando o número em binário, "empurrar" todos os bits para a direita e aí o bit que "sobra" à esquerda é preenchido com zero ou um (caso ele já seja 1). Por exemplo: 0011 SAR 1 = 0001 1100 SAR 1 = 1110 O código faz 0x1122334455667788 SAR 0x3c (60) na primeira iteração do loop. Para entender, você teria que converter 0x1122334455667788 para binário e fazer a operação de deslocamento aritimético para a direita sessenta vezes, entende? Então vamos lá: 0x1122334455667788 em binário é: 0001 0001 0010 0010 0011 0011 0100 0100 0101 0101 0110 0110 0111 0111 1000 1000 (observe a parte em negrito, que será deslocada para a direita). Deslocando somente uma vez para a direita, teremos: 0000 1000 1001 0001 0001 1001 1010 0010 0010 1010 1011 0011 0011 1011 1100 0100 O zero foi colocado à esquerda porque o bit original era zero. Agora você teria que fazer o processo mais 59 vezes para chegar no resultado 1. 🙂 Fiz um programa em Python aqui para simular, trabalhando com o número como se fosse uma string. Espero que não confunda mais. 🤣 rax = '0001000100100010001100110100010001010101011001100111011110001000' print(f'rax = {rax}') for i in range(1, 61): if rax[0] == '0': rax = '0' + rax[:-1] else: rax = '1' + rax[:-1] print(f'rax SAR {i:02d} = {rax}') A saída é: rax = 0001000100100010001100110100010001010101011001100111011110001000 rax SAR 01 = 0000100010010001000110011010001000101010101100110011101111000100 rax SAR 02 = 0000010001001000100011001101000100010101010110011001110111100010 rax SAR 03 = 0000001000100100010001100110100010001010101011001100111011110001 rax SAR 04 = 0000000100010010001000110011010001000101010101100110011101111000 rax SAR 05 = 0000000010001001000100011001101000100010101010110011001110111100 rax SAR 06 = 0000000001000100100010001100110100010001010101011001100111011110 rax SAR 07 = 0000000000100010010001000110011010001000101010101100110011101111 rax SAR 08 = 0000000000010001001000100011001101000100010101010110011001110111 rax SAR 09 = 0000000000001000100100010001100110100010001010101011001100111011 rax SAR 10 = 0000000000000100010010001000110011010001000101010101100110011101 rax SAR 11 = 0000000000000010001001000100011001101000100010101010110011001110 rax SAR 12 = 0000000000000001000100100010001100110100010001010101011001100111 rax SAR 13 = 0000000000000000100010010001000110011010001000101010101100110011 rax SAR 14 = 0000000000000000010001001000100011001101000100010101010110011001 rax SAR 15 = 0000000000000000001000100100010001100110100010001010101011001100 rax SAR 16 = 0000000000000000000100010010001000110011010001000101010101100110 rax SAR 17 = 0000000000000000000010001001000100011001101000100010101010110011 rax SAR 18 = 0000000000000000000001000100100010001100110100010001010101011001 rax SAR 19 = 0000000000000000000000100010010001000110011010001000101010101100 rax SAR 20 = 0000000000000000000000010001001000100011001101000100010101010110 rax SAR 21 = 0000000000000000000000001000100100010001100110100010001010101011 rax SAR 22 = 0000000000000000000000000100010010001000110011010001000101010101 rax SAR 23 = 0000000000000000000000000010001001000100011001101000100010101010 rax SAR 24 = 0000000000000000000000000001000100100010001100110100010001010101 rax SAR 25 = 0000000000000000000000000000100010010001000110011010001000101010 rax SAR 26 = 0000000000000000000000000000010001001000100011001101000100010101 rax SAR 27 = 0000000000000000000000000000001000100100010001100110100010001010 rax SAR 28 = 0000000000000000000000000000000100010010001000110011010001000101 rax SAR 29 = 0000000000000000000000000000000010001001000100011001101000100010 rax SAR 30 = 0000000000000000000000000000000001000100100010001100110100010001 rax SAR 31 = 0000000000000000000000000000000000100010010001000110011010001000 rax SAR 32 = 0000000000000000000000000000000000010001001000100011001101000100 rax SAR 33 = 0000000000000000000000000000000000001000100100010001100110100010 rax SAR 34 = 0000000000000000000000000000000000000100010010001000110011010001 rax SAR 35 = 0000000000000000000000000000000000000010001001000100011001101000 rax SAR 36 = 0000000000000000000000000000000000000001000100100010001100110100 rax SAR 37 = 0000000000000000000000000000000000000000100010010001000110011010 rax SAR 38 = 0000000000000000000000000000000000000000010001001000100011001101 rax SAR 39 = 0000000000000000000000000000000000000000001000100100010001100110 rax SAR 40 = 0000000000000000000000000000000000000000000100010010001000110011 rax SAR 41 = 0000000000000000000000000000000000000000000010001001000100011001 rax SAR 42 = 0000000000000000000000000000000000000000000001000100100010001100 rax SAR 43 = 0000000000000000000000000000000000000000000000100010010001000110 rax SAR 44 = 0000000000000000000000000000000000000000000000010001001000100011 rax SAR 45 = 0000000000000000000000000000000000000000000000001000100100010001 rax SAR 46 = 0000000000000000000000000000000000000000000000000100010010001000 rax SAR 47 = 0000000000000000000000000000000000000000000000000010001001000100 rax SAR 48 = 0000000000000000000000000000000000000000000000000001000100100010 rax SAR 49 = 0000000000000000000000000000000000000000000000000000100010010001 rax SAR 50 = 0000000000000000000000000000000000000000000000000000010001001000 rax SAR 51 = 0000000000000000000000000000000000000000000000000000001000100100 rax SAR 52 = 0000000000000000000000000000000000000000000000000000000100010010 rax SAR 53 = 0000000000000000000000000000000000000000000000000000000010001001 rax SAR 54 = 0000000000000000000000000000000000000000000000000000000001000100 rax SAR 55 = 0000000000000000000000000000000000000000000000000000000000100010 rax SAR 56 = 0000000000000000000000000000000000000000000000000000000000010001 rax SAR 57 = 0000000000000000000000000000000000000000000000000000000000001000 rax SAR 58 = 0000000000000000000000000000000000000000000000000000000000000100 rax SAR 59 = 0000000000000000000000000000000000000000000000000000000000000010 rax SAR 60 = 0000000000000000000000000000000000000000000000000000000000000001 Com isso você prova que 0x1122334455667788 SAR 60 é igual a 1. Mas na próxima iteração do loop, RAX sofrerá uma operação SAR com 56, que já não é 1, e por aí vai... Ou seja, não é que é sempre 1. 😉 O objetivo deste programa é você imprimir na tela cada dígito hexa do registrador RAX, não importa o que você coloque lá. Testa com 0xf0f0caf0f0ca2023 por exemplo. 😉 Abraço!
  13. Opa! Ao que me parece aí só tem os cabeçalhos da mensagem. Se você tiver ela completa, é só salvar com a extensão .eml que os clientes de e-mail abrem. Abraço!
  14. De nada. 🙂 Dá pra fazer por registro, mas eu tentei e vi que tem limite de aninhamento das opções. Acabei usando um software chamado sendto+. O Inno Setup pode escrever as chaves de registro se você escolher fazer via registro. No caso do retoolkit, eu instruo o script do Inno Setup para instalar (copiar) o sendto+ como um programa normal e criar os atalhos. 😍
  15. Oi @Gabriel Guedes! Que legal sua decisão de estudar programação. Acho essencial para qualquer área da computação. 🙂 Muito interessante o projeto de criar um instalador. Existem vários softwares que criam instaladores (Inno Setup, Nullsoft Scriptable Install System (NSIS), Setup Factory, etc), mas fazer o seu próprio é com certeza um projeto muito interessante! Vou tentar ajudar com as dúvidas: Quase nenhuma. Normalmente instalar significa copiar arquivos para determinados diretórios, criar atalhos e escrever em chaves de registro. Tudo isso é feito com funções da biblioteca padrão em linguagens como C# e C++. Sim. O Inno Setup suporta uma linguagem própria de scripting e cria um instalador baseado no que está nesses scripts. O código-fonte do retoolkit consiste destes scripts. Eu não fiz upload dos arquivos dos programas para o GitHub porque não é uma boa prática colocar arquivos que não são de texto em repositórios git, mas eu os tenho na minha máquina, no diretório d:\ret, que é de onde o script pega os arquivos do programa. Perceba que isso tá especificado aqui. 😉 Acredito que você vá aprender mais sobre um ou sobre o outro. Acredito que C# seja um pouco mais fácil e você terá que se preocupar menos com a linguagem. Por que não faz primeiro com um e depois com o outro? Assim você estuda ambas. 🙂 De cabeça não sei, mas você pode pesquisar por instaladores feitos nas duas linguagens. Adoraríamos ver o progresso do teu instalador aqui! 🙂 Um abraço e boa sorte!
×
×
  • Criar Novo...