Подскажите пример использования VMProtectFreeString, что-то не могу разобраться.
const char *str = VMProtectDecryptStringA("test");
...
VMProtectFreeString(str);
#include <windows.h>
#include "VMProtectSDK.h"
int main(int argc, char *argv[]){
VMProtectBegin("marker1");
const char *str = VMProtectDecryptStringA("test");
VMProtectFreeString(str);
VMProtectEnd();
return 1;
}
test.cpp: In function ‘int main(int, char**)’:
test.cpp:7: error: invalid conversion from ‘const void*’ to ‘void*’
test.cpp:7: error: initializing argument 1 of ‘BOOL VMProtectFreeString(void*)’
#include <windows.h>
#include "VMProtectSDK.h"
int main(int argc, char *argv[]){
VMProtectBegin("marker1");
char *str = VMProtectDecryptStringA("test");
VMProtectFreeString((void *)str);
VMProtectEnd();
return 1;
}
В следующей версии мы изменим тип параметра у VMProtectFreeString с “void *” на “const void *” чтобы не делать преобразование типов.
Точно. Спасибо за оперативный ответ.
VMProtectFreeString - данная процедура очищает то, что я передаю или нет?
т.е. нужно ли мне делать еще один free(str) ?
Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит
DUPLICATE ERROR COUNTS:
Error # 1: 17
Error # 4: 2SUPPRESSIONS USED:
ERRORS FOUND:
0 unique, 0 total unaddressable access(es)
1 unique, 17 total uninitialized access(es)
0 unique, 0 total invalid heap argument(s)
0 unique, 0 total GDI usage error(s)
0 unique, 0 total warning(s)
2 unique, 3 total, 503 byte(s) of leak(s)
1 unique, 1 total, 23 byte(s) of possible leak(s)
ERRORS IGNORED:
11 unique, 65 total, 8206 byte(s) of still-reachable allocation(s)
VMProtectFreeString - данная процедура очищает то, что я передаю или нет?
Да, очищает то что вы передаете.
т.е. нужно ли мне делать еще один free(str) ?
Не нужно!
Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит
При старте защищенной программы рантайм вмпротекта создает в памяти собственные объекты, поэтому на момент завершения процесса у вас всегда будет видна занятая память.