The CryptProtectMemory
API in the DPAPI allows you to pass the CRYPTPROTECTMEMORY_SAME_PROCESS
flag, which prevents other processes from decrypting the memory. One way around this would be to use OpenProcess
, WriteProcessMemory
, and CreateRemoteThread
to inject code into the target process and have it call CryptUnprotectMemory
, thus decrypting the memory and leaking it to the other process.
Assuming both processes are running under the context of the same limited privilege user (i.e. not an administrator) on Windows Vista or later, is this still possible? I was under the impression that process memory write operations were denied to limited users, regardless of the process ACL, but I may be wrong.