GoConqr hat ein neues Design! Sag uns, wie es dir gefällt.

Mindmap

Memória

Isaque Paulo Portugiesisch

Memória

Inhalt der Mindmap

Memória

  1. Ponteiros

    • É uma variável que armazena um endereço de memória
      • Em um navegador o ponteiro seria o link que nos leva a um site
      • Através desses endereços podemos manipular os seus valores
  2. Para que serve?

    • Para armazenar informações que serão utilizadas por um software
  3. Hierarquia

    • Como funciona
      • O programa está armazenado no disco rígido Ao executarmos o SO cria um processo deste programa E ele é carregado na memória RAM E é lá que os conceitos de ponteiros e endereços de memórias são observados É na RAM que os conceitos de cheat se aplicam
  4. Memória RAM

    • Estrutura
      • A estrutura da memória remete a um trem com vários vagões
      • Número de endereços da memória
        • 1 Bytes = 8 Bits
          • Até(2^8) 0xFF
          • De(0): 0x00
        • 4 Bytes = 32 Bits
          • De(0): 0x00000000
          • Até(2^32): 0xFFFFFFFF
      • Formato de endereços
      • Endereços
        • Se você quiser acessar o vagão 0x00040E3C, somente o byte ou 2 bits referente a este endereço será acessado 
        • 1 endereço = 1 Byte = 8 Bits
    • Alocação de Memória
      • Memória não alocada
        • É a região entre dois endereços que contém nenhuma informação
      • Métodos de alocação de memória
        • https://docs.microsoft.com/en-us/windows/win32/memory/comparing-memory-allocation-methods
        • VirtualAlloc
          • https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc
          • Usada no cheat
        • HeapAlloc
          • https://docs.microsoft.com/en-us/windows/win32/api/heapapi/nf-heapapi-heapalloc
        • LocalAlloc
          • https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-localalloc
        • GlobalAlloc
          • https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc
      • Allocation Protect
        • Proteção da região da memória quando ela foi alocada.
        • PAGE_NOACCESS (0x01)
          • Desabilita todo o acesso da página de memória. Qualquer tentativa de ler, escrever ou executar resulta em violação de acesso (access violation).
        • PAGE_READONLY (0x02)
          • Habilita permissão de leitura da página de memória.
        • PAGE_READWRITE (0x04)
          • Habilita permissão de leitura e escrita da página de memória.
        • PAGE_WRITECOPY (0x08)
          • Habilita permissão de leitura e cópia-em-execução para a mapped-view um objeto de mapeamento de arquivo (file mapping object).VirtualAlloc e VirtualAllocEx não suportam essa constante.
        • PAGE_EXECUTE (0x10)
          • Habilita permissão de execução (dos opcodes) na página de memória.
        • PAGE_EXECUTE_READ (0x20)
          • Habilita permissão de execução e leitura da página de memória.
        • PAGE_EXECUTE_READWRITE (0x40)
          • Habilita permissão de execução, leitura e escrita da página de memória.
        • PAGE_EXECUTE_WRITECOPY (0x80)
          • Habilita permissão de execução, leitura e cópia-em-execução para a mapped view um objeto de mapeamento de arquivo (file mapping object).VirtualAlloc e VirtualAllocEx não suportam essa constante.
      • State
        • Estado da página de memória.
        • MEM_COMMIT (0x1000)
          • Indica página confirmada para a qual armazenamento físico foi alocado, seja na memória ou arquivo de paginação.
        • MEM_RESERVE (0x2000)
          • Indica página livre, não acessíveis no processo e disponível para alocação.
        • MEM_FREE (0x10000)
          • Indica página reservada onde uma extensão do espaço de endereços virtuais (Virtual Address) do processo é reservada, sem que nenhuma alocação física seja feita.
      • Type
        • Tipo da página de memória.
        • MEM_PRIVATE (0x20000)
          • Indica que a região de memória é privada, i.e., não compartilhada por outros processos.
        • MEM_MAPPED (0x40000)
          • Indica que a região de memória é mapeada na exibição de uma seção.
        • MEM_IMAGE (0x1000000)
          • Indica que a região de memória é mapeada na exibição de uma seção de imagem.
      • Size
        • Tamanho em bytes da página de memória.
      • OllyDbg
        • Exemplo prático
          • Ao executar mem1.exe
            • Temos que o valor 10346309 está no endereço 00451BD4
              • Como sabemos que este dado é do tipo INTEGER 4 bytes, estará alocado nos endereços de memória
                • 00451BD4
                • 00451BD5
                • 00451BD6
                • 00451BD7
                • Ao abrirmos o processo pelo OllyDbg vemos
                  • 00451BD4
                    • 45
                  • 00451BD5
                    • DF
                  • 00451BD6
                    • 9D
                  • 00451BD7
                    • 00
                  • Como sabemos o valor está invertido, portanto o valor correto em hexadecimal será 00 9D DF 45
        • Obs1
          • minhastring := 'Isaque'; esse endereço de memória terá 6 bytes pois há 6 caracteres Se eu fizer addr(minhastring) irá retornar apenas 1 endereço de memória, mas sabemos que serão 6, pois essa string ocupa 6 bytes. Além disso cabe ressaltar que as letras na memória estarão ordenadas em ordem crescente dos endereços de memória pois se trata de uma string E no sétimo endereço terá 00, para indicar tratar-se do encerramento da string
    • Tipos de Dados
      • https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types
      • DWORD
        • Se quiser acessar acessar DWORD em 0x00040E3C Serão acessados os seguintes endereços: 0x00040E3C 0x00040E3D 0x00040E3E0x00040E3F
        • Possui 4 Bytes = 32 Bits
        • Nesse exemplo o ponteiro da DWORD será o 0x00040E3C
          • E os 4 endereços farão parte da DWORD
        • Perceba que o valor armazenado em 0x00040E3C é 0xFFFEF7E8
          • Mas a DWORD é armazenada em ordem inversa: 0xE8 -> 0xF7 -> 0xFE -> 0xFF
      • Strings
        • São armazenados em ordem normal
        • Tabela ASCII e Hexadecimal
          • 84 = 0x54 = T 79 = 0x4F = O 67 = 0x43 = C Ex Javascript String.fromCharCode(0x43)
        • Cada caractere = 1 byte
          • TOC = 3 caracteres = 3 Bytes
          • Todo final tem 0x00
      • Integer
        • 4 bytes
      • Short
        • 2 Bytes

Bilder und Dateien der Mindmap

  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória
  • Memória

Informationen

Beschreibung
Mindmap am Memória, erstellt von Isaque Paulo am 06/12/2021.
Erstellt von
Isaque Paulo
Aufrufe
0
Bewertung

Feedback

Worum geht es?

Wie gefällt dir das neue Design?

Dein Eindruck