pykd

Форк
0
/
virtalloc.py 
57 строк · 1.2 Кб
1

2

3
import pykd
4

5

6
win_src = '''
7

8
typedef void*  LPVOID;
9
typedef size_t  SIZE_T;
10
typedef unsigned long  DWORD;
11
typedef bool  BOOL;
12

13
LPVOID
14
__stdcall
15
VirtualAlloc(
16
    LPVOID lpAddress,
17
    SIZE_T dwSize,
18
    DWORD flAllocationType,
19
    DWORD flProtect
20
    );
21
    
22
BOOL 
23
__stdcall
24
VirtualFree(
25
    LPVOID lpAddress,
26
    SIZE_T dwSize,
27
    DWORD dwFreeType
28
);    
29

30

31
DWORD 
32
__stdcall
33
GetLastError(void);l
34
    
35
'''
36

37
MEM_COMMIT = 0x1000
38
MEM_RELEASE = 0x8000
39
PAGE_READWRITE = 0x4
40

41
winTypeProvider = pykd.getTypeInfoProviderFromSource(win_src, "-w")
42

43
kernel = pykd.module('KERNELBASE')
44

45
VirtualAlloc = pykd.typedVar(winTypeProvider.getTypeByName('VirtualAlloc'), kernel.VirtualAlloc )
46
VirtualFree = pykd.typedVar(winTypeProvider.getTypeByName('VirtualFree'), kernel.VirtualFree )
47
GetLastError = pykd.typedVar(winTypeProvider.getTypeByName('GetLastError'), kernel.GetLastError )
48

49
addr = VirtualAlloc(0, 0x1000, MEM_COMMIT, PAGE_READWRITE)
50

51
if addr:
52
    print("Allocated memory: %x" % addr )
53

54
    if VirtualFree(addr, 0, MEM_RELEASE):
55
        print("Successfully free memory")
56
    else:
57
        print("Failed VirtualFree with error %x" % GetLastError() )
58
else:
59
    print("Failed VirtualAlloc with error %x" % GetLastError() )
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.