1 (изменено: svoboden, 2021-07-03 07:06:56)

Тема: AHK: Передать структуру

Здравствуйте! Пишу свой инжектор на ahk. Т.е. для этого нужно отправить структуру в dll файл. На C++ получилось заинжектить, также все работает в Autoit. Переношу на ahk, и не инжектит. Dll'ки и примеры инжекта в исходниках ниже.

global File := "test_.dll"

hModule := DllCall("LoadLibrary", "Str", "gh_injector.dll")
funcA := DllCall("GetProcAddress","Ptr", hModule, "Astr","InjectA")
msgbox % funcA

StructLen := 12 + StrLen(File) + 1
VarSetCapacity(ParamStruct, StructLen, 0)

INJ_ERASE_HEADER := 0x0001
INJ_SHIFT_MODULE := 0x0008
INJ_UNLINK_FROM_PEB := 0x0004

uFlags := INJ_ERASE_HEADER | INJ_SHIFT_MODULE | INJ_UNLINK_FROM_PEB

NumPut(2, ParamStruct, 0, "Uint") ; 2 - метод инжекта ManualMap
NumPut(0, ParamStruct, 4, "Uint") ; 0 - NtCreateThreadEx
NumPut(uFlags, ParamStruct, 8, "UInt") ; на ++ инжектится без флагов
NumPut(6304, ParamStruct, 12, "Uint") ; id куда инжектить


StrPut(File, &ParamStruct+4)
msgbox % StrGet(&ParamStruct+4, "cp0")

Ptr := A_PtrSize ? "Ptr" : "UInt"
DllCall(funcA, Ptr, &ParamStruct)

StrPutt(Str, @) {
Return DllCall("RtlMoveMemory", UInt,@, UInt,&Str, UInt,StrLen(Str))
}

StrGett(@) {
Return DllCall("MulDiv", int,@, int,1, int,1, "Str")
}

P.S. Для теста можно использовать файл test.exe, который находится в исходниках. Подскажите, как нужно изменить код, чтобы заинжектилось. Спасибо!

2 (изменено: teadrinker, 2021-01-17 02:20:38)

Re: AHK: Передать структуру

Какой битности AHK используете?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Передать структуру

Ansi 32 bit.

4

Re: AHK: Передать структуру

Тогда убедитесь для начала, что LoadLibrary что-то возвращает:

MsgBox % hModule := DllCall("LoadLibrary", "Str", "gh_injector.dll")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Malcev, 2021-01-17 11:53:25)

Re: AHK: Передать структуру

Если кто хочет поиграться залил dll-ки с оф. ресурса сюда:
https://fex.net/s/kcfoame
Оф. ресурс требует регистрации:
https://guidedhacking.com/resources/gui … njector.4/

6 (изменено: svoboden, 2021-01-25 04:39:23)

Re: AHK: Передать структуру

убедитесь для начала, что LoadLibrary что-то возвращает:

teadrinker, все возвращает, у меня dll'ка создает txt файл ошибок. Вот тут еще вопрос задал: https://www.autohotkey.com/boards/viewt … mp;t=85732.

7

Re: AHK: Передать структуру

И что, то, что там ответили, не решает проблему?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: svoboden, 2021-01-25 06:29:01)

Re: AHK: Передать структуру

Попробую сам заинжектить. Пример инжекта очень понятный.

9 (изменено: svoboden, 2021-03-15 08:24:48)

Re: AHK: Передать структуру

Все, заинжектил.

10

Re: AHK: Передать структуру

А для чего это используют в ahk?

GD

11

Re: AHK: Передать структуру

svoboden пишет:

Попробую сам заинжектить

svoboden пишет:

Все, заинжектил, спасибо!

Сомневаюсь немного, судя по предыдущему коду.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12 (изменено: svoboden, 2021-01-19 03:45:15)

Re: AHK: Передать структуру

teadrinker пишет:

судя по предыдущему коду

Если вы про StrPut(File, &ParamStruct + 4, "CP0"), то я сам понял, что эта строчка правильная, т.к. она вернула правильное имя файла в файл ошибок. Но я бы никогда не додумался, что бывают такие смещения 524, 528 и т.д.

