hm.. detta är en jävla massa text faktiskt.. men ja orka inte leta servrar.. och för och kunna connecta internt localhost.. så gjorde jag såhär.. problemet för mig var att man inte kunde starta ventrilo två gånger! hur ska man då kunna connecta upp till 8 limiten? well.. det är löst nu.. ska kika vidare imorn.. läs å ta del så kanske vi löser detta nångång
00428311 > 389E 09080000 CMP BYTE PTR DS:[ESI+809],BL < eax = 1
00428317 . 75 61 JNZ SHORT Ventrilo.0042837A < oops, eax är inte 0 alltså multi instances
00428311 blir hoppad till från 00428293 och den ser ut såhär..
00428293 . 7D 7C JGE SHORT Ventrilo.00428311
00403695 > 8B5D 0C MOV EBX,DWORD PTR SS:[EBP+C] < steppar lite.. eax är fortfarande 0 här..
00403698 . 3BDA CMP EBX,EDX < ojdå, ebx blev 1, den lär ju hamna i eax senare antar jag.
004036D2 . 0F83 09010000 JNB Ventrilo.004037E1 < några steg ner.. edx är också 1 nu.. några steg till och den är 0 igen..
sen händer de lite fram och tillbaka på 1-0 på edx, ebx.. så jag satte en break längre ner.. här..
0042825F . 68 54BA4A00 PUSH Ventrilo.004ABA54 ; ASCII " -"
0042827A . 894C24 0C MOV DWORD PTR SS:[ESP+C],ECX < ecx blir 1 från 0
00428291 > 3BC8 CMP ECX,EAX < eax 1 ebx 1
00428293 . 7D 7C JGE SHORT Ventrilo.00428311 < ja då hoppar vi.. så var vi vid 00428311 igen..
vad har vi då lärt oss
jo, vi startar om.. sätter in break på.. och kollar lite mera noggrant..
0042825F . 68 54BA4A00 PUSH Ventrilo.004ABA54 ; ASCII " -"
igång igen..
0044F5F0 . 85C9 TEST ECX,ECX < ecx 0
0044F5F2 . 75 12 JNZ SHORT Ventrilo.0044F606 < hoppar inte
00428275 . B9 01000000 MOV ECX,1 < okej, tack..
framme vid.. igen..
00428311 > 389E 09080000 CMP BYTE PTR DS:[ESI+809],BL
så vi stänger ner den andra instansen.. startar om här i olly.. break på ASCII " -"
och även på 00428320 . FF15 30534A00 CALL DWORD PTR DS:[<&KERNEL32.CreateMute>; \CreateMutexA
och även på denna.. 00428326 . 3BC3 CMP EAX,EBX bara för att efter vi kommer ut så vill vi den ska bryta direkt..
00428326 . 3BC3 CMP EAX,EBX < det gjorde den.. eax 140
00428343 > FF15 10534A00 CALL DWORD PTR DS:[<&KERNEL32.GetLastError>] ; [GetLastError < in i kernel32
KERNEL32
7600812F 8B40 34 MOV EAX,DWORD PTR DS:[EAX+34] < eax blir 0
jaha, var är skillnaden då.. nollställer.. upp med andra instansen.. sen starta igen.. med samma breaks..
00428326 . 3BC3 CMP EAX,EBX < hm eax är 12C här nu..
KERNEL32
7600812F 8B40 34 MOV EAX,DWORD PTR DS:[EAX+34] så blev den B7
och ut ur kernel32..
00428343 > FF15 10534A00 CALL DWORD PTR DS:[<&KERNEL32.GetLastError>] ; [GetLastError
00428349 . 3D B7000000 CMP EAX,0B7
0042834E . 75 13 JNZ SHORT Ventrilo.00428363
00428350 . 53 PUSH EBX
00428351 . 53 PUSH EBX
00428352 . 68 D4B94A00 PUSH Ventrilo.004AB9D4 ; ASCII "Another copy of Ventrilo is already running."
okej, då vet vi mer..
okej.. vi vet vad som krävs.. steppa in i en jävla massa calls.. få eax bli 140 när den kommer ut ur KERNEL32.. blah blah.. men orkar inte kolla igenom så mkt mer såhär sent.. så vi provar vidare..
00428319 68 38BA4A00 PUSH Ventrilo.004ABA38 ; ASCII "Ventrilo_Multiple_Instance"
patchar > E9 00000000 (alltså.. jump till nästa instruktion, snyggare än NOP's

eller hur?)
och eax är 140 som den skall vara..
.. nu crashar det på en access violation.. eax är nu 8..
004286B2 . F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX ; LOCK prefix
okej, inte hittat så mkt intressant än.. men det är bara början.. varför jag kollat det såhär.. är att även vid sk. ovesäntliga partier.. kan man få reda på saker som reg. nycklar eller användbar info etc. nu får vi göra på de enkla sättet..
DET ROLIGA
00428349 . 3D B7000000 CMP EAX,0B7
0042834E 75 13 JNZ SHORT Ventrilo.00428363 < EB här
00428350 . 53 PUSH EBX
00428351 . 53 PUSH EBX
00428352 . 68 D4B94A00 PUSH Ventrilo.004AB9D4 ; ASCII "Another copy of Ventrilo is already running."
00428357 . E8 F7ED0600 CALL Ventrilo.00497153
0042835C . 6A 01 PUSH 1
0042835E . E8 4A410500 CALL Ventrilo.0047C4AD < eftersom eax fortfarande är B7 så kommer det skita sig vid nästa compare..
nu kanske man tänker.. ah, men bara sätta EB här under.. så vi slipper "Unknown error".. well, not good! vad händer när det inte är två instanser av ventrilio och vi slutar upp här och ändå tar hoppet? antar de skiter sig.. så vi löser de såhär..
kolla noga på 00428365 den hoppar till 0042837A. ok, så om vi tar våran 0042834E EB och gör så den hoppar till 0042837A så ska de lösa sig..
00428363 > 3BC3 CMP EAX,EBX
00428365 . 74 13 JE SHORT Ventrilo.0042837A
00428367 . 53 PUSH EBX
00428368 . 53 PUSH EBX
00428369 . 68 A8B94A00 PUSH Ventrilo.004AB9A8 ; ASCII "Unknown error detecting previous instance."
ta bort alla breakpoints.. sätt en break på 00428349.. starta om..
vi får en break..
0042834E 75 13 JNZ SHORT Ventrilo.00428363 < EB2A här för att hoppa till. 0042837A
wow.. det startar
spara ner exen i olly.. lr en hexeditor.. offset 2834E.. EB2A
flyter på.. mm.. massa connects.. all slots currently full.. tja.. de blir morgonens problem.. ursäkta stavfel.. rätt sliten.. men lättare nu när man kan jobba lokalt.. hehe