Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Process memory, significant addresses

Process memory, significant addresses

Scheduled Pinned Locked Moved C#
architectureperformancetutorialquestionlearning
5 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jitse
    wrote on last edited by
    #1

    Hi ho :) I've been experimenting with reading memory of other processes for a while now. And I've noticed the virtual addresses are quite weird. First of all I can't access anything from 0x0 till 0xFFFF. This seems to be a forbidden area or so. :p I've never found a process that didn't have this 'offset'. The first readable address socket is 0x10000. I first thought this previous forbidden area (lower than 0x10000) was a Windows header or so, but it seems this 0x10000 and further is the windows header, including some data like the windir, cpu architecture, and so on. Now you'd think the actual data of the process itself is just after this Windows header, but that's often not the case. Suddenly there's another piece of memory that's not accessible there. That keeps on going for a while. Now I searched up some interesting addresses for certain processes (like the Minesweeper of Windows XP), and I can for example find the width and height of a minefield. But when you look at the actual address of this data, it's extremely high (relatively of course): 0x1005334. This is a hundred times higher than the first memory address that's accessible (0x10000). I've researched a bit, but I can't find information about a certain structure Windows uses for process memory. Maybe there's a fixed virtual address where it actually starts to be interesting to read memory, because that's the actual memory allocated by the process itself? Thanks in advance. :)

    L 1 Reply Last reply
    0
    • J Jitse

      Hi ho :) I've been experimenting with reading memory of other processes for a while now. And I've noticed the virtual addresses are quite weird. First of all I can't access anything from 0x0 till 0xFFFF. This seems to be a forbidden area or so. :p I've never found a process that didn't have this 'offset'. The first readable address socket is 0x10000. I first thought this previous forbidden area (lower than 0x10000) was a Windows header or so, but it seems this 0x10000 and further is the windows header, including some data like the windir, cpu architecture, and so on. Now you'd think the actual data of the process itself is just after this Windows header, but that's often not the case. Suddenly there's another piece of memory that's not accessible there. That keeps on going for a while. Now I searched up some interesting addresses for certain processes (like the Minesweeper of Windows XP), and I can for example find the width and height of a minefield. But when you look at the actual address of this data, it's extremely high (relatively of course): 0x1005334. This is a hundred times higher than the first memory address that's accessible (0x10000). I've researched a bit, but I can't find information about a certain structure Windows uses for process memory. Maybe there's a fixed virtual address where it actually starts to be interesting to read memory, because that's the actual memory allocated by the process itself? Thanks in advance. :)

      L Offline
      L Offline
      Luc Pattyn
      wrote on last edited by
      #2

      Hi, virtual addresses get assigned by the linker, based on some defaults and a lot of optional choices you can specify. It gets reported in the optional map file. As a result the address map can be structured in many ways, all equaly valid. Not sure how this is a C# question, Minesweeper is a lot older than any .NET stuff. :)

      Luc Pattyn [Forum Guidelines] [My Articles]


      This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


      J 1 Reply Last reply
      0
      • L Luc Pattyn

        Hi, virtual addresses get assigned by the linker, based on some defaults and a lot of optional choices you can specify. It gets reported in the optional map file. As a result the address map can be structured in many ways, all equaly valid. Not sure how this is a C# question, Minesweeper is a lot older than any .NET stuff. :)

        Luc Pattyn [Forum Guidelines] [My Articles]


        This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


        J Offline
        J Offline
        Jitse
        wrote on last edited by
        #3

        I'm not talking about Minesweeper, I'm talking about any existing process that runs on Windows. :p I'd really like to find some pattern that can be used to find significant memory data more easily. My final purpose is to make addons for applications that actually don't support addons. :D

        L 1 Reply Last reply
        0
        • J Jitse

          I'm not talking about Minesweeper, I'm talking about any existing process that runs on Windows. :p I'd really like to find some pattern that can be used to find significant memory data more easily. My final purpose is to make addons for applications that actually don't support addons. :D

          L Offline
          L Offline
          Luc Pattyn
          wrote on last edited by
          #4

          Good luck then. I just told you things can be anywhere, it is a matter of choice. Will your add-ons be programmed in C#? and apply to native code programs??? :)

          Luc Pattyn [Forum Guidelines] [My Articles]


          This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


          J 1 Reply Last reply
          0
          • L Luc Pattyn

            Good luck then. I just told you things can be anywhere, it is a matter of choice. Will your add-ons be programmed in C#? and apply to native code programs??? :)

            Luc Pattyn [Forum Guidelines] [My Articles]


            This month's tips: - before you ask a question here, search CodeProject, then Google; - the quality and detail of your question reflects on the effectiveness of the help you are likely to get; - use PRE tags to preserve formatting when showing multi-line code snippets.


            J Offline
            J Offline
            Jitse
            wrote on last edited by
            #5

            Thanks, hehehe. I'll just try to make a monitoring program first then, that logs what changes in memory. Then I can see what action changes which addresses. Yes I will be making addons programmed in C#, applied to native code programs (as far as I know).

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • World
            • Users
            • Groups