13

Re: AHK: Передать структуру

svoboden Это как sql injection ? Т.е. типо приложение использует свой dll, а мы можем внедриться в этот dll и что-то туда дописать своё ?

GD

14

Re: AHK: Передать структуру

svoboden
Ну так и написали бы рабочий код.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15 (изменено: svoboden, 2021-01-22 06:16:42)

Re: AHK: Передать структуру

Но вообще-то это я хотел, чтобы мне написали рабочий код .

File := "test_.dll"

hModule := DllCall("LoadLibrary", "Str", "gh_injector.dll")
funcA := DllCall("GetProcAddress","Ptr", hModule, "Astr","InjectA")
;msgbox % funcA

VarSetCapacity(ParamStruct, 540, 0)


NumPut(2, ParamStruct, 528, "Uint") ; 2 - метод инжекта ManualMap
NumPut(0, ParamStruct, 532, "Uint") ; 0 - NtCreateThreadEx
NumPut(6612, ParamStruct, 524, "Uint") ; id куда инжектить

StrPut(File, &ParamStruct + 4, "CP0")

Ptr := A_PtrSize ? "Ptr" : "UInt" ; If A_PtrSize is not defined, use UInt instead.
DllCall(funcA, Ptr, &ParamStruct)

16

Re: AHK: Передать структуру

Структура правильно заполнена, но этого не достаточно для инжекта. Во всяком случае на десятке.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17 (изменено: svoboden, 2021-01-25 04:40:42)

Re: AHK: Передать структуру

Т.е. не инжектит или как?

18

Re: AHK: Передать структуру

Так полный-то код напишите для test.exe и test_.dll, и будет понятно, инжектит или нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19 (изменено: svoboden, 2021-01-17 19:45:41)

Re: AHK: Передать структуру

Хорошо. Я просто id (pid) программы вручную ввожу, а нужно, чтобы автоматически.

20

Re: AHK: Передать структуру

На десятке так не работает, ещё нужно повышение привилегий, то что на AutoIt

SetPrivilege($SE_DEBUG_NAME, True)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

21 (изменено: svoboden, 2021-05-19 14:15:21)

Re: AHK: Передать структуру

Вот полный код для ahk 32 bit без привелигий пока еще:

File := "test_.dll"
WinGet, id, PID, ahk_exe test.exe

hModule := DllCall("LoadLibrary", "Str", "gh_injector.dll")
funcA := DllCall("GetProcAddress","Ptr", hModule, "Astr","InjectA")
;msgbox % funcA

VarSetCapacity(ParamStruct, 540, 0)
DllCall("ZeroMemory", "Ptr", &ParamStruct, "UInt", 540)

NumPut(2, ParamStruct, 528, "Uint") ; 2 - метод инжекта ManualMap
NumPut(0, ParamStruct, 532, "Uint") ; 0 - NtCreateThreadEx
NumPut(id, ParamStruct, 524, "Uint")

StrPut(File, &ParamStruct + 4, "CP0")

Ptr := A_PtrSize ? "Ptr" : "UInt" ; If A_PtrSize is not defined, use UInt instead.
DllCall(funcA, Ptr, &ParamStruct)
Post's attachments

test.rar 33.05 kb, 2 downloads since 2021-01-19 

You don't have the permssions to download the attachments of this post.

22

Re: AHK: Передать структуру

svoboden пишет:
Ptr := A_PtrSize ? "Ptr" : "UInt"

А это-то зачем ни с того, ни с сего? Если хотите, чтобы AHK-basic поддерживалось, это тогда нужно было в самом начале кода писать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23 (изменено: svoboden, 2021-01-18 20:26:59)

Re: AHK: Передать структуру

teadrinker пишет:

А это-то зачем

Я просто не знаю, что нужно отправлять "Ptr" или "Uint" в данном случае. Из справки вычитал такую конструкцию.

24

Re: AHK: Передать структуру

