Jump to content
Do Zero Ao Um - ABRIREMOS INSCRIÇÕES AO VIVO! - LIVE Terça-feira 25/06 às 19h - mente.in/youtube ×

Fernando Mercês

Administrators
  • Posts

    1,519
  • Joined

  • Last visited

  • Days Won

    170

Everything posted by Fernando Mercês

  1. Opa, tudo bem? Obrigado por terminar o curso! No momento não emitidos certificados para os cursos livres pois não temos nenhuma maneira automatizada de fazê-lo. Um abraço!
  2. Olá! Se alguém tiver tempo, pode ser que consiga te ajudar sim, mas se você quiser aprender e fazer você mesmo, ou se unir com alguém da comunidade e fazer junto, recomendo que comece pelos nossos treinamentos gratuitos aqui. Dependendo do quanto você já conhece, pode ser interessante fazer o de C primeiro e depois o CERO. Aí você pode estudar também pelo livro Fundamentos de Engenharia Reversa e o de Assembly, ambos gratuitos. Tá tudo no menu Ensino aqui mesmo no nosso site. 🙂 Abraço, Fernando
  3. Eu nunca usei essas funções da GDI, mas pelo que vi na documentação da LineTo(), ela usa a “caneta” padrão: The line is drawn by using the current pen and, if the pen is a geometric pen, the current brush. Meus conhecimentos de Paint me dizem que o caminho é alterar a caneta antes de chamar a LineTo(). Pelo que vi, tem que criar a caneta no seu código com a CreatePen(): HPEN caneta = CreatePen(PS_SOLID, 2, RGB(0, 0, 0)); No exemplo acima usei uma caneta sólida, de espessura 2 e cor preta. Depois precisa atribuir a caneta à sua tela: SelectObject(tela, caneta); Se tudo der certo a LineTo vai usar essa caneta ao invés da padrão, mas não testei viu? Tô no celular. hehe Abraço!
  4. Teremos prazer em ajudar, mas você precisa ler isso e adaptar seu tópico: Abraço!
  5. Salve, tudo bem e você? Quando parar na MessageBoxW, olha na Call stack para ver quem a chamou (tô assumindo que você tá no x64dbg). Abraço!
  6. https://www.nullbyte-con.org/
  7. https://bsides.vix.br/
  8. until
    https://securitybsides.com.br/2024/
  9. 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á! 😎
  10. 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! ❤️
  11. Gostei dos nomes das seções. 🙂 Maneiro seu projeto!
  12. @miguelblefari falta um ponto-e-vírgula no fim da definição da classe, ou seja, no fim de tudo. 😉
  13. 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. 🙂
  14. hahah tranquilo! No GitHub, em geral, binários vão na seção Releases. 😉 Abraço!
  15. 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!
  16. until
    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)
  17. Tenta nesse: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug😉
  18. Tem esse link de backup, pessoal: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug
  19. 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.
  20. 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!
  21. 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!
  22. 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. 😍
  23. 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!
  24. Oi @Samuel Araujo. Essa contagem faz sentido e é exatamente o motivo de o registrador r8 ser o r8. 🙂 Em arm por exemplo, ela é utilizada. No entanto, em amd64 os nomes originais foram mantidos acredito que porque preservam a ideia de sua função e também facilita pra quem já sabia i386. Por exemplo, rcx é o contador e por aí vai. Ninguém (?) usa a nomenclatura de r0 a r7 em amd64 mas o nasm a suporta sim: basta usar as macros definidas no pacote altreg no início do seu código. Veja: bits 64 %use altreg SYS_WRITE equ 1 STDOUT equ 1 SYS_EXIT equ 60 section .rodata msg: db `Registradores alternativos!\n` msg_len equ $ - msg section .text global _start _start: mov r0, SYS_WRITE mov r7, STDOUT lea r6, [msg] mov r2, msg_len syscall mov r0, SYS_EXIT xor r7, r7 syscall Usar o pacote altreg é como definir os novos nomes você mesmo. Algo como %define r0 rax, embora o nasm use %idefine no pacote altreg, que faz a definição ficar insensível ao caso, permitindo R0, r0, RAX, rax, rAX, etc. Mais detalhes no arquivo macros/altreg.mac. Isso é só nome e só faz sentido no código-fonte. A instrução gerada no compilado é a mesma, quer você use r0, quer você use rax. O fonte vai ficar confuso já que ninguém (?) tá acostumado com isso em amd64. Além disso, tem que decorar a ordem. Perceba que o segundo registrador é rcx, não o rbx. A ordem é A, C, D, B. Depois vem o SP, BP, SI e DI. Lembrar disso "numericamente" representa uma dificuldade adicional, mas é possível claro. Abraço.
×
×
  • Create New...