Issue with BOOL definition in enigma_ide64.lib ?
Posted: Wed Jun 20, 2012 9:00 am
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
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