News for hackers. Stuff that matters.
Re:ICPP – Running C++ in anywhere like a script by fluoridation on Thursday August 08, 2024 @12:05PM (#41193008)
But you can still call VirtualAlloc(), VirtualProtect(), and LoadLibrary(), so this isn't really a security mechanism, but more of a safety mechanism.

I don't think Windows provides a mechanism to disable creating any further executable pages, although I've seen Chrome do it by hooking those functions (and I know it because I've had to bypass it :)).

Re:ICPP – Running C++ in anywhere like a script by pjmlp on Thursday August 08, 2024 @12:52PM (#41193610)
App Sandboxing and VBS enclaves go onto that direction.
Re:ICPP – Running C++ in anywhere like a script by shortrounddev2 on Thursday August 08, 2024 @01:12PM (#41193856)
I wouldn't expect windows to prevent creating further executable pages; there are legitimate use cases for creating dynamically allocated executable memory. It just means that whatever foreign data you load into those pages can't execute, which is a security mechanism (for example, game save data can be loaded into these heaps so that you can load all game state but without the save file potentially running foreign code)
Re:ICPP – Running C++ in anywhere like a script by fluoridation on Thursday August 08, 2024 @02:00PM (#41194407)
There are legitimate uses, but the point would be that the process could ask the system to lock it down with whatever executable code is already present. This could be used to prevent already running code from tampering with the process' behavior by loading new code, or to thwart code injection.

>It just means that whatever foreign data you load into those pages can't execute, which is a security mechanism (for example, game save data can be loaded into these heaps so that you can load all game state but without the save file potentially running foreign code)

But malloc() and all the other standard memory allocation functions already return pointers into non-executable pages, anyway. Perhaps those functions call into this one internally, but using this over whatever your language offers by default offers no additional protection.

Re:ICPP – Running C++ in anywhere like a script by shortrounddev2 on Friday August 09, 2024 @09:08AM (#41201476)
The benefit of heapalloc and heapcreate is that it makes serialization of data simpler because you can define the bounds of the heap so you can easily save pointer offsets. There are other flags available as well. It's a win32 feature so you would only use it if windows is your target platform (and then write other bindings for other platforms)
Re:ICPP – Running C++ in anywhere like a script by fluoridation on Friday August 09, 2024 @09:40AM (#41201726)
I still don't get it. Why can't you do the same with a regular buffer?