Ir para conteúdo
  • Cadastre-se

Eduardo Bittencourt

Membros
  • Total de itens

    38
  • Registro em

  • Última visita

Reputação

11 Good

Últimos Visitantes

684 visualizações
  1. Eduardo Bittencourt

    As maquinas querem saber

    C -> ShellCode
  2. Eduardo Bittencourt

    Filmes e séries sobre informática

    Outro filme excelente é wargames, ou jogo de guerra como preferir, é antigo, mas vale a pena ver.
  3. Eduardo Bittencourt

    IE carente

    kkkkkkkk
  4. Eduardo Bittencourt

    Na matemática, só existe SOMA!

    Faz sentido sim, afinal todo número sem sinal é positivo Só uma obs: Quando você faz 3 * 2 não seria a repetição de 3 duas vezes ? E se fosse 2 * 3 não seria a repetição de 2 três vezes? De qualquer forma, seria a subtração a soma de um numero natural com a soma de um número inteiro negativo, aplicando neste contexto é claro. Afinal todo número natural é subconjunto dos números inteiros positivos.
  5. Eduardo Bittencourt

    Ponteiros em C

    Vlw pelo acréscimo. Ficou muito bom a sua complementação.
  6. Eduardo Bittencourt

    Código em ASM com gcc

    Vlw pela dica, abraços!
  7. Eduardo Bittencourt

    Ponteiros em C

    É normal isso, kkkk. Fui perceber depois, que você estava entendo inteiro como int, o que é normal, por isso não estávamos nos entendendo. Abraços amigo!
  8. Eduardo Bittencourt

    Ponteiros em C

    Acho que na verdade está havendo uma falha de comunicação entre nós. Quando digo inteiro, não quero dizer que o ponteiro tem o tamanho do tipo int, mas sim que o tamanho não é um ponto flutuante, entendeu? Eu sei que em arquiteturas diferentes, tem tamanho distintos. Um ponteiro em arquitetura x86_x64 tem tamanho de um inteiro com modificador de tamanho long long 8 bytes, já em ambientes i386 o ponteiro geralmente tem tamanho de 4 bytes, ambos são inteiros, concorda comigo? Ao utilizar sizeof(*ptr); Está retornando o tamanho do conteúdo para onde o ponteiro está apontando ptr, abraços.
  9. Eduardo Bittencourt

    Ponteiros em C

    É isso que estou dizendo, o endereço de memória de um ponteiro sempre vai ter o tamanho de um inteiro. Mas quando você aponta para outro dado, o endereço do dado vai ter o tamanho do tipo apontado, abraços
  10. Eduardo Bittencourt

    Ponteiros em C

    Creio eu, que um endereço de memória de um ponteiro tem tamanho de um inteiro, no qual o tamanho pode ser variado. Mas não entendi, o que você quis dizer com tamanho de uma palavra, como assim palavra? E a respeito sobre apontar para char, short, int, long, etc, o tamanho pode variar sim, quando você aponta para um char, você estará reservando apenas 1 byte para aquele endereço de memória. Exemplo: char *teste = "array"; printf("%d", sizeof(*teste)); // Tamanho de 1 byte Ah respeito do código em assembly, eu entendi o que você quis dizer, mt obrigado pelo feedback
  11. Eduardo Bittencourt

    Projetos Open Source

    Legal o seu projeto, ficou da hora.
  12. Eduardo Bittencourt

    Código em ASM com gcc

    Bom, resolvi postar essa dica simples, acho que a maioria aqui conheça, porém deve ter um ou dois que não conheça, enfim. Para gerar código em asm através do gcc usamos a seguinte linha de comando Para 64 bits $ gcc -S masm=intel programa.c Caso queira em 32 bits $ gcc -S masm=intel -m32 programa.c A linhas masm=intel, significa, usar o masm com syntax intel. Um ponto interessante é que com esta técnica, você pode ver as seções de memória do código, e muito outras coisas, claro que são coisas simples. Se realmente prefere desassemblar é recomendável usar o objdump, ou gdb, entre outros #include <stdio.h> long x = 5; int main(void) { char *cons = "teste"; return 0; } Compilei em 64 bits e em 32 bits, e teve diferenças no código, repare; Output em 64 bits $cat teste.s .file "teste.c" .intel_syntax noprefix .globl x; ;variável x é global .data .align 8 .type x, @object .size x, 8; ;tamanho de 8 byte x: .quad 5 .section .rodata .LC0: .string "teste" ;essa string é da seção .rodata .text .globl main ;função main é global, oh não diga .type main, @function main: .LFB0: .cfi_startproc push rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 mov rbp, rsp .cfi_def_cfa_register 6 lea rax, .LC0[rip] mov QWORD PTR -8[rbp], rax mov eax, 0 pop rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Debian 6.3.0-18) 6.3.0 20170516" .section .note.GNU-stack,"",@progbits Output em 32 bits $cat teste.s .file "teste.c" .intel_syntax noprefix .globl x ; variável global .data .align 4 .type x, @object .size x, 4 ; tamanho de 4 byte x: .long 5 .section .rodata .LC0: .string "teste" .text .globl main .type main, @function main: .LFB0: .cfi_startproc push ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 mov ebp, esp .cfi_def_cfa_register 5 sub esp, 16 call __x86.get_pc_thunk.ax add eax, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_ lea eax, .LC0@GOTOFF[eax] mov DWORD PTR -4[ebp], eax mov eax, 0 leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size main, .-main .section .text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat .globl __x86.get_pc_thunk.ax .hidden __x86.get_pc_thunk.ax .type __x86.get_pc_thunk.ax, @function __x86.get_pc_thunk.ax: .LFB1: .cfi_startproc mov eax, DWORD PTR [esp] ret .cfi_endproc .LFE1: .ident "GCC: (Debian 6.3.0-18) 6.3.0 20170516" .section .note.GNU-stack,"",@progbits
  13. Eduardo Bittencourt

    Programa em Assembly

    Vlw pela dica, vou fazer isso , abraços
  14. Eduardo Bittencourt

    Programa em Assembly

    Programa simples que fiz em assembly, só faz ler o stdin mesmo, kkkk. Obs: Na label write, era pra eu ter feito uma rotina que usasse como argumento uma string, assim não precisava repetir todo o código da label write na label writex, mas fiz desse jeito mesmo pra não usar a stack ;Author: WallasC0der ; ;montagem ;nasm -f elf32 stdin.asm ;ld -m elf_i386 stdin.o -o stdin section .bss buffer RESB 256 ; reserva 256 bytes size equ $ - buffer ; tamanho do buffer section .data msg db "Digite no stdin", 0ah len equ $ - msg section .text global _start: ;protótipo do write ;ssize_t write(int fd, const void *buf, size_t count); _start: write: mov eax, 4 ; syscall do write mov ebx, 2 ; stdout mov ecx, msg; void *buf mov edx, len; size_t int 0x80 ; executa a syscall ;protótipo do read ;ssize_t read(int fd, void *buf, size_t count); read: mov eax, 3 ; syscall do read mov ebx, 1 ; stdin mov ecx, buffer ; void *buffer mov edx, size ; size_t int 0x80; executa a syscall mov esi, ecx writex: mov eax, 4 mov ebx, 2 mov ecx, esi mov edx, size int 0x80 exit: mov eax, 1 ; syscall do exit int 0x80 ; executa a syscall
  15. Eduardo Bittencourt

    IRC, RaidCall

    MenteBinaria
×