В VC ++ __p___argv
объявляется следующим образом:
__declspec(dllimport) char*** __cdecl __p___argv (void);
В MinGW __p___argv
объявляется следующим образом:
extern char*** __p___argv(void);
В обоих случаях функция возвращаетуказатель на местоположение, которое содержит адрес массива argv
(т. е. адрес первого элемента) в eax/rax
.
Первый параметр, передаваемый пользователем, всегда равен argv [1] иадрес этого параметра хранится во втором элементе массива argv
.Таким образом, вам придется сначала разыменовать eax/rax
, а затем добавить 4/8 байтов к результирующему адресу, чтобы получить адрес первого параметра, переданного пользователем.
Вы также можете использовать __argv
,которая является переменной, эквивалентной *__p___argv()
.