-
Postagens
1.510 -
Registro em
-
Última visita
-
Dias Ganhos
164
Tipo de Conteúdo
Fóruns
Treinamentos
Notícias
Artigos
Contribuindo
Profissões
Materiais de estudo
Pesquisa
Downloads
Loja
Eventos
Blogs
Galeria
Posts postados por Fernando Mercês
-
-
Você tá fazendo int i-0, o que não é uma construção válida na linguagem. Se sua intenção é declarar uma variável i do tipo inteiro e atribuir o valor zero a ela, então é preciso fazer int i=0.
O mesmo erro acontece em verifica_senha-1, creio.
Valeu!
-
Isso acontece por conta da ordem das coisas. No comando "dir > dir.txt", três coisas acontecem, nessa ordem:
- Um arquivo dir.txt é criado vazio (por conta do redirecionador "> dir.txt").
- O comando dir roda e lê todo o conteúdo do diretório, que tem o dir.txt vazio neste momento.
- Ao tentar imprimir o que leu, o cmd redireciona a saída padrão para o arquivo dir.txt, que ainda tá vazio, mas agora terá a saída do comando dir já pronta no passo anterior.
A única forma que conheço é usar outro diretório. Isso não resolve o problema paradoxal que você apresentou. Creio que não haja solução para considerar o tamanho do dir.txt porque ele só é preenchido depois que o comando dir roda, o que cria o paradoxo que você falou.
Abraço!
-
Escolaridade:
Graduação completa em Ciência da Computação, Engenharia da Computação, Engenharia Elétrica e/ou áreas correlatas;
Experiência:Desenvolvimento de drivers para Sistema Operacional Windows ou Linux, desenvolvimento para sistemas embarcados;
Conhecimento de Linux embarcado, conhecimento em criptografia simétrica, assimétricas, algoritmos de hash e protocolos criptográficos, como por exemplo TLS, conhecimento sobre protocolos RS232, RS485, CAN, etc;
Conhecimentos em desenvolvimento para módulos de BIOS e/ou linguagem assembly serão considerados diferenciais.
Link para mais detalhes: https://lnkd.in/e8WteT2B -
Fantasma? Nunca ouvi falar. Você quer converter o endereço virtual para offset em arquivo? Se for isso pode usar o rva2ofs, do pev. Este recurso tem também no DIE, x64dbg, OllyDbg e vários outros debuggers ou analisadores de PE. ?
Abraço!
-
Exercícios
em C/C++
Oi Paula. Entendi. Bem, neste caso recomendo que peça ajuda aos seus colegas e professores ou estude por algum livro. Se alguém que já sabe programar fizer este programa, aí você não aprende a programar. E só tem uma maneira de se aprender a programar: programando. ?
Aqui tem bastante material (essa apostila da UFMG é um ótimo início): https://www.mentebinaria.com.br/studying-materials/registros/cc/
Não sei quanto tempo você tem para resolver o exercício. Já tem um ambiente funcionando com compilador e tudo mais? Consegue fazer um "Hello, word" simples e já testar?
Valeu!
-
Exercícios
em C/C++
Oi Paula, tudo bem?
Você sabe começar? Já tem um código iniciado aí? Se sim, posta pra gente e diz onde estão suas dúvidas que a gente ajuda. ?
Valeu!
-
Oi Gabriel! A gente vai divulgar um roteiro na próxima segunda exatamente sobre isso. Pode cobrar aqui no tópico. ?
Abraço!
-
Vocês são foda! ?
-
Opa, não vem nenhum campo com ID da transação nesse POST da Cielo?
17 horas atrás, Jonathan403 disse:Pensei em verificar se o IP é do servidor da CIELO
Não é uma boa ideia. Pode ser falsificado também. ?
Abraço.
-
Oi Nicholas. Acho que seu único equívoco é achar que precisa saber o tamanho do de stdin antes. ?
A real é que como você não sabe quantos bytes receberá de entrada, vai precisar alocar memória dinamicamente. Uma abordagem possível é:
- Alocar um buffer qualquer.
- Realocá-lo em 256 bytes (aumentá-lo nessa quantidade).
- Ler 256 bytes para este buffer.
- Equanto o número de bytes lidos for positivo, ir para 2.
No final você terá um buffer com todo o conteúdo de stdin.
Não sei se esta é a melhor opção, no entanto.
Abraço!
-
-
Opa, é jogo de Windows, @Eletro? PE?
-
Em 08/07/2021 em 19:06, PmoshBR disse:
Obrigado pela ajuda, não conhecia o IDR... foi rodar ele e achar na hora a localização da String, muito bom esse software...
De nada. É, pra Delphi acho que é o melhor.
Em 08/07/2021 em 19:06, PmoshBR disse:Agora só falta uma coisa, qual programa posso usar para alterar a string e salvar o exe corrigido? pois a quantidade de caracteres não são iguais... teria que alterar o tamanho do arquivo...
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!
-
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!
-
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
-
17 horas atrás, Gin News disse:
Peço desculpas pelo jeito que eu botei o código no post, sou meio tanso com essas coisas...
Imagina. Foi uma sugestão mesmo, pra ficar melhor pra todos. Tá tudo certo. ;)
17 horas atrás, Gin News disse:eu queria saber como esse código funciona por inteiro mesmo
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
-
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
-
Sim! Corretíssimo!
-
Interessante. Temos aqui também: https://mentebinaria.gitbook.io/engenharia-reversa/apendices/ferramentas#disassemblers
Abraço!
-
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!
-
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
-
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!
-
Nussa, jamais pensaria nisso! haha boa fica, Felipe! ?
-
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!
bom dia pode me ajudar no ponteiro e alocação dinâmica
em C/C++
Postado
Oi Lucas. Esse é o mesmo problema postado aqui? Se for, por favor, atualize o tópico lá para podermos apagar este. Não é legal criar vários tópicos sobre o mesmo assunto. ?
Em tempo, postar o enunciado do exercício e esperar a resposta não funciona. Raramente alguém vai dedicar tempo pra fazer o exercício por você, afinal, o estudante de programação é você. ?
É preciso postar o seu código e explicar onde exatamente está sua dúvida, o erro que dá, etc. Aí a galera ajuda. ˆˆ
Um abraço e bons estudos!