Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 03-03-2009, 23:07
crkelbery
 
Posts: n/a
the big call >> mov eax,01 ret

Hi!
Most of people knows that a lot apps has an important call that the program uses at start up and during the registration routine. A simple mov eax,1 ret solves it,....nothing new.
Recently i've had fun (and got won,too) with an app called word2picture. It's protected by execryptor and its classical big call hides his code with tones of loops, decrypts,bla,bla..which made me give up. I know that the piece of cake is there...but you get absolutely tired looking for the two lines of code that really matters. I was wondering if there is a magical way to find it.

PS: i'm not interested at all in getting a crack for this app. When I want an image from a doc file, i save as... web page and take the jpg file directly.
Reply With Quote
  #2  
Old 03-04-2009, 07:33
pp2 pp2 is offline
Friend
 
Join Date: Jan 2002
Posts: 60
Rept. Given: 1
Rept. Rcvd 2 Times in 2 Posts
Thanks Given: 1
Thanks Rcvd at 16 Times in 12 Posts
pp2 Reputation: 2
Seems, that you need to patch (inline) and/or emulate Execryptor API, which is used to check registration, if program author have no more checks by its own code? Sometimes it is not just "mov eax, 1/retn" to bypass. What will you do, if some useful code is ciphered? It is impossible to reconstruct it without having a key, and even bypassing validation check will execute ciphered code and end with an unhandled exception.

Sure, all these tones of checks, loops, cipherings, virtual machines are intended to impede your work to find this magic code! But how you will be sure, that any program will get registered patching somewhere jne/je to jmp (or setting some variable to 0 or 1)?
Reply With Quote
The Following User Gave Reputation+1 to pp2 For This Useful Post:
  #3  
Old 03-04-2009, 14:39
emery
 
Posts: n/a
The simple compares only exist if the author wrote their code in this fashion

poor, but basic example:

global registered = false; //reference throughout code

doSerialCheck(){
.....
if(all_checks_passed) registered = true;

}

If for instance a hash is always compared or some other method is used then this simple move-and-compare-boolean check no longer really exists. Granted you can typically always reduce a patch to something very small or similar in nature but I think you see my point.

Cheers
Reply With Quote
The Following User Gave Reputation+1 to For This Useful Post:
  #4  
Old 03-21-2009, 06:40
leosmi05 leosmi05 is offline
Friend
 
Join Date: Feb 2005
Posts: 26
Rept. Given: 0
Rept. Rcvd 0 Times in 0 Posts
Thanks Given: 0
Thanks Rcvd at 0 Times in 0 Posts
leosmi05 Reputation: 0
Wink Just another idea

Maybe you could try to patch the file and let it make all the decrypting and CRC checking on a backup of the original file. This way it would bypass some tricky decompressing routines which are using the calculated CRC to generate decompressed code.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Call Recorder for Android mdj General Discussion 18 12-11-2019 12:07
UnPack.cn call to vote b30wulf General Discussion 8 08-26-2015 00:34
members roll call Rhodium General Discussion 4 05-04-2005 17:48
Fixing an EXE to not call a DLL? Barry General Discussion 11 06-03-2004 00:37


All times are GMT +8. The time now is 23:36.


Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX, chessgod101
( Since 1998 )