Exetools  

Go Back   Exetools > General > General Discussion

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 11-18-2004, 23:54
djneo
 
Posts: n/a
Thank you for your answers.

I'm going to add somethings.

0041901F |> 8B4C24 14 /MOV ECX,DWORD PTR SS:[ESP+14]
This line put 4Ch in ECX, it's a constant.

00419023 |> 8D441C 20 LEA EAX,DWORD PTR SS:[ESP+EBX+20]
00419027 |. 0FB63C08 |MOVZX EDI,BYTE PTR DS:[EAX+ECX]
This lines take a byte in list of 16 bytes which are used in this algo.

After this code there is others loops but for me, it's this algo the first problem.
I don't understand how to reverse it because it use bytes together.

P.S. Peid find CRC32b.
Reply With Quote
  #2  
Old 11-19-2004, 04:16
dyn!o's Avatar
dyn!o dyn!o is offline
Friend
 
Join Date: Nov 2003
Location: Own mind
Posts: 214
Rept. Given: 1
Rept. Rcvd 1 Time in 1 Post
Thanks Given: 8
Thanks Rcvd at 0 Times in 0 Posts
dyn!o Reputation: 1
The fragment you posted doesn't calculate CRC32. If PEID has detected its signature then it should give you the reference offset (address) too. Compare the referenced address with the listing area and if it doesn't mach (it shouldn't indeed) then just disassemble the referenced pointer and verify if it's not a mistake or fake signature.

I will repeat the following suggestion: put a breakpoint on 0x419065, take ECX as the late data pointer and substract few bytes (76 decimal? strange value... or maybe its multiplicity? that would give you at least even value) - you should see the result of discussed loop and then I suggest to put a memory access breakpoint on the first byte of the result. You should be a step ahead from revealing the "secret" (or maybe am I dreaming? ).

If you won't try - you don't win.

Good luck and regards.

Last edited by dyn!o; 11-19-2004 at 04:21.
Reply With Quote
  #3  
Old 11-19-2004, 20:57
djneo
 
Posts: n/a
I don't understand what you want I do.
I know what the algo do but I don't know how to reverse it.

I converted it in pseudo code, if it can help someone.

byte origine array [8];
byte final array [17];
int cpt1,cpt2,cpt3,cpt4;

for (cpt1=0;cpt1<8;cpt1++)
{
carac = origine[cpt1];
cpt4 = 0 ;
for (cpt2=0;cpt2<8;cpt2++)
{
carac2 = origine[cpt2];
carac2 = carac * carac2;
cpt3 = cpt4;
while(carac2!=0)
{
carac2 = carac2 + resultat[cpt3] ;
resultat[cpt3] = carac2 % 100 ;
carac2 = carac2 div 100 ;
cpt3++ ;
}
cpt4++;
}
}
Reply With Quote
  #4  
Old 11-20-2004, 00:08
dyn!o's Avatar
dyn!o dyn!o is offline
Friend
 
Join Date: Nov 2003
Location: Own mind
Posts: 214
Rept. Given: 1
Rept. Rcvd 1 Time in 1 Post
Thanks Given: 8
Thanks Rcvd at 0 Times in 0 Posts
dyn!o Reputation: 1
"I know what the algo do"
That's strange because in the first post you have written:

"Someone recognize this algo and it is possible to reverse it?"
So it looks you don't know (at least for me).

I suggested you to recognize it first, but now you amazed me totally by writting the pseudo code + claiming you "recognize this algo" and at the same time.... asking for help. I'm a little bit lost. You know what does the algorithm do and you don't know how to "reverse it"?

Regards.

Last edited by dyn!o; 11-20-2004 at 00:10.
Reply With Quote
  #5  
Old 11-22-2004, 00:39
djneo
 
Posts: n/a
Ok, I will try to clear up my problem.
I know what the algo do since that I succeeded in transcribing it in pseudo code. But I do not see how to reverse it.
How to recover the bytes of "origine" starting from the bytes of "resultat".
Do you inderstand what I say?
Sorry not to be very clear.
Reply With Quote
  #6  
Old 11-25-2004, 00:00
taos's Avatar
taos taos is offline
The Art Of Silence
 
Join Date: Aug 2004
Location: In front of my screen
Posts: 580
Rept. Given: 65
Rept. Rcvd 54 Times in 19 Posts
Thanks Given: 69
Thanks Rcvd at 137 Times in 36 Posts
taos Reputation: 54
carac2 = carac2 + resultat[cpt3] ;
????
the original value of resultat[cpt3] is...?
You can try with simple values to test how it works.
Reply With Quote
  #7  
Old 11-25-2004, 00:50
Michel Michel is offline
Friend
 
Join Date: Sep 2004
Location: France
Posts: 66
Rept. Given: 2
Rept. Rcvd 6 Times in 1 Post
Thanks Given: 0
Thanks Rcvd at 1 Time in 1 Post
Michel Reputation: 6
Don't you think the while-loop may become infinite ?

Nevertheless I sujest you, if you want reverse only few values, to write a bruteforce loop comparing the result with the value you want to reverse.
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
Help identify crypto The Old Pirate General Discussion 5 12-27-2014 04:15


All times are GMT +8. The time now is 22:11.


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