1

Is it possible to intentionally stress and break part of a computer on a mechanical level using the specificity of C/C++ in targeting addresses? All of this talk of addresses and pointers is not a mere matter of abstract logic, you're actually sending electricity to specific areas of your computer.

In my mind I picture something like this: An specific address being jolted/resonated. It may be a foolish question for a more advanced programmer, but I'm sure I'm not the first newbie to think of this.

8
  • 3
    Keep in mind that you are probably programming a system running in protected mode, so the pointers you see all point to virtual addresses, only the OS knowing the mapping to actual RAM.
    – D. Jurcau
    Dec 28 '16 at 9:13
  • 3
    As your little kid grow older, it will be time to take some online courses in Electrical and Computer Engineering (ECE), and with sufficient knowledge in electricity and transistors your little kid will be able to read and understand the Wikipedia article on Dynamic Random Access Memory. Meanwhile, Wikipedia is also encouraging contributors to write or adapt articles for its Simple English edition. Currently it's just a stub but hopefully someone will improve it.
    – rwong
    Dec 28 '16 at 9:13
  • 1
    In short, DRAM (and also most hardware on the computer) are designed ("engineered") to allow billions of operations per second, 365/24 non-stop operation, for several years without any errors or damage, provided that the working environment (temperature, voltage stability, moisture, etc.) are well maintained. However, a recent thing called Rowhammer reveals a software-exploitable way to cause data corruption in nearby memory addresses. It is not a hardware damage but it can cause software to malfunction.
    – rwong
    Dec 28 '16 at 9:17
  • 5
    row hammer shows that accessing RAM can change the value of adjacent RAM, but it doesn't physically damage the memory. Dec 28 '16 at 9:44
  • 1
    That right there shows that my childish question isn't that foolish! That is a physical effect of a deliberate exploit against ram by address - and while not physically damaging does come close. Its worth putting that as the answer.
    – Pipsqweek
    Dec 28 '16 at 10:22
2

Yes, it is definitely possible on a systems not designed specifically with physical RAM attack in mind. In particular, most old Android devices are vulnerable to an attack that modifies a memory region in an attempt to flip bits in nearby target region, direct access to which is denied by security policies.

http://www.pcworld.com/article/3134515/security/physical-ram-attack-can-root-android-and-possibly-other-devices.html

Usual protection would be to randomize virtual-physical memory mapping.

4
  • Turns out this is a duplicate of @CodesInChaos comment.
    – Basilevs
    Dec 29 '16 at 17:06
  • There's no evidence to support the claim that the rowhammer vulnerability damages the chips. Dec 30 '16 at 3:07
  • @whatsisname when something works incorrectly we define it as a defect or damage. In a sense, row-hammer exploits existing hardware defect using software.
    – Basilevs
    Dec 30 '16 at 3:20
  • not we, just you, you are using your own unique usage of the word damage. Defect and damage are not synonyms. Dec 30 '16 at 3:24
7

Generally speaking no.*

If you try to read or write to memory that doesn't exist, a variety of things may happen depending on your platform.

For a typical desktop computer, your actual physical memory is abstracted behind a virtual memory layer. When your program tries to access a memory location, the OS and virtual memory mapper maps that location to it's true location, which might not even be in actual memory at the time. If you try to access a location outside of what has been allocated to you, the OS will know about it and it will drop the hammer on your process.

If you are using a platform that doesn't have that memory protection, or are writing OS kernel modules, what happens will depend on the platform. Reading non-existent memory locations might return 0, might return random electrical noise, it might yet raise some sort of interrupt, you'll have to read the datasheet to know. Same goes for writing.

For memory, there isn't really much risk of "sending electricity to specific areas of your computer" that isn't intended. When a USB port has nothing plugged into it, the computer doesn't jam 500mA of current out the port regardless. The same goes for memory, electricity can only be sent somewhere if there is something to send it to.

There are some situations where you could cause physical trouble by writing to ram 'using pointers'. Some hardware platforms map peripheral registers or IOs to locations in memory. If you happen to be writing to that memory, you could cause interactions with the real world to cause damage, such as fidgeting with power or temperature controls, turning on or off devices connected to the computer, etc. This mode of accessing stuff is typically with stuff like microcontrollers, where you'll know better than to be reading and writing to random memory locations.

*Much of this is simplified, if you want the raw details, check out https://electronics.stackexchange.com/

1

Under standard warranty-allowed use, no. General purpose computers are designed with fast and frequent memory access in mind, and there are protections within the machine to prevent damage like that from happening.

If you overclock your system it's possible to do damage, but it's more likely to happen to the CPU and GPU than RAM: there's nothing special about pointer use that makes them more "dangerous" physically. To cause physical damage to a solid-state device, you either need heat (which can result from faster cycles) or higher voltage (which people do OC).

I program but I never OC (I have money so I just buy better systems), so that goes beyond my level of expertise. You should ask on https://electronics.stackexchange.com/ as others have already noted.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.