• XSS.stack #1 – первый литературный журнал от юзеров форума

как заменить оператор new для класса

jingo

HDD-drive
Пользователь
Регистрация
01.09.2019
Сообщения
37
Реакции
8
Гарант сделки
1
отыскал на гитхабе класс архивирования
(source)
истребляю все crt функции, strcpy, strlen...
но никак не могу заменить new для структуры и класса

C:
HZIP CreateZipInternal(void* z, unsigned int len, DWORD flags, const char* password)
{
    TZip* zip = new TZip(password);
    lasterrorZ = zip->Create(z, len, flags);
    if (lasterrorZ != ZR_OK)
    {
        delete zip;
        return 0;
    }
    TZipHandleData* han = new TZipHandleData;
    han->flag = 2; han->zip = zip; return (HZIP)han;
}

собственно, пытался заменить оператор new вот так
C:
HZIP CreateZipInternal(void* z, unsigned int len, DWORD flags, const char* password)
{
    TZip* zip = (TZip*)AllocateMemory(sizeof(TZip*));

    zip->hfout = 0;
    zip->mustclosehfout = false;
    zip->hmapout = 0;
    zip->zfis = 0;
    zip->obuf = 0;
    zip->hfin = 0;
    zip->writ = 0;
    zip->oerr = false;
    zip->hasputcen = false;
    zip->ooffset = 0;
    zip->encwriting = false;
    zip->encbuf = 0;
    zip->password = 0;
    zip->state = 0;

    lasterrorZ = zip->Create(z, len, flags);
    if (lasterrorZ != ZR_OK)
    {
        FreeMemory(zip);
        return 0;
    }
    TZipHandleData* han = (TZipHandleData*)AllocateMemory(sizeof(TZipHandleData*));

    han->flag = 2;
    han->zip = zip;

    return (HZIP)han;
}

но код крашится...
куда копать?
 
Как минимум не
Код:
TZip* zip = (TZip*)AllocateMemory(sizeof(TZip*));
...
TZipHandleData* han = (TZipHandleData*)AllocateMemory(sizeof(TZipHandleData*));
а
Код:
TZip* zip = (TZip*)AllocateMemory(sizeof(TZip));
...
TZipHandleData* han = (TZipHandleData*)AllocateMemory(sizeof(TZipHandleData));
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх