-
Posts
1,627 -
Joined
-
Last visited
-
Days Won
214
Content Type
Forums
Courses
News
Articles
Professions
Studying materials
Research
Downloads
Store
Events
Gallery
Everything posted by Fernando Mercês
-
Teremos prazer em ajudar, mas você precisa ler isso e adaptar seu tópico: Abraço!
-
Dificuldade em conseguir "patchear" software.
Fernando Mercês replied to Crowtler's topic in General
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! -
untilhttps://securitybsides.com.br/2024/
-
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á! 😎
- 1 reply
-
- 2
-
Exercício | Aula1 - Sistemas de Numeração | CERO
Fernando Mercês replied to renatomaldonado's topic in General
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! ❤️ -
Gostei dos nomes das seções. 🙂 Maneiro seu projeto!
-
@miguelblefari falta um ponto-e-vírgula no fim da definição da classe, ou seja, no fim de tudo. 😉
- 1 reply
-
- 1
-
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. 🙂
-
hahah tranquilo! No GitHub, em geral, binários vão na seção Releases. 😉 Abraço!
-
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!
-
untilA 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)
-
Tenta nesse: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug😉
- 1 reply
-
- 1
-
Tem esse link de backup, pessoal: https://mega.nz/folder/pYgWESjQ#QLwgzyeW18EjO7OASCgXug
-
breakpoint OptinalHeader.AddressOfEntryPoint
Fernando Mercês replied to Crystoppher's topic in General
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.- 1 reply
-
- 2
-
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!
- 1 reply
-
- 1
-
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!
-
Como posso fazer um toolkit para windows?
Fernando Mercês replied to Gabriel Guedes's topic in C/C++
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. 😍 -
Como posso fazer um toolkit para windows?
Fernando Mercês replied to Gabriel Guedes's topic in C/C++
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! -
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.
- 1 reply
-
- 1
-
Quem manja de Apple e mora na terra da garoa, a empresa tem uma vaga aberta --> https://jobs.apple.com/en-us/details/200492305/br-specialist
-
- 1
-
Temos iniciantes em segurança para você contratar
Fernando Mercês posted uma notícia in Portal Mente Binária
Este mês terminamos a turma 2023.1 do projeto Do Zero Ao Um, que busca oferece um treinamento introdutório em computação e segurança para pessoas pretas. Com apoio dos nossos mantenededores, Tempest Security Intelligence e Spod VPN, e nossos apoiadores e quem faz treinamento com a gente, nos dedicamos a 4 meses de estudo, onde demos 78 aulas, totalizando aproximadamente 240 horas de conteúdo. Mas não é o tipo de aula onde um fala e os outros ouvem não - tem muita prática, avaliações, trabalhos. É uma vivência mesmo. A turma estudou diversas matérias, dentre elas Introdução à Computação, Matemática, Windows, Inglês Instrumental, Programação, Leitura sobre temas raciais, Redes, Nuvem, Introdução a Segurança, Segurança de Redes, Segurança de Endpoints, Análise de Logs e Soft Skills, só para citar algumas. Foi uma jornada longa, mas muito bonita que trilhamos que juntos. Alunos e alunas, professores e professoras, mentores e mentoras, equipe e todos os envolvidos são responsáveis por este sucesso. Mas o momento de comemorar, do nosso lado, ainda não chegou. O ciclo se completa quando vemos as pessoas que estudaram conosco sendo contratadas. E é aí que preciso de você: Se você quiser levar para sua empresa uma pessoa comprometida, que foi até o fim do nosso treinamento, sendo aprovada nas avaliações (fazemos três), e com percentual de presença e participação alto, temos várias possibilidades para você. São elas: @allexmiranda10 de Valparaíso de Goiás/GO @aucoliveira de Caucaia/CE @Daniel Borges do Rio de Janeiro/RJ @daniellyzzz de Recife/PE @deividfrancaamaral de Maetinga/BA @g4bas de Atalaias/AL @guitere85 de Teresópolis/RJ @Heb1m de Vespasiano/MG @JEAN DUTRA SACRAMENTO de Fortaleza/CE @Jhonxxz do Rio de Janeiro/RJ @luislfpfelipe de Bauru/SP E temos mais se você quiser entrar em contato. 😉 Então, se você precisa incluir pessoas na sua cidade, capital próxima, ou tem vaga home-office já manda uma mensagem direta. É só passar o mouse sobre nome da pessoa. 🙂 No entanto, atenção: não é para envolver essas pessoas em processos seletivos que não consideram a inclusão. A disputa com quem teve mais oportunidades na vida é desigual. A gente precisa que você as envolva no programa de inclusão da sua empresa, ou da empresa de amigo (caso não tenha um programa de inclusão, não tem hora melhor para criar um já com gente para ser incluída!). 😉 Aqui na Mente Binária a gente prepara para que as pessoas sejam recebidas em futuros programas de inclusão. Não é dizer que em 4 meses formamos analistas de SOC ou profissionais de AppSec. Seria desonesto com você e com quem estudou com a gente. A verdade é que fornecemos uma base muito boa para que a pessoa seja inserida em programas futuros, seja para pessoas pretas ou não. Agora elas saíram do zero e foram para o um. Sua missão é levá-la ao dois. Posso contar contigo? 💚 -
Oi @Ana Francisca, Você tá usando o NASM né? Ele suporta "Character Strings", ou seja, você escreve no fonte como string e ele compila como char (número). Ou seja, '3' vai gerar o número 0x33, que é o código do texto '3' na tabela ASCII. Dá uma olhada para entender mais: Se quiser o número 3 mesmo, então é só remover as aspas simples. O mesmo se aplica para os demais números. PS.: Em C isso também funciona com um caractere só. Por exemplo, char c = 'A' vai por o valor 0x41 na variável c. Valeu.
-
Oi Ana! Parabéns pela decisão em estudar Assembly. 🙂 No teu código falta especificar o destino nas instruções MOV. Por exemplo: mov, 4 tá pedindo para mover/copiar o valor 4, mas para onde? Falta especificar um destino, entende? O que você precisa aí é saber em qual registrador você quer colocar tais valores. O nome do registrador vai antes da vírgula. Você pode ler mais sobre o assunto no nosso livro, por exemplo, ou em centenas de outros livros e artigos na internet. Outra coisa: em Assembly, você não "muda" o conteúdo de um label assim: mov nome, dword 'Jon' ; Mudar o nome Ana para Jon Linhares Para atingir o que você quer, o jeito mais simples é especificar, na seção .data, dois labels, nome1 e nome2, e aí usá-los um em cada bloco de código que imprime um nome. Por fim, a syscall que sai do programa é a SYS_EXIT. Ela recebe um argumento (você pode conferir aqui ou dando um man 2 exit). Sendo assim, você precisa fazer: mov ebx, 0 mov eax, 1 int 0x80 Isso é equivalente à uma chamada exit(0), entende? E sair com o código de retorno zero é o padrão para dizer para o SO que "deu tudo certo". 😉 Valeu!