Delphi License Problem

Issues related to VMProtect
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Delphi License Problem

Post by robbie84 »

Hello.

I am looking for a good software protection solution and I came here since I decided that VMProtect is everything I really need for a great price.
I am programming in C++, C# and Delphi so it really has everything I need. Except .NET C#.

I tested C++ licensing and it works great. It recognizes all [Procedure] points. But when I tried to load Delphi license example it says:

"Procedure "TForm1.tryBtnClick" is not found in objects list"
then
"Procedure "TForm1.edSerialNumberChange" is not found in objects list"
and
"Procedure "TForm1.FormCreate" is not found in objects list"

I didn't modify anything, I just compiled the project in Delphi 2010 and opened the TestApp.exe with VMProtect. Same as I did with C++, but Delphi won't work. I checked the TestApp.exe.vmp and all those procedures are there under [Procedure]. C++ project file also has three of them but of course in different format.

Any ideas why VMProtect cannot read those procedures? Is it because of compiler or?

Thanks.
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

After compilation in Delphi 2010 these procedures will have such names:
"Unit1.TForm1.tryBtnClick"
"Unit1.TForm1.edSerialNumberChange"
"Unit1.TForm1.FormCreate"

Try to add these procedures manually through GUI of VMProtect.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Ok, I've done that. Added all three procedures but TestApp.vmp.exe will not accept the key. I tried adding procedures both manually and edited the .vmp file and added Unit1. before those three procedures. Nothing works. INVALID_STATE always.

I reproduced every step from C++ example and it won't work.

Only difference I notice is that C++ exe has (key) in front of 0042D650 ProtectedCode(struct HWND__ *) and there is no (key) in Delphi procedures.
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

For Delphi 2010 need change this string:

Code: Select all

nState := VMProtectSetSerialNumber(PAnsiChar(edSerialNumber.Text));
to

Code: Select all

nState := VMProtectSetSerialNumber(PAnsiChar(AnsiString(edSerialNumber.Text)));
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Thank you! Everything works perfect. If there is no urgent issues, expect my order this week.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Just few more questions before purchase... Sorry for this but I want to know everything about the product before purchase. This is also important to me, but not dealbreaker.

Question 1:

When I pack a .EXE/.DLL with VMProtect. Every PE Identifier will show that an is packed with VMProtect.

1. Does VMProtect offers "packer" confusion like some others do?
2. Is there any trick to rick PE identifiers so they cannot make a positive result?
3. And third is obvious: After I packed my exe/dll with VMP, Can I use another packer to mask the packer signature?

And PS. Maybe you could implement a dropbox full of packers for user to select to completely confuse the cracker.

Question 2:

I know that there is a very nice help inside VMProtect install folder, but I was wondering is there some other documentation? Any kind will do but my focus is at "pen-test" VMProtected software and such.


Question 2:

If I protect my Delphi application with VMP 2.05 and use VMP Licensing System... what are the chances it will be cracked? I never tried to do VMP UnPackme or similar so I don't know how licensing system is strong.




Thanks.
Support
Posts: 40
Joined: Tue Mar 30, 2010 5:01 pm

Re: Delphi License Problem

Post by Support »

robbie84 wrote: When I pack a .EXE/.DLL with VMProtect. Every PE Identifier will show that an is packed with VMProtect.
1. Does VMProtect offers "packer" confusion like some others do?
The demo-version of VMProtect has fixed and known signatures. The full version doesn't and it is quite hard to detect VMProtect in the packed file if you want to hide it.
robbie84 wrote: 2. Is there any trick to rick PE identifiers so they cannot make a positive result?
See #1
robbie84 wrote: 3. And third is obvious: After I packed my exe/dll with VMP, Can I use another packer to mask the packer signature?
See #1
I tell you more that we don't recommend to mix packers.
robbie84 wrote: I know that there is a very nice help inside VMProtect install folder, but I was wondering is there some other documentation? Any kind will do but my focus is at "pen-test" VMProtected software and such.
All the documentation is shipped with VMProtect. No other documentation exists.
robbie84 wrote: If I protect my Delphi application with VMP 2.05 and use VMP Licensing System... what are the chances it will be cracked? I never tried to do VMP UnPackme or similar so I don't know how licensing system is strong.
One of the most important feature of VMProtect is its virtualization engine. Even if a hacker spends lots of time to crack your application, you just need to re-protect it and he has to start from the beginning. Each time you protect the application, VMProtect creates a set of completely different virtual machines and virtualizes everything related to licensing. So every protected application has a completely different virtualized licensing code. It is very difficult even to analyze it.

In the upcoming version 2.06 this scheme will be improved, so it will be much harder to crack the licensing system.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Thanks for the answers.

I just did a test on a simple HelloWorld app and got this:

Code: Select all

[File Heuristics] -> Flag : 00000000000001001100001100000111 (0x0004C307)
[!] VM Protect v1.60 - v2.05 (or newer) detected !
- Scan Took : 0.844 Second(s)
So it looks like it can see the packer with no problem, unless I use that trick. But I don't know what the trick is? If you can tell me where should I make that trick? Is it the scripts? I am asking because I didn't find it in the help files and I want to confuse PE identifiers.