Мало вычитать, надо ещё понять. В каком случае она выдаст "UInt"?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25 (изменено: svoboden, 2021-01-25 06:31:13)

Re: AHK: Передать структуру

Так много чего читать (понимать) нужно тогда, а скрипт хочется, чтобы работал сразу. В каком-нибудь выдаст , а не будет работать - поменяю на "Ptr".

26

Re: AHK: Передать структуру

svoboden пишет:

Ну в каком-нибудь выдаст

Оригинальный подход, удачи в программировании!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27 (изменено: svoboden, 2021-01-19 03:48:24)

Re: AHK: Передать структуру

teadrinker пишет:

Оригинальный подход, удачи в программировании!

Спасибо. Я уже написал по идее свою программу (не инжектор), пока подход не подвел меня . Всем рекомендую такой подход.

28

Re: AHK: Передать структуру

У нас преподаватель в универе говорил так: работает - не трогай).
https://s10.pikabu.ru/post_img/2020/05/08/5/1588920055139621389.jpg

GD

29

Re: AHK: Передать структуру

svoboden пишет:

написал по идее свою программу

Да, можно представить!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

30

Re: AHK: Передать структуру

teadrinker пишет:

Да, можно представить!

Здесь на форуме, я хотел написать инжектор (форум же на ahk), а так свою программу я на С++ написал, популярная программа однако вышла .

31

Re: AHK: Передать структуру

svoboden пишет:

Я просто не знаю, что нужно отправлять "Ptr" или "Uint" в данном случае. Из справки вычитал такую конструкцию.

Там же написано, что "ptr" ввели с [v1.0.90+].
https://www.autohotkey.com/docs/commands/DllCall.htm

32

Re: AHK: Передать структуру

Malcev пишет:

Там же написано, что "ptr" ввели

Cпасибо, просто судя по исходникам:

 typedef DWORD(__stdcall* fnInject)(INJECTIONDATA*);

длл вроде как "Uint" вызывается.

33

Re: AHK: Передать структуру

Вы передаете из автохотки адрес структуры.
А на автохотки он ptr.

34 (изменено: svoboden, 2021-01-18 23:48:56)

Re: AHK: Передать структуру

Malcev пишет:

А на автохотки он ptr

Хорошо.

35

Re: AHK: Передать структуру

svoboden пишет:

судя по исходникам:

 typedef DWORD(__stdcall* fnInject)(INJECTIONDATA*);

длл вроде как "Uint" вызывается.

Хех, ну не знаю, как там ваша программа, но c++ вы тоже явно плохо знаете. DWORD здесь — это то, что функция возвращает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

36 (изменено: svoboden, 2021-01-19 16:29:25)

Re: AHK: Передать структуру

Не спорю, может и возвращает, а как узнать, что передает?

37

Re: AHK: Передать структуру

INJECTIONDATA*
Звёздочка означает передачу по указателю (пойнтеру), или по адресу (что то же самое). Указатели в AHK это Ptr. В 32-битных процессах он равен Int — 4 байта, а в 64-битных он 8 байт. Поэтому чтобы работало в любом случае для указателей используют Ptr.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

38 (изменено: svoboden, 2021-01-19 16:29:07)

Re: AHK: Передать структуру

А в каких случаях используется "Uint"?

39

Re: AHK: Передать структуру

Обычно в c++ так и пишется UInt, например GetAncestor.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

40 (изменено: svoboden, 2021-01-19 01:20:44)

Re: AHK: Передать структуру

Ок, спасибо. Буду разбираться, вопросов пока нет .

teadrinker пишет:

не знаю, как там ваша программа, но С++...

Программа для игры, если интересно.

41

Re: AHK: Передать структуру

Не, не смогу оценить, играми не увлекаюсь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

42

Re: AHK: Передать структуру

svoboden

Хоть что делает ваша программа?

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

43 (изменено: svoboden, 2021-01-19 16:40:03)

Re: AHK: Передать структуру

__Михаил__ пишет:

что делает ваша программа?

Я же писал, это инжектор (он много где используется, и очень часто для игр). Все остальные программы, вроде как не относятся к моему вопросу.

