[IronPython] Opening a process for mem reads ?
Richard Steventon
steventon at gmail.com
Thu Sep 23 03:16:37 CEST 2010
So, I decided to give it a go. This is the cpython code:
info = GetSecurityInfo(GetCurrentProcess(),6,0)
SetSecurityInfo(process, 6, win32.win32security.DACL_SECURITY_INFORMATION |
win32.win32security.UNPROTECTED_DACL_SECURITY_INFORMATION,
None, None, info.GetSecurityDescriptorDacl(), info.GetSecurityDescriptorGroup())
When I run in IronPython, the following happens:
GetSecurityInfo returns an integer. This means I cannot do
info.GetSecurityDescriptorDacl() etc
If I leave out the last two (optional) parameters to SetSecurityInfo, I get a
return code of 998. Looking this up in winerror.h gives
ERROR_NOACCESS. This is not a rights problem afaik, since I am
running ipy with Admin rights.
Ok, so at this point, I thought "screw it, I'll do it in C#".
So, my C# code is simple for testing:
using System;
namespace UnmanagedCode
{
public class processSecurity
{
public int getValue(int value)
{ return value + 1; }
}
}
I compile it in VS2010 Express as a .NET Framework 4.0. I end up with
a DLL file. I then copy that DLL into a clean directory, and launch
ipy.exe in that directory.
IronPython 2.6 (2.6.10920.0) on .NET 2.0.50727.4952
Type "help", "copyright", "credits" or "license" for more information.
>>> import clr
>>> clr.AddReferenceToFile("UnmanagedCode.dll")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: System.IO.IOException: Could not add reference to assembly
UnmanagedCode.dll
So, I imported sys, and checked the path... the current directory is
in the path. At this point, I cannot figure out wtf is wrong. I have
looked and read and googled etc but the examples all seem to be
outdated and 'just work'... but not when I attempt them!
Some pointers as to how to get this working would be nice !
-Bye
-Richard
On Wed, Sep 22, 2010 at 2:20 PM, Lukas Cenovsky <cenovsky at bakalari.cz> wrote:
> On 22.9.2010 20:03, Jeff Hardy wrote:
>
> On Wed, Sep 22, 2010 at 11:36 AM, Richard Steventon <steventon at gmail.com>
> wrote:
>
> Next question in my quest to open a process and read its memory:
> from win32.win32security import GetSecurityInfo, SetSecurityInfo
>
> How do I get access to those in IronPython ?
>
> Unfortunately, I don't think anyone has ported the win32 module to
> IronPython yet (it's a big, complicated module).
>
> You could use ctypes:
>
> ctypes.windll.advapi32.GetSecurityInfo(...)
>
> GetSecurityInfo has a fairly complicated signature (see
> http://msdn.microsoft.com/en-us/library/aa446654(VS.85).aspx) that
> will probably require working fairly closely with ctypes
> (http://docs.python.org/library/ctypes.html) to get it to work.
>
> Unfortunately, out of the box, that's all the IronPython provides.
>
> - Jeff
>
> P.S. If you need to know the DLL to use with ctypes.windll, look up
> the function on MSDN and look for the DLL name near the bottom of the
> page.
>
> You can use clrtype instead of ctypes to call native functions - see
> (Sample) ClrType.zip.
>
> --
> -- Lukáš
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
More information about the Ironpython-users
mailing list