As for the cracking of licensing system, I am pleased with that. If a cracker needs few weeks to dump VM and then keygen it, it is enough. And especially if I set 2 or 3 VMs :twisted:

Thanks!

PS. Great product you have here. I am myself in RCE business (for fun) and I think I never saw more complicated protection. Hell, they were saying Securom 7 was unbreakable and then Bioshock (game) came and me and other two cracked it in 3 weeks. Only because we had to dump the VM and do a complete code reconstruction. But this is really great.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Hi. I started having a really strange problem. I am now testing the licensing on a simple app just to see the functionality.
When you instructed me to add Procedures manually, it worked. Now, I can't see any procedures of any EXE I open. Even the TestApp.exe from Example directory.

First I guessed I did something wrong in my app, but then I tried your Example and it still doesn't work.

When I click "All Procedures" I only see

Code: Select all

0045EF28   EntryPoint
I tried Delphi and C++. Can't see any procedures except EntryPoint. I tried reinstalling the VMP Demo and still nothing.

What happened? It was working great before.

And also if I add:

Code: Select all

[Procedures]
MapAddress0=Unit1.TForm1.btTryClick
Options0=1
CompilationType0=0
MapAddress1=Unit1.TForm1.edSerialNumberChange
Options1=1
CompilationType1=0
MapAddress2=Unit1.TForm1.FormCreate
Options2=1
CompilationType2=0
It still gives Warning that those objects cannot be found. And when I try manually, there are no procedures except EntryPoint?

What happened?

EDIT:

C++ EXES work. I tried opening my old apps and it reads Procedures with no problems, but Delphi won't.

Can the problem be in newly installed components for Delphi 2010? When it all worked, I was coding in fresh installed Delphi 2010. Now I have some components added. But I didn't use those components in my test app. And also I didn't use them in your TestApp.exe example.
Can it be that compiler changed somehow and VMProtect cannot read the procedures in the EXE? But then that doesn't make sense since it also cannot read Procedures from EXES compiled a long time ago in Delphi...
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

We have analyzed "File Heuristics" (hehe - if it can be named a heuristic :))) of ProtectionID 0.6.4 and we`ll plan to circumvent this analysis in the next version of VMProtect.

About your problems with procedures list - I think that you did not set the creation of MAP file in your compiler (Project -> Options -> Linker -> Map file) or MAP file does`t exist at application directory.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Heh it worked. I didn't notice that Delphi has turned MAP off. It was creating it before. Dunno why it disabled it.

Just another quick question. When I compile test example and run the TestApp.vmp.exe and press the "Try to execute protected code" button I get the right message and I didn't enter any serial. When I enter a valid serial, I get the same message. Is there some check if key is right so if it not I get some error?

Here is RAR archive of the app. I couldn't attack it because it is 900kb. Files: TestApp.vmp.exe, VMProtectSDK32.dll and serial.txt (valid serial inside). .EXE is created with default code from your Delphi Example. Nothing was modified. Check it out.

http://hotfile.com/dl/66483066/0310a3e/TestApp.rar.html

PS. You are one of best support teams I have encountered. Very nice. Looking forward to my VMProtect copy.
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

In your application "tryBtnClick" is not locked by serial number (the demo version can protect ONLY one random procedure from your list of procedures for protection).

P.S. VMProtectSDK32.dll is not need for protected application.
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

P.P.S. Before asking try to find an answer on your question in the help file of VMProtect.
robbie84
Posts: 10
Joined: Sun Aug 29, 2010 12:05 pm

Re: Delphi License Problem

Post by robbie84 »

Believe me, I don't go asking around... I study alot! But these things eluded me in my quest to make a test app.
I am testin VMP for 2 full days now but it is not easy! You must admit that. Even with help.

So, can you help me for the last time with my testapp? Please :)

If it is not a problem can you please show me (explain in code, I understand) how to "LOCK "tryBtnClick" to the SERIAL NUMBER"? so when I press that button I get error unless valid serial is provided.

And also, if you can write a small Delphi application. It is just drag and drop. I want to see how would you handle it. I am coding an app that has elements mentioned below. App should look like this:

1. Blank Delphi Form - nothing to do here
2. Add Menu to form -> Edit -> here make 3 master menus, every master has 2 childs and every child has 1 baby. I hope you understand :)

In a nutshell, I need to disable 3 master menus for unregistered. After key is entered it all unlocks. As you see this is 5min of work so please help me :)
And if you have other advices about Menus, please say :). And also, please send me complete source so I can see what have you done.

Thanks a bunch!

And BTW - If you for some reason need IDA Pro 5.7 Advanced, we can do something about that.
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Delphi License Problem

Post by Admin »

so when I press that button I get error unless valid serial is provided.
When I press the button in your application - I have this message:
---------------------------
TestApp.vmp.exe
---------------------------
Protected code succesfully executed
---------------------------
ОК
---------------------------

Where you see the error message - I don`t understand.
Post Reply