Can u guy help me in this any thing I can do to avoid memory patch
Cause I m damn sure they cannot run exe if unpack ( I did try that)
And I ve seen they using jmp in.olly to skip/ bypass security checks

As per information you gave us, I'm not sure that your application was unpacked. If you applied RISC VM (through markers or functions selecting) and protected strings this adds a full power protection to your file.

However, even if this all is implemented, it is possible to patch unprotected parts of code in memory.

To avoid this, everything that you need to do - protect this part of code that has a weakness for patching.

Apply a virtual machine protection to this part of code and that fixes all your problems. When virtual machine is applied, the original code is being protected so that it becomes impossible to change/patch it.

If your app is being patched in memory, you first need to know what exact code is patched? Because if code is patched, then I dount it is protected with virtual machine and you have to apply vm for this code.

You could protect this function with any virtual machine, but for a cracker this does not matter at all. Cracker could hook the function CompareStr and return any custom result for it. So even if your function becomes protected, it would be possible to change it's result.

To fix such case, you need to protect both functions, your one and system one. And for this case, it is better to use protection with map file instead of markers.

Generate a map file in Delphi, and then using Virtual Machine - Functions Selecting select necessary functions to protect.