• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

perl и C++

  • Автор темы bugs
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

bugs

Застрял вот на чем :

Сначала написал програмку на VC++ : подключаю мою DLL-ку, описываю прототип функции которую собираюсь вызывать и собственно вызываю. Одним из параметров функции является указатель на выходной массив, в котором будут содержаться идентификаторы - тип LPDWORD или unsigned long*. Результат возвращается - все ок.

Нужно написать то же самое на Perl'e :
Подключаю DLL, описываю нужную мне функцию :
ApiLink('mglue32.dll', 'DWORD MG_GetCurSympIds(HANDLE hwnd, DWORD id, LPDWORD lpaid, DWORD dwMaxSize)');
Вызываю ее в скрипте, на место LPDWORD lpaid подаю например скаляр $list или массив @list пока неважно.
Выделаю под него память $list = " " x 200. Вместо идентификаторов возвращается последовательность символов в юникоде, причем на каждый идентификатор приходится по два символа.

Подскажите что нужно сделать чтобы получить нормальные идентификаторы в виде чисел?

Кстати, если это поможет :

Если в проге на VC++ в прототипе вместо unsigned long* указать char* то вместо целых чисел возвращаеются как раз те самые символы в юникоде
 
A

ASh

Чёрт... Так много текста, но в чём проблема я так и не понял (((
Какие идентификаторы... Как ты память выделяешь... Ничего не понял...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!