After protect a file (.EXE on this case), .EXE calls MessageBoxA and that API can be hooked to log or alter his params.
If there any chance to make on VMProtect a API Wrapper to avoid calling the original hooked API?
Возможно с количеством параметров Вы правы, так как код не мой, а был взят с одного из форумов, но с 3 параметрами тоже работает (видимо из-за счастливого стечения обстоятельств).
Под редким условием я подразумевал настройку ACL для процесса. Окно отображается, но оно пустое (без нужного текста).
При надобности я могу зарепортить в отдельной теме с демкой для воспроизведения проблемы
Без нужного текста - это скорее всего проблемы с инициализацией UNICODE_STRING, либо с массивом аргументов (например сам массив не выровнен на границу 4/8 байт).
Для реализации в VMP эта проблема тоже актуальна. Отправил репорт на info@vmpsoft.com с описанием и файлами для демонстрации (Subject письма: “ZwRaiseHardError bug”)
Nope, patching the first bytes of a API can be avoided by making somewhat type of API Wrapper like Themida does, but honestly i don’t like Themida, i don’t use it and i will not use it, im on the VMProtect way, and will be nice if it can add somewhat of API Wrapper too!
Themida does not prevent hooks in any way. API Wrapping is just hiding the original imports, nothing more.
As I said above, you can implement your own checks for the most common hooks. Alternatively, make a manual map for the library whose functions you are calling. In any case, this is not the responsibility of the protectors.
It says exactly the same thing as I told you.
Themida destroys the original IAT and replaces the WINAPI calls in the application code with its own bridges, so that the process dump does not identify which WINAPI functions are being used. Only hooks that are installed using IAT patching will not work.
Nothing prevents me from installing the hook by patching the first bytes of the functions directly in the system libraries themselves (which I use successfully, it works fine for any protected application, including Themida).
Functions in system libraries are not protected in any way (you can check this simply by opening the protected application in a debugger and checking the system library functions).
So you’re either a troll or you just don’t understand how it works.