Initialization Error 4

Hi,

I am currently updating my software to support VMP3.
I need to strip out the “Name” field in the Export Directory of my DLL which worked fine in VMP2, in VMP3 I get an error message:

Is there any way to make the dll work with modified export directory? Memory protection is not enabled.

Regards.

“Initialiation error 4” means that the last VMProtect’s segment is modified. We recommend to use the script for deleting of export functions. For example:

function OnBeforeSaveFile()
   local exports = vmprotect.core():outputArchitecture():exports()
   exports:clear()
end

Hello, thanks for your response.

I don’t want to remove all exports I just want to

  • Rename one exported function
  • Change the “name” field in the export directory

Is there any way to accomplish that with VMP Scripts? As far as I understood the Script functions only allow you to read and clear the export directory but not to change certain fields.

We have added these features in 3.0.6.548.

Rename one exported function:

function OnBeforeSaveFile()
   local exports = vmprotect.core():outputArchitecture():exports()
   local export =  exports:itemByName("old_name") 
   if (export) then
      export:setName("new_name")
   else
      print("old_name not found!")
   end
end

Change the “name” field in the export directory:

function OnBeforeSaveFile()
   local exports = vmprotect.core():outputArchitecture():exports()
   exports:setName("")
end

Thank you very much, keep up the great work!

Hello,

could you please also add functions to change

  • NtHeader->FileHeader.TimeDateStamp
  • NtHeader->OptionalHeader.MinorLinkerVersion
  • IMAGE_EXPORT_DIRECTORY->TimeDateStamp

Regards

Dear Admin,

I’m your client and I’m using VMProtect to protect my software. I’m currently seeing “Initialization error 4” in a production environment at customer’s site, – but in a strange manner: my app, protected with VMProtect initially works fine, but then at some point it cannot be started any longer, until the server is rebooted or until the app is reinstalled. Interesting that I supply 2 executables, one being an NT service and second being an auxiliary utility. Both protected with VMProtect, and both are getting unusable at some point at that server, throwing the “Initialization error 4” message box.

I was wondering, what change in the system may cause this behaviour. And why reinstallation of my software helps. Is it the case that something changes VMProtect-covered binaries on the disk? or does this happen in RAM, after binary is loaded? What should be recommended to that server’s administrators in order to avoid this problem in future?