44 (изменено: svoboden, 2021-01-23 06:19:22)

Re: AHK: Передать структуру

Здравствуйте. А есть какой-нибудь "нормальный" способ вычисления смещений, кроме "structor", он у меня выдает даже отрицательные смещения, если вместо CHAR написать WCHAR, например (такое вообще возможно?) пример:

typedef struct _WIN32_FIND_DATAA {
  DWORD    dwFileAttributes;
  CHAR    cFileName[MAX_PATH];
  CHAR     cAlternateFileName[14];
  DWORD    nFileSizeHigh;
  DWORD    nFileSizeLow;
  DWORD    dwReserved0;
  DWORD    dwReserved1;
} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;

Также, судя по всему, CHAR cFileName[MAX_PATH] равняется 260 байт, а почему тогда "structor" не прибавляет значения смещений:
• 0
• 44
• 304
• 28
• 32
• 36
• 40

45

Re: AHK: Передать структуру

HotKeyIt использует _Struct.ahk, но по-моему проще вручную посчитать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

46 (изменено: svoboden, 2021-03-02 03:22:39)

Re: AHK: Передать структуру

А где можно почитать документацию, какие бывают смещения (по размеру и т.д.).

47

Re: AHK: Передать структуру

Здесь на форуме YMP об этом несколько раз рассказывал, ищите по слову "выравнивание".

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

48

Re: AHK: Передать структуру

Спасибо, почитаю.

49 (изменено: svoboden, 2021-07-03 07:10:34)

Re: AHK: Передать структуру

Удалось еще запустить юникод версию:

File := "test_.dll"

WinGet, id, PID, ahk_exe test.exe

hModule := DllCall("LoadLibrary", "Str", "gh_injector.dll")
InjectW := DllCall("GetProcAddress", "Ptr", hModule, "Astr", "InjectW")
;msgbox % InjectW

VarSetCapacity(ParamStruct, 540 * 2, 0)
DllCall("ZeroMemory", "Ptr", &ParamStruct, "UInt", 540 * 2)

NumPut(id, ParamStruct, 524 * 2, "Uint")
StrPut(File, &ParamStruct + 4, "UTF-16")
DllCall(InjectW, "Ptr", &ParamStruct)
struct INJECTIONDATA
{
    DWORD            LastErrorCode;
    wchar_t            szDllPath[MAX_PATH * 2];
    wchar_t*          szTargetProcessExeFileName;
    DWORD            ProcessID;
    INJECTION_MODE    Mode;
    LAUNCH_METHOD    Method;
    DWORD            Flags;
    DWORD            hHandleValue;
    HINSTANCE       hDllOut;
};

Вопрос:
1) почему id находится на том же самом смещении, что и в анси версии?
2) какое смещение имеет szTargetProcessExeFileName? Я так понял, что * это ptr. Тогда как нужно правильно отправить эту стрктуру, в данном случае 0, если эта вроде строка целевого файла. Спасибо.

50

Re: AHK: Передать структуру

svoboden пишет:

1) почему id находится на том же самом смещении, что и в анси версии?

А в анси на каком находилось?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

51 (изменено: svoboden, 2021-07-03 08:08:10)

Re: AHK: Передать структуру

На третьем в юникод на четвертом.


typedef struct INJECTIONDATA
{
	DWORD			LastErrorCode;
	char			szDllPath[MAX_PATH * 2];
	DWORD			ProcessID;
	DWORD          	Mode;
	DWORD	        Method;
	DWORD			Flags;
	//DWORD			hHandleValue;
	//HINSTANCE		hDllOut;
};

52

Re: AHK: Передать структуру

Почему тогда на том же?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

53 (изменено: svoboden, 2021-07-03 08:18:47)

Re: AHK: Передать структуру

Так вроде структуры отличаются, смещения строки одинаковые, а дальше где должно быть id идет

wchar_t* szTargetProcessExeFileName;

Оно не учитывается получается.

54

Re: AHK: Передать структуру

svoboden пишет:

смещения строки одинаковые

