Вопрос об исключении кода - PullRequest
       15

Вопрос об исключении кода

0 голосов
/ 23 сентября 2011

Env: VS 2008, C ++

У меня есть код, подобный приведенному ниже:

void HopeException(LPVOID nVerify) 
{   
     char *p = NULL; 
     p = (char *)nVerify;  
     delete []p; 
}

Когда я вызываю функцию " HopeException " с параметром not-NULL,например:

    HopeException(123);

тогда я надеюсь, что программа выдаст исключение.

Но когда я скомпилирую код на VS 2008 с Release режим, программа работает хорошо.

Я не знаю почему.Может ли кто-нибудь дать мне помощь по этому вопросу?

Или у вас есть хорошая идея реализовать эту функцию другим методом?

Редактировать:

Мне очень жаль, я думаю, что ранее отправил неправильный код.

На самом деле, я защищаю свое программное обеспечение.Мое программное обеспечение получит значение CRC файла DLL, а затем мое программное обеспечение проверит значение CRC, как показано ниже:

    unsigned int VerifyCRC = FF234322;
    unsinged int CRC = getCRC("Fun.dll");
    LPVOID lpResult = CRC & (~VerifyCRC);
    HopeException(lpResult);

Таким образом, согласно приведенному ниже коду, если взломщик взломает Fun.dll файл, выполнение выдаст исключение.
Это действительно я хочу.

Ответы [ 3 ]

2 голосов
/ 23 сентября 2011

Jell - C ++ дает вам достаточно веревки, чтобы повеситься (и, скорее всего, большинство из вас друзья).

Но зачем это делать? (- Предположим, это зависит от ваших друзей).

0 голосов
/ 23 сентября 2011

Этот код не должен компилироваться в C ++;Самая близкая вещь, которая должна хорошо скомпилироваться:x86) вы можете просто использовать

__asm int 3;

Если ваша цель - взломать отладчик, вы также можете просто использовать

DebugBreak();
0 голосов
/ 23 сентября 2011

Вы воспринимаете nVerify как адрес и присваиваете его указателю p, а затем вызываете delete[] для этого адреса. Если значение nVerify не является действительным адресом, вы можете получить неопределенное поведение, которое включает в себя программу, которая выглядит «хорошо работающей», в основном потому, что вы на самом деле мало что делаете в этой функции.

Что вы действительно пытаетесь сделать?

...