Crack The Enigma Protector
Posting of unpacks without any reasonable write up or explanation is against the ethos of the changes implemented in this forum. It is explained at the top of the index page in each of crackme forum's and was discussed here.
Crack the enigma protector
What you can do is to check your desired protector xy like Enigma in that case itself.Download a trial version and see what features you can use to protect files.Also check the Enigma APIs descriptions to get more helpfully infos.The rest you can find out by debugging and for the checks like OS Version / Drive / Language / Execution Counts / drivers etc you can find the right system APIs which you then can check & patch.In the case of Enigma you can choose the extra stuff like you want (choose one by one for example) then protect a test file with that + low basic protection and now if got any bad checkup infos message (xy found / sorry can't run file etc) then just start debugging to find the check.Just try this too.
- Just break on RET of VirtualAlloc.- Run- Breakponit will be hit (remove it).- Search on memory for VMXh magic value. 0x564D5868 mind the endianess will be 0x68584D56 so search for it.- You will find two result in memory: 0xA571C5 and 0xA572AD, the first is the right one.- Just overwrite the dword with a choosen value and run.I tried to find the VA using an hardware breakpoint on access on the first result but enigma caught me.If @kao can give a way to understand how to find the VA i am also curious.
Using warez version, crack, warez passwords, patches, serial numbers, registration codes, key generator, pirate key, keymaker or keygen forThe Enigma Protector 7.10 license key is illegal and prevent future development ofThe Enigma Protector 7.10. Download links are directly from our mirrors or publisher's website,The Enigma Protector 7.10 torrent files or shared files from free file sharing and free upload services,including The Enigma Protector 7.10 Rapidshare, MegaUpload, HellShare, HotFile, FileServe, YouSendIt, SendSpace, DepositFiles, Letitbit, MailBigFile, DropSend, MediaMax, LeapFile, zUpload, MyOtherDrive, DivShare or MediaFire,are not allowed!
Your computer will be at risk getting infected with spyware, adware, viruses, worms, trojan horses, dialers, etcwhile you are searching and browsing these illegal sites which distribute a so called keygen, key generator, pirate key, serial number, warez full version or crack forThe Enigma Protector 7.10. These infections might corrupt your computer installation or breach your privacy.The Enigma Protector 7.10 keygen or key generator might contain a trojan horse opening a backdoor on your computer.Hackers can use this backdoor to take control of your computer, copy data from your computer or to use your computer to distribute viruses and spam to other people.
In this tutorial we will describe how to protect simple PowerBuilder application (official site ) against cracking, reverse engineering, disassembling and also we will embed such protection feature as licensing with software protection system Enigma Protector. We recommend to read this tutorial fully and apply all protection settings described there.
Taking everything into consideration, we can say that no developer should go about without tools like The Enigma Protector. It provides a friendly environment in which experience is only a must for several technical details. Provided features cover various application areas so the end result is close to impossible to crack.
Furthemore, the next settings is Check-Up->Virtualization Tools, attacker commonly use virtualization tools such as Virtual Box, VMWare to attack, debug and crack the application, so by using this Check-Up we can detect the most common virtualization tools and exit silently:
In this article we described some, but not all, of the features of Enigma Protector. Enigma Protector is really more flexible and powerful than we described there. If you have confusions with something, have questions or ideas for improvements, please send us email at support@enigmaprotector.com
kg.KeyWithHyphens := true; - allows to add hyphens to the key (example of the key with hyphens 9S7FN3- AHLSFU-9FE929-TPGTQS). kg.PublicKey := '0201B810DA4A1ADD4351378790A98138533067CP4S86R7D8THS45GBCVUM635EPRQRMYRP3DAA5DUPZ6ABDSFP7F5AC' + 'P7ERGH4A7Y6B6NW6NMMBZF83WVER9Y4MMBNLBQDKR7KFVLGLV067CFDQC' + 'WCHGQVVRN24DECEPBL96YJQJTVDCRTNQG3E4WW4GK4GQ5X5L5H88D3XYH' + 'CBRBNASPD3P5CNYFKFHBCSDHHD6WPTCC4XVSM5S88067C2JSTCMVT48C8' + 'HC7SHKGTFJBM28P6XTBCNWHMV6J6KN6W5Q9TQLVR285U6GVCAAUTZLRTP' + 'SRGDQ742B4742XF4MACRR747YDP5FZZ9D'; kg.PrivateKey := '00C98B2SF9UBJA605AJX53GJFXJV8UH4A6PY2L6CV4MAMV7V3ERRVY99Y' + '72V2P77Z2J3KBPGWR3WXKG5GF9Z6CKXJHY5VUMBTQ66H2MRZPCU00DLFJ' + '675JTTTNEK00DLFJ675JTTTNEK'; - Public and Private Keys. These unique keys are placed in the project file. How to extract these keys from project file? Go through the following steps: Open project file in notepad (project file with the .enigma extension). Enigma project file is just xml file with the all necessary settings.
Find there the following branch: EnigmaProject - RegistrationFeatures - Constants. Constants branch contains all necessary unique constants. Now, take a look at the KeyMode parameter (described above), and remember key mode digits. Then, find in Constants branch that describes your KeyMode (for example, if you are using KeyMode = RM_1024 (RSA 1024) then find Mode1024 branch in project file), in the necessary Mode get your Public and Private Keys.
kg.EncryptedConstant := 2113444489; - one more unique constant that is using for encryption/decryption of crypted sections (note: this value has integer type, not a string!). Get it from project file, in EnigmaProject - RegistrationFeatures - Constants branch, EncryptedConstant value. FillChar(key_buf, sizeof(key_buf), #0); - fill out key memory buffer. In this buffer will be placed registration keys. Remember, size of key buffer must be at least 2048 bytes. Of course, size of buffer may be less, it depends on KeyBase and KeyMode, for example, KeyBase = RB_2 and KeyMode = RM_4096 give you a key about 2000 symbols length, but KeyBase = RB_64 and KeyMode = RM_512 - 20 symbols. kg.Key := @key_buf; - set pointer of the key buffer to the key generation struct.kg.KeyLen := sizeof(key_buf); - define a size of the key buffer. If the size of key buffer will be less than required then keygen function will return an error. kg.RegInfo := pointer(ARegistrationName); - set pointer of the registration name buffer. kg.RegInfoLen := length(ARegistrationName); - define a length of registration name buffer in bytes. kg.UseKeyExpiration := false; - if this value if true then generated registration keys should have expiration date. Otherwise key is not time limited.kg.UseHardwareLocking := false; - set it to true if the key is generating for the particular hardware id. In our example key is not locked to hardware id. kg.EncryptedSections[1] := true;kg.EncryptedSections[5] := true; - set the crypted sections that should be decrypted with the current key. dwresult := KG_GenerateRegistrationKey(@kg); - call key generation function. Function returns integer result. if dwresult = EP_NO_ERROR thenbegin Result := pchar(kg.Key);end elsebegin // Generate error message case dwresult of EP_ERROR_UNKNOWN : Result := 'EP_ERROR_UNKNOWN '; EP_ERROR_KEYBUFFEREMPTY : Result := 'EP_ERROR_KEYBUFFEREMPTY '; EP_ERROR_KEYBUFFERISLESS : Result := 'EP_ERROR_KEYBUFFERISLESS '; EP_ERROR_REGINFOEMPTY : Result := 'EP_ERROR_REGINFOEMPTY '; EP_ERROR_REGINFOTOOLARGE : Result := 'EP_ERROR_REGINFOTOOLARGE '; EP_ERROR_PRIVATEKEYISNOTSET : Result := 'EP_ERROR_PRIVATEKEYISNOTSET '; EP_ERROR_PUBLICKEYISNOTSET : Result := 'EP_ERROR_PUBLICKEYISNOTSET '; EP_ERROR_PRIVATEKEYISINVALID : Result := 'EP_ERROR_PRIVATEKEYISINVALID '; EP_ERROR_PUBLICKEYISINVALID : Result := 'EP_ERROR_PUBLICKEYISINVALID '; EP_ERROR_KEYMODEISINVALID : Result := 'EP_ERROR_KEYMODEISINVALID '; EP_ERROR_KEYBASEISINVALID : Result := 'EP_ERROR_KEYBASEISINVALID '; EP_ERROR_CURRENTDATEISINVALID : Result := 'EP_ERROR_CURRENTDATEISINVALID '; EP_ERROR_EXPIRATIONDATEISINVALID : Result := 'EP_ERROR_EXPIRATIONDATEISINVALID'; EP_ERROR_KEYISINVALID : Result := 'EP_ERROR_KEYISINVALID '; EP_ERROR_HARDWAREID : Result := 'EP_ERROR_HARDWAREID '; EP_ERROR_HARDWAREBUFFEREMPTY : Result := 'EP_ERROR_HARDWAREBUFFEREMPTY '; EP_ERROR_HARDWAREIDINVALIDFORKEY : Result := 'EP_ERROR_HARDWAREIDINVALIDFORKEY'; EP_ERROR_PROJECTFILENOTFOUND : Result := 'EP_ERROR_PROJECTFILENOTFOUND '; EP_ERROR_INVALIDPROJECTFILE : Result := 'EP_ERROR_INVALIDPROJECTFILE '; else Result := 'Unknown error';end; - get an error code, if there is not any error, key generating fucntion returns EP_NO_ERROR value and kg.Key buffer contains generated key.
function Enigma_GenerateRegistrationKey(ARegistrationName : string) : string; var kg : TKeyGenParams; key_buf : array [0..2047] of char; dwresult : Cardinal; begin // Clear buffer FillChar(kg, sizeof(kg), #0); // Get this information from your project file kg.KeyWithHyphens := true; // Clear key buffer FillChar(key_buf, sizeof(key_buf), #0); kg.Key := @key_buf; // Set key buffer size kg.KeyLen := sizeof(key_buf); // Set registration user info kg.RegInfo := pointer(ARegistrationName); kg.RegInfoLen := length (ARegistrationName); // Use key expiration kg.UseKeyExpiration := true; kg.ExpirationYear := 2010; kg.ExpirationMonth := 1; kg.ExpirationDay := 1; // Do not use hardware id kg.UseHardwareLocking := false; // This key should decrypt #2 and #6 sections kg.EncryptedSections[1] := true; kg.EncryptedSections[5] := true; dwresult := KG_GenerateRegistrationKeyFromProject('project.enigma', @kg); if dwresult = EP_NO_ERROR then begin Result := pchar(kg.Key); end else begin // Generate error message case dwresult of EP_ERROR_UNKNOWN : Result := 'EP_ERROR_UNKNOWN '; EP_ERROR_KEYBUFFEREMPTY : Result := 'EP_ERROR_KEYBUFFEREMPTY '; EP_ERROR_KEYBUFFERISLESS : Result := 'EP_ERROR_KEYBUFFERISLESS '; EP_ERROR_REGINFOEMPTY : Result := 'EP_ERROR_REGINFOEMPTY '; EP_ERROR_REGINFOTOOLARGE : Result := 'EP_ERROR_REGINFOTOOLARGE '; EP_ERROR_PRIVATEKEYISNOTSET : Result := 'EP_ERROR_PRIVATEKEYISNOTSET '; EP_ERROR_PUBLICKEYISNOTSET : Result := 'EP_ERROR_PUBLICKEYISNOTSET '; EP_ERROR_PRIVATEKEYISINVALID : Result := 'EP_ERROR_PRIVATEKEYISINVALID '; EP_ERROR_PUBLICKEYISINVALID : Result := 'EP_ERROR_PUBLICKEYISINVALID '; EP_ERROR_KEYMODEISINVALID : Result := 'EP_ERROR_KEYMODEISINVALID '; EP_ERROR_KEYBASEISINVALID : Result := 'EP_ERROR_KEYBASEISINVALID '; EP_ERROR_CURRENTDATEISINVALID : Result := 'EP_ERROR_CURRENTDATEISINVALID '; EP_ERROR_EXPIRATIONDATEISINVALID : Result := 'EP_ERROR_EXPIRATIONDATEISINVALID'; EP_ERROR_KEYISINVALID : Result := 'EP_ERROR_KEYISINVALID '; EP_ERROR_HARDWAREID : Result := 'EP_ERROR_HARDWAREID '; EP_ERROR_HARDWAREBUFFEREMPTY : Result := 'EP_ERROR_HARDWAREBUFFEREMPTY '; EP_ERROR_HARDWAREIDINVALIDFORKEY : Result := 'EP_ERROR_HARDWAREIDINVALIDFORKEY'; EP_ERROR_PROJECTFILENOTFOUND : Result := 'EP_ERROR_PROJECTFILENOTFOUND '; EP_ERROR_INVALIDPROJECTFILE : Result := 'EP_ERROR_INVALIDPROJECTFILE '; else Result := 'Unknown error'; end; end;end; Download sources