Так я и спрашивал, какое было смещение на ANSI версии?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

55 (изменено: svoboden, 2021-07-03 08:20:39)

Re: AHK: Передать структуру

NumPut(id, ParamStruct, 524, "Uint")

56

Re: AHK: Передать структуру

А сейчас?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

57

Re: AHK: Передать структуру

Тоже самое, только для юникод версии:

NumPut(id, ParamStruct, 524 * 2, "Uint")

58

Re: AHK: Передать структуру

Не пойму, почему 524 * 2 и 524 это то же самое.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

59

Re: AHK: Передать структуру

Если у вас такой вопрос возникает, значит до сих пор не поняли, как его считать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

60

Re: AHK: Передать структуру

Т.е. такое же смещение, только умноженное на 2, как будто нет структуры:

wchar_t* szTargetProcessExeFileName;

вовсе.

61

Re: AHK: Передать структуру

Давайте считать, сначала в ANSI версии. Как 524 получается?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

62 (изменено: svoboden, 2021-07-03 08:34:23)

Re: AHK: Передать структуру

После строки передается 520 потом плюс 4.

63

Re: AHK: Передать структуру

Не очень понял. Давайте по порядку, указанному в описании структуры для ANSI:

typedef struct INJECTIONDATA
{
	DWORD			LastErrorCode;
	char			szDllPath[MAX_PATH * 2];
	DWORD			ProcessID;
	DWORD          	Mode;
	DWORD	        Method;
	DWORD			Flags;
	//DWORD			hHandleValue;
	//HINSTANCE		hDllOut;
};
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

64

Re: AHK: Передать структуру

Сначала идёт

DWORD			LastErrorCode;

Это сколько?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

65

Re: AHK: Передать структуру

teadrinker пишет:

DWORD LastErrorCode;

Это 0.

66

Re: AHK: Передать структуру

Я имею в виду, сколько байтов занимает это поле.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

67 (изменено: svoboden, 2021-07-03 08:48:22)

Re: AHK: Передать структуру

0, наверное.

68

Re: AHK: Передать структуру

Почему 0? В смысле, нисколько?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

69 (изменено: svoboden, 2021-07-03 08:49:13)

Re: AHK: Передать структуру

Вроде 4.

70

Re: AHK: Передать структуру

Нужно точно знать. Можно здесь посмотреть.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

71 (изменено: svoboden, 2021-07-03 09:04:21)

Re: AHK: Передать структуру

Ну да 4.

72

Re: AHK: Передать структуру

Тогда какое смещение у следующего поля?

char			szDllPath[MAX_PATH * 2];
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

73 (изменено: svoboden, 2021-07-03 09:32:27)

Re: AHK: Передать структуру

4.

74

Re: AHK: Передать структуру

Правильно. А сколько байтов оно занимает? И как это посчитать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

75 (изменено: svoboden, 2021-07-03 09:11:04)

Re: AHK: Передать структуру

4 байта, в справке написано:
Most members -- such as DWORD, Int, and other types of 32-bit integers -- are 4 bytes in size.

76

Re: AHK: Передать структуру

С этим уже разобрались, я про следующее спрашивал:

char			szDllPath[MAX_PATH * 2];
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

77 (изменено: svoboden, 2021-07-03 09:14:20)

Re: AHK: Передать структуру

Вот я здесь смотрю: https://www.autohotkey.com/boards/viewtopic.php?t=30497. MAX_PATH = 260.

78

Re: AHK: Передать структуру

Напрасно, смотрите по моей предыдущей ссылке.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

79

Re: AHK: Передать структуру

Или там же в шапке есть ещё одна.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

80 (изменено: svoboden, 2021-07-03 09:22:46)

Re: AHK: Передать структуру

Посмотрел, 260 * 2. Char 1 байт.

81

Re: AHK: Передать структуру

Тогда какое смещение у следующего поля?

DWORD			ProcessID;
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

82 (изменено: svoboden, 2021-07-03 09:25:48)

Re: AHK: Передать структуру

524 - это я понял.

83

Re: AHK: Передать структуру

