Использование VMProtectFreeString

Issues related to VMProtect
Post Reply
denis84
Posts: 46
Joined: Sat Nov 16, 2013 12:26 pm

Использование VMProtectFreeString

Post by denis84 »

Подскажите пример использования VMProtectFreeString, что-то не могу разобраться.
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Использование VMProtectFreeString

Post by Admin »

Code: Select all

const char *str = VMProtectDecryptStringA("test");
...
VMProtectFreeString(str);
denis84
Posts: 46
Joined: Sat Nov 16, 2013 12:26 pm

Re: Использование VMProtectFreeString

Post by denis84 »

Admin wrote:

Code: Select all

const char *str = VMProtectDecryptStringA("test");
...
VMProtectFreeString(str);

Code: Select all

#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*)'
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Использование VMProtectFreeString

Post by Admin »

Code: Select all

#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 *" чтобы не делать преобразование типов.
denis84
Posts: 46
Joined: Sat Nov 16, 2013 12:26 pm

Re: Использование VMProtectFreeString

Post by denis84 »

Admin wrote:

Code: Select all

#include <windows.h>
#include "VMProtectSDK.h"
int main(int argc, char *argv[]){   
   VMProtectBegin("marker1");
   char *str = VMProtectDecryptStringA("test");
   VMProtectFreeString((void *)str);
   VMProtectEnd(); 
   return 1;
} 
Точно. Спасибо за оперативный ответ.
denis84
Posts: 46
Joined: Sat Nov 16, 2013 12:26 pm

Re: Использование VMProtectFreeString

Post by denis84 »

VMProtectFreeString - данная процедура очищает то, что я передаю или нет?

т.е. нужно ли мне делать еще один free(str) ?
denis84
Posts: 46
Joined: Sat Nov 16, 2013 12:26 pm

Re: Использование VMProtectFreeString

Post by denis84 »

Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит
DUPLICATE ERROR COUNTS:
Error # 1: 17
Error # 4: 2

SUPPRESSIONS 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)
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Использование VMProtectFreeString

Post by Admin »

VMProtectFreeString - данная процедура очищает то, что я передаю или нет?
Да, очищает то что вы передаете.
т.е. нужно ли мне делать еще один free(str) ?
Не нужно!
Admin
Site Admin
Posts: 2586
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Использование VMProtectFreeString

Post by Admin »

Я пытаюсь избавиться от утечки в таком элементарном примере. drmemory.exe вот что говорит
При старте защищенной программы рантайм вмпротекта создает в памяти собственные объекты, поэтому на момент завершения процесса у вас всегда будет видна занятая память.
Post Reply