protecting lite c and 3dgs app or games?
protecting lite c and 3dgs app or games?
have you have any plan to support lite c?it's a c like syntax compiler for 3d gamestudio packages,site here : http://www.3dgamestudio.com/ , the developer community need something to protect the games and also doesn't compromise the performance of their games,just notes sometime also the compiler support 3rd party dll,is it possible to protect those also?can you check it?and add it into your sdk,encrypted code,dll?iam sure gonna buy..
Re: protecting lite c and 3dgs app or games?
sample lite-c code,
the compiled exe :
i have tested with enigma demo 1.76,tested to protect the file without any pluggins,just default setting,when i run the protected exe,after the demo splash,nothing appear,the protected app just shutdown ,the project file attached below,btw iam running win xp pro sp2 64 bit.
Code: Select all
/////////////////////////////////////////////
// clock.c - analog clock panel example
// requires WINDOWS VISTA or above
// (c) jcl / oP group 2009
/////////////////////////////////////////////
#include <acknex.h>
#include <default.c>
var hours;
// drag window with left mouse button
function on_mouse_left_event()
{
VECTOR click_pos,new_pos;
vec_set(click_pos,mouse_cursor);
// move the window by the mouse distance to the click position
while (mouse_left) {
vec_diff(new_pos,mouse_cursor,click_pos);
vec_add(new_pos,window_pos);
video_window(new_pos,NULL,0,0);
wait(1);
}
}
// draw a halftransparent border for a sort of antialiasing
void bmap_drawborder(BMAP* bmap,COLOR* color,var alpha)
{
var pixel = pixel_for_vec(color,alpha,bmap_lock(bmap,0));
var width = bmap_width(bmap);
var height = bmap_height(bmap);
var i;
for (i=0; i<width; i++) {
pixel_to_bmap(bmap,i,0,pixel);
pixel_to_bmap(bmap,i,height-1,pixel);
}
for (i=0; i<height; i++)
{
pixel_to_bmap(bmap,0,i,pixel);
pixel_to_bmap(bmap,width-1,i,pixel);
}
bmap_unlock(bmap);
}
////////////////////////////////////////////////////////////
#define COLOR_HAND vector(255,220,220)
#define COLOR_BODY vector(20,0,0) // dark blue
function main()
{
vec_set(screen_size,vector(400,400,0));
vec_set(screen_color,COLOR_BODY);
if (sys_winversion >= 6)
video_alpha = 85; // transparency works under Vista only
wait(1); // wait until the engine window is opened
// place the clock in the upper left corner
video_window(vector(6,6,0),vector(200,200,0),2,0);
PANEL* clock = pan_create(NULL,0);
set(clock,SHOW);
BMAP* hours_hand = bmap_fill(bmap_createblack(140,8,32),COLOR_HAND,100);
bmap_drawborder(hours_hand,COLOR_HAND,60);
pan_setneedle(clock,0,screen_size.x/2,screen_size.y/2,
hours_hand, 10,4,90,12,0,hours);
BMAP* minutes_hand = bmap_fill(bmap_createblack(180,6,32),COLOR_HAND,100);
bmap_drawborder(minutes_hand,COLOR_HAND,60);
pan_setneedle(clock,0,screen_size.x/2,screen_size.y/2,
minutes_hand,10,3,90,60,0,sys_minutes);
BMAP* seconds_hand = bmap_fill(bmap_createblack(190,5,32),COLOR_RED,100);
bmap_drawborder(seconds_hand,COLOR_RED,60);
pan_setneedle(clock,0,screen_size.x/2,screen_size.y/2,
seconds_hand,20,2,90,60,0,sys_seconds);
// add inbetween value for hour hand
while(1) {
hours = sys_hours + sys_minutes/60;
wait(1);
}
}
Code: Select all
http://www.storage.to/get/TqfeCmiU/clock.cd.rar
You do not have the required permissions to view the files attached to this post.
Re: protecting lite c and 3dgs app or games?
Ok, thanks for the files, I will take a look!
Hope that this problem will be solved soon!
Hope that this problem will be solved soon!
Re: protecting lite c and 3dgs app or games?
I have found a core of the problem! Protected files do not work becuase lite-c executables have self-check routine. For example, any modification of executable memory causes check sum exception and crasing.
Anyway, I also found how to solve this and how to allow to protect these exes with Enigma.
1. Download and install latest Enigma, this will not work with Enigma version < 1.76, only since 1.76 it is possible
2. Download attached plugin Lite-C plugin, unzip it and copy to Enigma installation folder, Plugins subfolder
3. Start Enigma, go to Miscellaneous - Plugins panel, if you have done everything correctly, you will see Lite-C plugin in the list, enable this plugin, this is very important!
4. Select input and outout files, click protect
Now your exe will work well protected!
PS: not sure if this plugin will work with any lite-c files, if it will not work, just send me these files back, I will test out!
Anyway, I also found how to solve this and how to allow to protect these exes with Enigma.
1. Download and install latest Enigma, this will not work with Enigma version < 1.76, only since 1.76 it is possible
2. Download attached plugin Lite-C plugin, unzip it and copy to Enigma installation folder, Plugins subfolder
3. Start Enigma, go to Miscellaneous - Plugins panel, if you have done everything correctly, you will see Lite-C plugin in the list, enable this plugin, this is very important!
4. Select input and outout files, click protect
Now your exe will work well protected!
PS: not sure if this plugin will work with any lite-c files, if it will not work, just send me these files back, I will test out!
You do not have the required permissions to view the files attached to this post.
Re: protecting lite c and 3dgs app or games?
ok thank you it's working!iam gonna inform the community,what about sdk support and example?is there any plan to add lite-c into sdk?
Edited :
Posted the introduction here :
you can reg in the forum and maybe if there is user interested to reply back?
Edited :
Posted the introduction here :
Code: Select all
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=288522&#Post288522
Re: protecting lite c and 3dgs app or games?
Ohh.. just do not want to register... Let's discuss here!
Regarding SDK, not sure I can give you good advices..
The main problem (as I took quick look), the Lite-C executable is an overlay exe file, i.e. it does not generate code for main exe, it just add some extra data to the end of file (overlay). In this case it will be impossible to use SDK Enigma features. Maybe I'm mistaking...
But, ask to lite-c developers, is it possible to call through the code the function from the external dll? For example, is it possible to call function X from Y.dll? If it will be possible, then I will explain how to apply Enigma power to protect exe!
Regarding SDK, not sure I can give you good advices..
The main problem (as I took quick look), the Lite-C executable is an overlay exe file, i.e. it does not generate code for main exe, it just add some extra data to the end of file (overlay). In this case it will be impossible to use SDK Enigma features. Maybe I'm mistaking...
But, ask to lite-c developers, is it possible to call through the code the function from the external dll? For example, is it possible to call function X from Y.dll? If it will be possible, then I will explain how to apply Enigma power to protect exe!
Re: protecting lite c and 3dgs app or games?
a new reply from the a7 dev based on your request about the overlay :
i am gonna try it soon..No, there is no bytecode. A legacy mode executable is just a normal EXE as defined by Microsoft. A pure mode lite-C executable however is a normal EXE wrapped around another EXE. It's executed in two steps: the wrapper EXE loads acknex.dll, which performs a self check and then transfers control to the embedded real EXE. This should however normally not matter for protection systems.
But calling the enigma DLL from lite-C is of course the easiest way. Look here:
http://manual.3dgamestudio.net/litec_api.htm
Just put a #define PRAGMA_API definition in your code and then you can call the enigma DLL function.
Re: protecting lite c and 3dgs app or games?
Ok, then lite-c allows to call external libraries - that's good!
So, if API call is possible, then you can use Enigma API in your lite-c applications. API provides you a huge possibilities (manually check registration keys, check trial, other features), moreover, using an API is very good way to increase protection, any integration of protected file with protector - gives good protection level.
Since lite-c has very wide range of api declaration, you can use any type (static or dynamic), Enigma will support it well. Below are declarations of Enigma API to use it in lite-c (static PRAGMA method):
I did not try these declarations, but hope it is working!
So, if API call is possible, then you can use Enigma API in your lite-c applications. API provides you a huge possibilities (manually check registration keys, check trial, other features), moreover, using an API is very good way to increase protection, any integration of protected file with protector - gives good protection level.
Since lite-c has very wide range of api declaration, you can use any type (static or dynamic), Enigma will support it well. Below are declarations of Enigma API to use it in lite-c (static PRAGMA method):
Code: Select all
const
int WM_PUBLIC = 1;
int WM_PRIVATE = 2;
int MAX_STRING_SIZE = 255;
// Ctypt hash types, possible hash values for functions:
// EP_CryptHashBuffer
// EP_CryptHashStringA
// EP_CryptHashStringW
// EP_CryptHashFileA
// EP_CryptHashFileW
int HASH_XOR32 = 0;
int HASH_MD2 = 1;
int HASH_MD5 = 2;
int HASH_RipeMD160 = 3;
int HASH_SH1 = 4;
int HASH_SHA224 = 5;
int HASH_SHA256 = 6;
int HASH_SHA384 = 7;
int HASH_SHA512 = 8;
typedef struct TWMContent {
int WMType;
char* Name;
int NameLen;
char* Text;
int TextLen;
char* FileName;
int FileNameLen;
char* AFile;
int AFileLen;
} TWMContent, *PWMContent;
// Registration API
BOOL EP_RegSaveKey( char* Name, char* Key );
#define PRAGMA_API EP_RegSaveKey;enigma_ide!
BOOL EP_RegLoadKey( char** Name, char** Key );
#define PRAGMA_API EP_RegLoadKey;enigma_ide!
BOOL EP_RegCheckKey( char* Name, char* Key );
#define PRAGMA_API EP_RegCheckKey;enigma_ide!
BOOL EP_RegDeleteKey();
#define PRAGMA_API EP_RegDeleteKey;enigma_ide!
BOOL EP_RegLoadAndCheckKey();
#define PRAGMA_API EP_RegLoadAndCheckKey;enigma_ide!
BOOL EP_RegCheckAndSaveKey( char* Name, char* Key );
#define PRAGMA_API EP_RegCheckAndSaveKey;enigma_ide!
LPCTSTR EP_RegHardwareID();
#define PRAGMA_API EP_RegHardwareID;enigma_ide!
BOOL EP_RegKeyCreationDate( WORD* Year, WORD* Month, WORD* Day );
#define PRAGMA_API EP_RegKeyCreationDate;enigma_ide!
BOOL EP_RegKeyExpirationDate( WORD* Year, WORD* Month, WORD* Day );
#define PRAGMA_API EP_RegKeyExpirationDate;enigma_ide!
// Trial API
BOOL EP_TrialExecutions( DWORD* Total, DWORD* Left );
#define PRAGMA_API EP_TrialExecutions;enigma_ide!
BOOL EP_TrialDays( DWORD* Total, DWORD* Left );
#define PRAGMA_API EP_TrialDays;enigma_ide!
BOOL EP_TrialExpirationDate( WORD* Year, WORD* Month, WORD* Day );
#define PRAGMA_API EP_TrialExpirationDate;enigma_ide!
BOOL EP_TrialDateTillDate( WORD* StartYear, WORD* StartMonth, WORD* StartDay, WORD* EndYear, WORD* EndMonth, WORD* EndDay );
#define PRAGMA_API EP_TrialDateTillDate;enigma_ide!
BOOL EP_TrialExecutionTime( DWORD* Total, DWORD* Left );
#define PRAGMA_API EP_TrialExecutionTime;enigma_ide!
// Misc API
int EP_MiscGetWatermark( int ID, PWMContent WM );
#define PRAGMA_API EP_MiscGetWatermark;enigma_ide!
// Protection API
int EP_ProtectedStringByID( int Total, char* Left, int Len);
#define PRAGMA_API EP_ProtectedStringByID;enigma_ide!
int EP_ProtectedStringByKey( char* Key, char* Left, int Len);
#define PRAGMA_API EP_ProtectedStringByKey;enigma_ide!
// Crypt API
int EP_CryptHashBuffer( int Hash, byte* Buffer, int Size, byte* Digest);
#define PRAGMA_API EP_CryptHashBuffer;enigma_ide!
int EP_CryptHashFileA( int Hash, char* FileName, byte* Digest);
#define PRAGMA_API EP_CryptHashFileA;enigma_ide!
int EP_CryptHashFileW( int Hash, wchar_t* FileName, byte* Digest);
#define PRAGMA_API EP_CryptHashFileW;enigma_ide!
int EP_CryptHashStringA( int Hash, char* Str, byte* Digest);
#define PRAGMA_API EP_CryptHashStringA;enigma_ide!
int EP_CryptHashStringW( int Hash, wchar_t* Str, byte* Digest);
#define PRAGMA_API EP_CryptHashStringW;enigma_ide!
// Checkup API
BOOL EP_CheckupCopies( int* Total, int* Current);
#define PRAGMA_API EP_CheckupCopies;enigma_ide!
BOOL EP_CheckupIsProtected();
#define PRAGMA_API EP_CheckupIsProtected;enigma_ide!
BOOL EP_CheckupIsEnigmaOk();
#define PRAGMA_API EP_CheckupIsEnigmaOk;enigma_ide!