Guitar FX BOX 2.6
:0041A384 C1E005 shl eax, 05 <-- 05? maybe 4.59 Min.
:0041A387 03C2 add eax, edx
:0041A389 F6401001 test [eax+10], 01 <-- press Start
:0041A38D 7428 je 0041A3B7
:0041A38F 8B0DC8C75500 mov ecx, dword ptr [0055C7C8]
:0041A395 E876FBFFFF call 00419F10 <-- continue process
:0041A39A A1C8C75500 mov eax, dword ptr [0055C7C8]
:0041A39F 40 inc eax
:0041A3A0 99 cdq
once we're on 00419F10 there's alot of piece of code which i think
it handles the sounds process... please correct me anytime if i'm
mistaken.. i'm here to learn more and correct my mistakes...
continuing..
check a little the big piece code.. and go down until you get to
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041A0AD(C), :0041A0DB(U), :0041A124(U), :0041A16A(U)
|
:0041A17D 8B4DF8 mov ecx, dword ptr [ebp-08]
:0041A180 E80BF5FFFF call 00419690 <- let's go here
on 00419690 continue reading the sound process and there alittle cmp
which compares a virtual (rva) location with 05 which mean our target
dosen't read 4 minutes exactly as it says.. i think it reads 4.59 minutes... go to 00419690 and read a little until you see this:
:00419713 890DD4C75500 mov dword ptr [0055C7D4], ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004196F6(C)
|
:00419719 833DD4C7550005 cmp dword ptr [0055C7D4], 00000005 <<-- compare minutes here
:00419720 7C51 jl 00419773 <-- if 5 minutes passed jumps-|
:00419722 C705506D550001000000 mov dword ptr [00556D50], 00000001 |
:0041972C 833D6CC7550000 cmp dword ptr [0055C76C], 00000000 |
:00419733 740D je 00419742 |
:00419735 8B0D94C75500 mov ecx, dword ptr [0055C794] |
:0041973B E8E02DFFFF call 0040C520 |
:00419740 EB12 jmp 00419754 |
|
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |
|:00419733(C) |
| |
:00419742 8B1588645500 mov edx, dword ptr [00556488] |
:00419748 8B02 mov eax, dword ptr [edx] |
:0041974A 8B0D88645500 mov ecx, dword ptr [00556488] |
:00419750 51 push ecx |
:00419751 FF5048 call [eax+48] |
|
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |
|:00419740(U) |
| |
:00419754 8B1518C75500 mov edx, dword ptr [0055C718] <----------- jumps here
:0041975A 8955EC mov dword ptr [ebp-14], edx
:0041975D 6A00 push 00000000
:0041975F 6A00 push 00000000
:00419761 6865040000 push 00000465
:00419766 8B45EC mov eax, dword ptr [ebp-14]
:00419769 8B481C mov ecx, dword ptr [eax+1C]
:0041976C 51 push ecx
* Reference To: USER32.PostMessageA, Ord:01DEh
|
:0041976D FF15D0D44400 Call dword ptr [0044D4D0] <-- our nag message comes here
if we make jmp on 00419720 you'll note if won't give any nag and will keep working but somehow it will stop and you'll note the level meter will stop and will give you a bluescreen fatal error after 2 or 3 more minutes , the system says to pressed any key and bye bye program.. i wonder if there's still another check for this maybe a cmp? because i also have tried all time related possible solutions and still not luck
the only possible compare i found for this is the above one but i guess there's something more
somewhere... i'll hope i'm missing something. another thing is that the nag about the 4 minutes limit looks like a messageboxa.. if you do bpx messageboxa sice will break when the 4.. minutes are over.. the messageboxa comes from 0041FF74 i don't see there any cmp or way to skip it it looks that first call USER32.PostMessageA while tracing a little just before the limit is over
and exactly the message comes from 0041976D then the messageboxa shows up .
i got this code where the messageboxa comes from :
:0041FF6D 8D05C0E94100 lea eax, dword ptr [0041E9C0] <-- read here, there's a C3 only
:0041FF73 50 push eax
:0041FF74 FF2538545500 jmp dword ptr [00555438] <<--- Messageboxa here
:0041FF7A 5F pop edi
:0041FF7B 5E pop esi
:0041FF7C 5B pop ebx
:0041FF7D 8BE5 mov esp, ebp
:0041FF7F 5D pop ebp
:0041FF80 C20800 ret 0008
to skip the nag message i did change push (55) for C3 at the begin of that piece of code on
0041FEB0, but it won't make any change.. it only remove the messageboxa
if i increment value on cmp dword ptr [0055C7D4], 00000005 for
cmp dword ptr [0055C7D4], 00000009 i guess it should read 9 = minutes in this case ?
while tracing alittle bit more.. while the program process the sounds looks it read locations
between 0041BFDC & 0041BED7 there's a loop and i think that maybe there's the function where it stops the sound processing. "i'm not sure" i wonder what exactly KERNEL32.SleepEx does
because there are many references about it there..
is there a way to make it loop so we won't have to press manually start each time 4 minutes has passed ? like simule we have pressed "Start" after 4 minutes has passed. any ideas which bpx should i set to catch where exactly the sound processing stops?.. you can note it when the level meter stops responding.. that's a good sign. i tried closehandle but nothing happends.
Any tips, complaints or possible help is welcome to resolve the time limit mistery of this program.