Автор Тема: Неработает вызов VirtualAllocEx через структуру  (Прочитано 4062 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Rivald [?]

  • Новичок
  • *
  • Сообщений: 61
  • Репутация: 1
  • Пол: Мужской
    • Награды
Есть 2 вопроса:
1)Почему вызов со структурой не работает?
2)Почему вызов без структуры выдает ошибку?
Код: AutoIt [Выделить]
$PID = WinGetProcess("")
$open = DllCall("Kernel32.dll", "int", "OpenProcess", "int", 0x001F0FFF, "int", 1, "int", $PID)
$struct = DllStructCreate( _
"HWND hProcess;" & _
"ptr lpAddress;" & _
"ULONG_PTR dwSize;" & _
"DWORD flAllocationType;" & _
"DWORD flProtect;")
DllStructSetData($struct, 'hProcess', $open[0])
DllStructSetData($struct, 'lpAddress', 0)
DllStructSetData($struct, 'dwSize', 10)
DllStructSetData($struct, 'flAllocationType', 0x00001000)
DllStructSetData($struct, 'flProtect', 0x00400000)
$ptr = DllStructGetPtr($struct)
;$call = DllCall("Kernel32.dll", "ptr", "VirtualAllocEx", "ptr", $ptr)
$call = DllCall("Kernel32.dll", "ptr", "VirtualAllocEx", "HWND", $open[0], "ptr", 0, "ULONG_PTR", 10, "DWORD", 0x00001000, "DWORD", 0x00400000)
$error = DllCall("Kernel32.dll", "DWORD", "GetLastError")
MsgBox(0, '', $call[0] & @CRLF & $error[0])

« Последнее редактирование: Июнь 05, 2013, 11:05:13 от Rivald »

Русское сообщество AutoIt

Неработает вызов VirtualAllocEx через структуру
« Отправлен: Июнь 03, 2013, 19:46:05 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2740
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Вопрос по VirtualAllocEx
« Ответ #1, Отправлен: Июнь 03, 2013, 21:27:30 »
Rivald
А это работает?
Код: AutoIt [Выделить]

Оффлайн Rivald [?]

  • Новичок
  • *
  • Сообщений: 61

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
Re: Вопрос по VirtualAllocEx
« Ответ #2, Отправлен: Июнь 04, 2013, 00:47:21 »
Так с первым вопросом я разобрался, последний параметр неправильный указал, надо было 0х40. А вот почему структура не работает - незнаю.

Русское сообщество AutoIt

Re: Вопрос по VirtualAllocEx
« Ответ #2 Отправлен: Июнь 04, 2013, 00:47:21 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2740
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Вопрос по VirtualAllocEx
« Ответ #3, Отправлен: Июнь 04, 2013, 02:26:17 »
Rivald
Сделал тестовый, структура создаётся. Избавился от магических чисел.
Код: AutoIt [Выделить]
#include <Memory.au3>
#include <WinAPI.au3>

Global Const $MEM_PHYSICAL = 0x00400000

$iPid = WinGetProcess("")
$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, 0, $iPid)
$struct = DllStructCreate("HWND hProcess;ptr lpAddress;ULONG_PTR dwSize;DWORD flAllocationType;DWORD flProtect")
DllStructSetData($struct, 'hProcess', $hProcess)
DllStructSetData($struct, 'lpAddress', 0)
DllStructSetData($struct, 'dwSize', 10)
DllStructSetData($struct, 'flAllocationType', $MEM_COMMIT)
DllStructSetData($struct, 'flProtect', $MEM_PHYSICAL)

MsgBox(0, 'Структура ' & VarGetType($struct), _
        DllStructGetData($struct, 'hProcess') & @LF & _
        DllStructGetData($struct, 'lpAddress') & @LF & _
        DllStructGetData($struct, 'dwSize') & @LF & _
        DllStructGetData($struct, 'flAllocationType') & @LF & _
        DllStructGetData($struct, 'flProtect'))

$ptr = DllStructGetPtr($struct)
$call = _MemVirtualAllocEx($hProcess, 0, 10, $MEM_COMMIT, $MEM_PHYSICAL)
$error = _WinAPI_GetLastError()
MsgBox(0, 'Память и Ошибки', $call & @CRLF & $error)

« Последнее редактирование: Июнь 04, 2013, 02:48:24 от AZJIO »

Оффлайн Rivald [?]

  • Новичок
  • *
  • Сообщений: 61

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
Re: Вопрос по VirtualAllocEx
« Ответ #4, Отправлен: Июнь 04, 2013, 17:38:14 »
Код: AutoIt [Выделить]
$error - 87

Структура у меня создавалась без проблем, только было тоже самое что и сейчас.

Русское сообщество AutoIt

Re: Вопрос по VirtualAllocEx
« Ответ #4 Отправлен: Июнь 04, 2013, 17:38:14 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Вопрос по VirtualAllocEx
« Ответ #5, Отправлен: Июнь 04, 2013, 20:34:05 »
Rivald

ПредупреждениеЗа нарушение правил форума (пункт Б.5):
Цитировать
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.

Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Вопрос по VirtualAllocEx" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Вопрос по VirtualAllocEx
« Ответ #6, Отправлен: Июнь 05, 2013, 19:39:24 »
Структура у меня создавалась без проблем, только было тоже самое что и сейчас.

Последний параметр в функции неверный. Поставьте одно из $PAGE_... значений. И причем здесь вообще какая-то структура? Эта функция работает напрямую с параметрами.


Думай, прежде чем говорить.

Оффлайн Rivald [?]

  • Новичок
  • *
  • Сообщений: 61

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
То есть использование структуры просто не предусмотрено у этой функции?

Русское сообщество AutoIt

Re: Неработает вызов VirtualAllocEx через структуру
« Ответ #7 Отправлен: Июнь 08, 2013, 19:03:39 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
То есть использование структуры просто не предусмотрено у этой функции?
А где вы вообще нашли упоминание о структуре. В MSDN все достаточно подробно написано про эту функцию.

Русское сообщество AutoIt

Re: Неработает вызов VirtualAllocEx через структуру
« Ответ #8 Отправлен: Июнь 10, 2013, 17:10:35 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
18 Ответов
7221 Просмотров
Последний ответ Март 21, 2010, 23:30:37
от CreatoR
2 Ответов
3261 Просмотров
Последний ответ Октябрь 19, 2010, 08:36:54
от Houl777
4 Ответов
3048 Просмотров
Последний ответ Август 19, 2011, 14:43:06
от Centrinar
3 Ответов
2872 Просмотров
Последний ответ Сентябрь 13, 2011, 21:26:55
от mrdig
2 Ответов
6276 Просмотров
Последний ответ Октябрь 24, 2011, 23:13:05
от SUN-CHA
0 Ответов
2233 Просмотров
Последний ответ Октябрь 30, 2012, 18:03:14
от Houl777
1 Ответов
1861 Просмотров
Последний ответ Апрель 10, 2013, 13:48:03
от Spyhunter
3 Ответов
1573 Просмотров
Последний ответ Май 14, 2015, 12:33:50
от firex
2 Ответов
1105 Просмотров
Последний ответ Июнь 28, 2015, 06:40:45
от Zalman1980
6 Ответов
1489 Просмотров
Последний ответ Сентябрь 09, 2016, 07:23:57
от badhabit