View Single Post
  #1  
Old 05-12-2006, 07:27
Fade
 
Posts: n/a
Modifying programs to use more than one copy at a time.

Some programs like for example MSN only allow you to run one instance of itself at a time. I wanted to try and crack MSN for practice to see if I could run more than one instance of it.

I assumed it would create a mutex and when I load MSN into Olly and search for all intermodular calls I see that there are several calls to CreateMutexA, I thought maybe by NOP'ing out the correct one it wouldn't create the mutex and then I could run as many instances as I like. Firstly I don't know which is the correct mutex, or what the other mutex's are for. Also if I NOP them all msn doesn't run, I thought that it would cause some problem but I wanted to try it anyway

So I was looking at some source and I saw that when you create a mutex you call GetLastError() and look to see what it returns so you know if it is currently running or not. But when I looked through the intermodular calls I couldn't see any references to GetLastError :P
I thought if I could find it maybe I could look at where it checks the return and compares it and maybe edit the je/jz to jne/jnz but as I said I couldn't find the GetLastError so I couldn't find where it checks the return :P

I am not asking for somebody to give me the answer, because I want to learn for myself, but I am stuck and have no idea what to do so if anybody can give me some hints that would be great

-------------------------------------------------
Okay I was just about to post this and decided to compile my own code with GetLastError() it seems that the intermodular call for it is RtlGetLastWin32Error the reason I couldn't see it is because I was looking for the wrong thing. After looking now I see that a lot in Olly.

Well from here I am stuck again. Out of all the CreateMutex's there is one which is right above a GetLastError so I think that may be the one I have tried a few things but have had no luck.

If anybody can help that would be great.
Reply With Quote