Верно, теперь переходим к юникодной структуре:

struct INJECTIONDATA
{
    DWORD            LastErrorCode;
    wchar_t            szDllPath[MAX_PATH * 2];
    wchar_t*          szTargetProcessExeFileName;
    DWORD            ProcessID;
    INJECTION_MODE    Mode;
    LAUNCH_METHOD    Method;
    DWORD            Flags;
    DWORD            hHandleValue;
    HINSTANCE       hDllOut;
};

Сможете теперь посчитать смещение поля

DWORD            ProcessID;

учитывая, что здесь не char, а wchar_t, и есть ещё дополнительное поле

wchar_t*          szTargetProcessExeFileName;

?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

84 (изменено: svoboden, 2021-07-03 09:31:18)

Re: AHK: Передать структуру

Ну да умножить на 2 нужно только. Непонятно только поле:

wchar_t* szTargetProcessExeFileName;

оно что не влияет на смещения?

85

Re: AHK: Передать структуру

svoboden пишет:

Ну да умножить на 2 нужно только.

Нет, не верно. Считайте по порядку полей.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

86 (изменено: svoboden, 2021-07-03 09:35:19)

Re: AHK: Передать структуру

526 * 2 - но не работает такое значение.

87

Re: AHK: Передать структуру

Как считали, опишите по шагам.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

88 (изменено: svoboden, 2021-07-03 09:37:50)

Re: AHK: Передать структуру

wchar_t* szTargetProcessExeFileName;

это же 2 байта? Тогда после 524 * 2 нужно прибавить 2, получается 526 * 2, но не работает.

89

Re: AHK: Передать структуру

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

90 (изменено: svoboden, 2021-07-03 09:48:28)

Re: AHK: Передать структуру

Так смысл считать, когда работает 524 * 2. Сам я не пойму, я случайно подобрал это поле.

91

Re: AHK: Передать структуру

Считать, чтобы понять. Вы подобрали случайно, но не поняли, как это работает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

92

Re: AHK: Передать структуру

Так я понимаю, я пытался разобраться, у меня не вышло, поэтому вопрос задал.

93

Re: AHK: Передать структуру

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

94

Re: AHK: Передать структуру

Ну хватит уже , я попробую разобраться.

95

Re: AHK: Передать структуру

Честно говоря, совсем не понимаю ход ваших мыслей. Вам выкладывают всё буквально на блюдечке, и такая странная реакция. Хотите разобраться, отвечайте на вопросы, я их не зря задаю. Не хотите — зачем тогда было спрашивать, только время зря потратили.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

96 (изменено: svoboden, 2021-07-03 10:16:10)

Re: AHK: Передать структуру

teadrinker пишет:

Нет, не верно. Считайте по порядку полей.

Ну вы написали, что значение 524 * 2 не верно для юникод структуры при определении id, но оно же работает, значит верно, это не понимаю уже.

97

Re: AHK: Передать структуру

Ну, раз всё верно, тогда в чём вопрос?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

98 (изменено: svoboden, 2021-07-03 10:28:40)

Re: AHK: Передать структуру

У меня два вопроса были:
1) Да, как разобраться какие смещения нужны. Причем смещения юникод структуры точно отличаются от Анси.
2) как правильно послать ptr структуру szTargetProcessExeFileName? numput'ом или strput. В данном случае передается 0, но это строка.

99

Re: AHK: Передать структуру

svoboden пишет:

как разобраться какие смещения нужны

Но при этом разбираться, как я понял, вы не хотите.

svoboden пишет:

как правильно послать ptr структуру szTargetProcessExeFileName?

Это не структура, это указатель на строку. Чтобы понять, как его передать, нужно правильно вычислить смещение. Но так как вы не хотите в этом разбираться, то у вас совсем нет шансов, получается замкнутый круг. Могу предложить, как и раньше, пытаться угадать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

100 (изменено: svoboden, 2021-07-03 10:58:08)

Re: AHK: Передать структуру

Чего не хочу, я же ответил, что 524 * 2 - это верное смещение id. А про указатель на строку не знаете, где можно почитать?