Issue with BOOL definition in enigma_ide64.lib ?

x64 version issues
Post Reply
dje
Posts: 5
Joined: Wed Jun 20, 2012 8:49 am

Issue with BOOL definition in enigma_ide64.lib ?

Post by dje »

Hello,

I'm evaluating Enigma Protector to protect our applications (both x86 and x64).
I found an issue when using x64 version of the tool (downloadable version from you website).

When I call EP_CheckupIsProtected and my app is unprotected, the result of EP_CheckupIsProtected is random.
I investigated and it seems the EP_CheckupIsProtected return it's result in "al" register (8 bits?) where the function declaration is supposed to return a BOOL (32 bits).

EP_CheckupIsProtected code:
push rbp
mov rbp,rsp
sub rsp,30h
mov byte ptr [rbp-8],0
mov al,byte ptr [rbp-8] <= result is 8 bits
leave
ret

From the caller:

if (!EP_CheckupIsProtected())

call qword ptr [__imp_EP_CheckupIsProtected (13F6C2198h)]
test eax,eax <= 32 bits test

Can you confirm the issue?
I guess this problem occurs with all prototypes declared as returning BOOL but I didn't test yet.
The problem doesn't occur with x86 version.

Thanks.
Jerome
Enigma
Site Admin
Posts: 2939
Joined: Wed Aug 20, 2008 2:24 pm

Re: Issue with BOOL definition in enigma_ide64.lib ?

Post by Enigma »

Hi Jerome,

I confirm there is such problem.

The problem happens with the few functions:
EP_CheckupIsProtected, EP_CheckupIsEnigmaOK, EP_CheckupFindProcess.

Temporary, you can change the result type of these functions to bool (which is 1 byte) instead of BOOL (4 bytes) in the enigma_ide.c

The problem is already solved.

Thanks you for the note!
dje
Posts: 5
Joined: Wed Jun 20, 2012 8:49 am

Re: Issue with BOOL definition in enigma_ide64.lib ?

Post by dje »

Temporary, you can change the result type of these functions to bool (which is 1 byte) instead of BOOL (4 bytes) in the enigma_ide.c
Yes this is what I've done.
Thank you for you quick answer.
Post Reply