SuperCali
October 1st, 2001, 16:22
Hello,
Well done one target found the next, although it seems to be much harder :|. I am looking at the delphi target Muzicman 4.0 Build 909. The problem is I have no idea what to breakpoint to get close to the serial routine as the normal breakpoints don't work. There is no confirmation/acknowledgement of either wrong or right code to break on. I have also tried breaking on for example createfilea to see when it checks the license file (which I don't have) but no luck, I kinda get lost tracing routines that seem to have little to do with the license. Aslo alot of problems with the program crashing when certain bytes are patched. I would appreciate any help.
// SuperCali
The Philosopher
October 1st, 2001, 23:48
Quote:
Originally posted by SuperCali
Hello,
Well done one target found the next, although it seems to be much harder :|. I am looking at the delphi target Muzicman 4.0 Build 909. The problem is I have no idea what to breakpoint to get close to the serial routine as the normal breakpoints don't work. There is no confirmation/acknowledgement of either wrong or right code to break on.
// SuperCali |
Hi
Did you try to use DaFixer's DeDe. If not try it. Everything is easier.
ftp.balbaro.com
Last version is 3.00b
Solomon
October 2nd, 2001, 04:55
The version in its web site is different: V4.0 Build 930.
h**p://w*w.muzicman.com/code/mzminstall.exe
Seems that this one can't be registered coz it will ALWAYS show "unregistered version" in its splash form(read the following code). I can't find where to enter the so-called serial number
Decompress it with UPX, then use DeDe to get the asm list:
procedure TSplashForm.FormShow(Sender: TObject);
begin
{
0052B074 push ebp
0052B075 mov ebp, esp
0052B077 push $00
0052B079 push $00
0052B07B push ebx
0052B07C mov ebx, eax
0052B07E xor eax, eax
0052B080 push ebp
* Possible String Reference to: 'ér‡íÿëë[YY]Ã'
|
0052B081 push $0052B0FD
***** TRY
|
0052B086 push dword ptr fs:[eax]
0052B089 mov fs:[eax], esp
* Possible String Reference to: 'Unregistered Version '
|
0052B08C push $0052B114
0052B091 lea eax, [ebp-$08]
0052B094 push eax
0052B095 mov eax, dword ptr [$572A6C]
0052B09A mov eax, [eax]
SuperCali
October 2nd, 2001, 07:25
First of all I'd like to say that the version I have is Build 925 or 927. See according to the site when I downloaded it said version 927, the program says 925 so I am unsure. There is a registration box under settigns, registration.
Well I've looked some more at teh target and it seems rather strange!? Once decompiled in IDA I found several references like "Please register etc" and a "entered serial number", howevere I can't find any place where these functions could be called from. I did however find one interesting function:
test eax, 80000000h
setz al
ret
at rva 40f1a5. However chaning this to for example setne crashes the program with wome strange error after inisilization. I would be willing to bet my right hand that it crashes due to some CRC like check, becuase the error message is something like, before the program terminates:
"Exception EOIeSystemErrror in module muzicman at 1152a5. The operation completed successfully. "
Also I found two routines called readownerkey and writeownerkey (in DeDe) which call the following code:
push ebp
CODE:00557205 mov ebp, esp
CODE:00557207 add esp, 0FFFFFEE0h
CODE:0055720D push ebx
CODE:0055720E xor edx, edx
CODE:00557210 mov [ebp+var_120], edx
CODE:00557216 xor eax, eax
CODE:00557218 push ebp
CODE:00557219 push offset loc_5572DC
CODE:0055721E push dword ptr fs:[eax]
CODE:00557221 mov fs:[eax], esp
CODE:00557224 push 1 ; uMode
CODE:00557226 call SetErrorMode
CODE:0055722B mov [ebp+uMode], eax
CODE:0055722E xor eax, eax
CODE:00557230 push ebp
CODE:00557231 push offset loc_5572BC
CODE:00557236 push dword ptr fs:[eax]
CODE:00557239 mov fs:[eax], esp
CODE:0055723C mov eax, ds:dword_574808
CODE:00557241 mov bl, [eax]
CODE:00557243 mov [ebp+VolumeNameBuffer], 0
CODE:0055724A push 0 ; nFileSystemNameSize
CODE:0055724C push 0 ; lpFileSystemNameBuffer
CODE:0055724E lea eax, [ebp+FileSystemFlags]
CODE:00557251 push eax ; lpFileSystemFlags
CODE:00557252 lea eax, [ebp+MaximumComponentLength]
CODE:00557255 push eax ; lpMaximumComponentLength
CODE:00557256 lea eax, [ebp+VolumeSerialNumber]
CODE:00557259 push eax ; lpVolumeSerialNumber
CODE:0055725A push 105h ; nVolumeNameSize
CODE:0055725F lea eax, [ebp+VolumeNameBuffer]
CODE:00557265 push eax ; lpVolumeNameBuffer
CODE:00557266 lea eax, [ebp+var_120]
CODE:0055726C mov edx, ebx
CODE:0055726E call sub_404024
CODE:00557273 lea eax, [ebp+var_120]
CODE:00557279 mov edx, offset loc_5572F4
CODE:0055727E call sub_404104
CODE:00557283 mov eax, [ebp+var_120]
CODE:00557289 call sub_4042C0
CODE:0055728E push eax ; lpRootPathName
CODE:0055728F call GetVolumeInformationA
CODE:00557294 test eax, eax
CODE:00557296 jz short loc_5572A0
CODE:00557298 mov eax, [ebp+VolumeSerialNumber]
CODE:0055729B mov [ebp+var_4], eax
CODE:0055729E jmp short loc_5572A5
CODE:005572A0 ; ---------------------------------------------------------------------------
CODE:005572A0
CODE:005572A0 loc_5572A0: ; CODE XREF: sub_557204+92j
CODE:005572A0 xor eax, eax
CODE:005572A2 mov [ebp+var_4], eax
CODE:005572A5
CODE:005572A5 loc_5572A5: ; CODE XREF: sub_557204+9Aj
CODE:005572A5 xor eax, eax
CODE:005572A7 pop edx
CODE:005572A8 pop ecx
CODE:005572A9 pop ecx
CODE:005572AA mov fs:[eax], edx
CODE:005572AD push offset loc_5572C3
CODE:005572B2
CODE:005572B2 loc_5572B2: ; CODE XREF: CODE:005572C1j
CODE:005572B2 mov eax, [ebp+uMode]
CODE:005572B5 push eax ; uMode
CODE:005572B6 call SetErrorMode
CODE:005572BB retn
If one nop's out the seterror code functions one can change the code inbetween otherwise not. Interestingly ther is a function called checkownerkey at 557188 but it is not called from anywhere in the program taht I can find!? The unregistered version from teh spalsh can be removed by changing 52630c to c3 btw. Well this is how far I have come until now, but I would really need some help as I am completely stuck at the moment. Thanks for all the ideas.
// SuperCali
SuperCali
October 2nd, 2001, 07:33
Quote:
Originally posted by Solomon
The version in its web site is different: V4.0 Build 930.
h**p://w*w.muzicman.com/code/mzminstall.exe
Seems that this one can't be registered coz it will ALWAYS show "unregistered version" in its splash form(read the following code). I can't find where to enter the so-called serial number
|
Hello there is a registration box under settign in the program. Click the > (play icon looking button) at the bottom of the vertical row of five icons in the middle of the app, then settings and you'll see it.
// SuperCali
Solomon
October 2nd, 2001, 11:52
strange
I have not figure out where the reg key is stored
Used RegMon, but no luck
And also used CreateFileA & GetPrivateProfileStringA, nothing found
Checked all the references to TSettingsForm::KeyEntry(which is a EditBox), no luck yet.
This prog saves the reg key to EventLog.txt, but never read it out when it launches.
SuperCali
October 2nd, 2001, 12:23
My problem too, I can't find where it stores the key, or the function to compare the key! When one looks in DeDe at the function checkownerkey it simply points to some function which as far as I can tell never is called

!? I cracked some previous versions of the app by simply disabling the protection features ( back then it only displayed a message and paused your playlist after a "random" amount of time, it was a simple patch of say 3-4 bytes along with one c3 for the check routine that crashed the program). Now the protection however is completely diffirent, but I'm not giving up till this baby is history

!!!
B.t.w. there is a function that is called twice during execution, once rigth at the beginning, and once right at the end in which it displays the not regged limit 400 database message (555958). There is a point there when it sleeps, why does it call sleep at that point (5559c5)? Also the answer might lie in the database file. From what I gather the program uses .dbt ending for non-registerd users and .db for registered ones, I'm gonna look into that some more. Well back to work, see if I can't get past it.
// SuperCali
Powered by vBulletin® Version 4.2.2 Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.