2007-03-17, 17:12
  #25
Medlem
seb-s avatar
Just nu kan jag också ansluta till Ventrilo servern med 9 klienter, men den 10:e får aldrig något ID verkar det som. Den är ansluten, men den varken får kanalinformationen från servern eller något annat. Letar vidare...
Citera
2007-03-17, 17:18
  #26
Bannlyst
Citat:
Ursprungligen postat av seb-
Just nu kan jag också ansluta till Ventrilo servern med 9 klienter, men den 10:e får aldrig något ID verkar det som. Den är ansluten, men den varken får kanalinformationen från servern eller något annat. Letar vidare...

Breakpoints
00404324 VENTRI~1 Always PUSH EAX
004043F6 VENTRI~1 Always TEST AL,AL
004044F2 VENTRI~1 Always PUSH VENTRI~1.0042D348

sätt dessa bp's.. logga sen in med den 9e och sen den 10e.. se skillnaden.. det jag funnit är att man är accpeted och skit innan den spottar ut login id't.. bara kolla där waven spelas upp.. just nu håller jag på att spåra utifrån dessa lite djupare.. för den CMP EAX,9 häromkring.. och efter det är det en MOV eller nåt som flyttar till ett ställe i minnet.. hade den förut med en memory breakpoint.. ska försöka hitta den igen

*edit*
kan tillägga att du kan patcha så den hoppar över server limit 9 pers.. men man får ju inget login id.. som du sa.. så jag tror man kan skippa det.. man ska hålla ögonen öppna där vid ASCII server limit blah blah.. och sen kolla vad som händer när den kommer ner till dessa breakpoints jag skrev.. e lite jobbigt när man får logga ur med den 9e och in igen hela tiden när man ska jämföra nr 10.. men vafan.. ska fixa dehär..
Citera
2007-03-17, 18:26
  #27
Medlem
seb-s avatar
Kod:
004153B0   $ 8A4424 08      MOV AL,BYTE PTR SS:[ESP+8]
004153B4   . 84C0           TEST AL,AL
004153B6   . A1 DC604300    MOV EAX,DWORD PTR DS:[4360DC]
004153BB   . 74 0B          JE SHORT ventrilo.004153C8
004153BD   . 83F8 08        CMP EAX,8 <-----
004153C0     7C 0F          JL SHORT ventrilo.004153D1
004153C2   . B8 FEFFFFFF    MOV EAX,-2
004153C7   . C3             RETN
004153C8   > 83F8 09        CMP EAX,9 <-----
004153CB     72 04          JB SHORT ventrilo.004153D1
004153CD   . 83C8 FF        OR EAX,FFFFFFFF
004153D0   . C3             RETN
004153D1   > 8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
004153D5   . 890C85 B860430>MOV DWORD PTR DS:[EAX*4+4360B8],ECX
004153DC   . A1 DC604300    MOV EAX,DWORD PTR DS:[4360DC]
004153E1   . 40             INC EAX
004153E2   . A3 DC604300    MOV DWORD PTR DS:[4360DC],EAX
004153E7   . 33C0           XOR EAX,EAX
004153E9   . C3             RETN

Notera hur den vid 004153DC ökar på den globala variabeln i minnet (4360DC) som håller antalet anslutna klienter... det skumma är att EAX håller 9 även när jag ansluter med den 10:e klienten. Så det finns något hinder kvar att patcha.

Det verkar vara en funktion som returnerar -1 eller -2 om max. antalet (fysiska?) klienter har anslutit, och den ökar således inte på den globala variabeln. Koden ser ungefär ut så här i C...

Kod:
DWORD numClients;

int increaseClients(void *param1, void *param2)
{
if (!*(BYTE*)param2)
if (numClients<9) return -1;
else
if (numClients<8) return -2;

/*
004153D1  |> 8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
004153D5  |. 890C85 B860430>MOV DWORD PTR DS:[EAX*4+4360B8],ECX

...vad fan kan detta vara?

*/

numClients++;
}

Verkar inte finnas så mycket mer att analysera av den här dumpen, jag skall kolla lite på LOGON-grejen i stället.

Edit: Funktionen ovan anropas vid 00415361, i samma kodstycke som en klient har tilldelats ett ID, tänkte bara nämna det.
Citera
2007-03-17, 18:48
  #28
Bannlyst
Citat:
Ursprungligen postat av seb-
massa text.. tack för infon
kolla här..

00404476 55 PUSH EBP < kolla eax här, det representerar hur många användare vi är när vi connectar
00404477 E8748E0100 CALL VENTRI~1.0041D2F0
0040447C 8A46 04 MOV AL,BYTE PTR DS:[ESI+4] < när vi kommer ut ur CALL'en är allt ok..

sätt en break på 76 och en efter på 7C .. connecta.. tryck F8 över CALL.. notice something? den CALL'en är jävligt intressant..

*edit*
appropå den minnes saken på DC där.. jag har åxå sett den.. har ävent testat att helt enkelt patcha minnet till 11 där.. resulterade i crash.. vi måste hitta varför eax/dc är 9 fortfarande.. kollar på din kod du skrev.. ska även ge mig in i det callet.. där har vi eax precis över som resulterar i användare..

*edit 2*
blah blah.. i nuläget..

*edit 3*
10e gubben får ingen break på 00404476.. vi har nåt här.. får traca uppåt..

*edit 4*
00403110 . 8BF0 MOV ESI,EAX
00403112 . 83CE 1F OR ESI,1F
00403115 . 57 PUSH EDI
00403116 . 8BD9 MOV EBX,ECX
00403118 . 83FE FD CMP ESI,-3 <- här bryter det på 10e gubben. F9 här och det blir error.. hittat en bryt punkt på 10e gubben iaf..
Citera
2007-03-17, 19:13
  #29
Medlem
seb-s avatar
Bra jobbat, OnY, jag kör på där du är nu.
Citera
2007-03-17, 19:47
  #30
Bannlyst
Citat:
Ursprungligen postat av seb-
Bra jobbat, OnY, jag kör på där du är nu.


0041215D EB25 patcha sådär.. så verkar man slippa timouten.. lite lättare och jobba.. kanske inte är nåt att ha med senare ändå.. men just nu.. har också märkt att gubbe 8, 9 och 10 bryter på om du sätten en BP på denna.. har också lagt märke till att det är faktiskt skillnad på var gubbe 8 och gubbe 9 tar vägen i koden.. har stönat lite med din kod med inc eax.. verkar finnas mer sådana..
Citera
2007-03-17, 20:01
  #31
Medlem
seb-s avatar
Jag får ett ID av servern i alla fall, eller rättare sagt, servern genererar och registrerar (i konsolen) ett ID när den 10:e klienten ansluter.

0041532C . 66:8B56 04 MOV DX,WORD PTR DS:[ESI+4]

DX håller ID:t och ESI måste vara någon struktur som håller klientinfon eller något. Jag försöker klura ut varför servern inte skickar någon ytterligare data till klienten, så som, kanalinformation o s v. Hmm...
Citera
2007-03-17, 20:15
  #32
Bannlyst
Citat:
Ursprungligen postat av seb-
Jag får ett ID av servern i alla fall, eller rättare sagt, servern genererar och registrerar (i konsolen) ett ID när den 10:e klienten ansluter.

0041532C . 66:8B56 04 MOV DX,WORD PTR DS:[ESI+4]

DX håller ID:t och ESI måste vara någon struktur som håller klientinfon eller något. Jag försöker klura ut varför servern inte skickar någon ytterligare data till klienten, så som, kanalinformation o s v. Hmm...
yep.. det är ju logon id't som strular på 10an..
jag tror vi får prova något nytt.. försöka kolla var det blir olika för 8e user och 9e user. jag tror det är lättast at börja där.. och försöka länka om 9an där de skiljer sig till dit 8an tar vägen.. hittar du den punkten.. så posta

*edit*
här har du två BP's

det händer nåt mellan dom.. som skiljer dom åt..

004151E1 VENTRI~1 Always LEA EDX,DWORD PTR SS:[ESP+24]
004152B3 VENTRI~1 Always MOV EAX,DWORD PTR DS:[4360DC]
Citera
2007-03-17, 20:29
  #33
Medlem
seb-s avatar
Mmmm, den första BP:n du har verkar ligga i en funktion som översätter en domänadress till en IP-adress (eller vice versa, kolla API:na).

004152BE . EB 4E JMP SHORT ventrilo.0041530E

Sätt en BP där, kolla EAX. EAX håller en pekare till IP:t till klienten som ansluter... den hoppar sedan till 0041530E (som börjar med massa NOPs)...

00415312 . B8 D8A14200 MOV EAX,ventrilo.0042A1D8

Den ersätter IP:t som hämtades tidigare, detta förklarar varför min 10:e klient inte får något IP i konsolen. Skall testa NOP:a den och se i fall det ger någon förändring.

Edit: Den verkar få ett IP nu , men kraschar dock här...

004125B5 . 8BBE 7C010000 MOV EDI,DWORD PTR DS:[ESI+17C]

Ett åtkomstfel (access violation), skall kolla vad ESI håller för adress som den inte kan komma åt.
Citera
2007-03-17, 20:40
  #34
Bannlyst
Citat:
Ursprungligen postat av seb-
Edit: Den verkar få ett IP nu , men kraschar dock här...

004125B5 . 8BBE 7C010000 MOV EDI,DWORD PTR DS:[ESI+17C]

Ett åtkomstfel (access violation), skall kolla vad ESI håller för adress som den inte kan komma åt.

gott

ja.. ESI.. har connectat med 6,7,8,9e klienten.. och ESI tycker ja beter sig lite udda..

lägger in din NOP nu å ser vad som händer så är vi på samma bas.. heh
Citera
2007-03-17, 21:02
  #35
Medlem
seb-s avatar
Satte en BP på 004125B5 och MOV:sen innan den, och fick nu en krasch på en helt annan adress (10:e klienten)...

00405136 |. 66:8B88 AC0000>|MOV CX,WORD PTR DS:[EAX+AC]

Skall kolla på vilka referenser LOGON-grejen har och sedan se i fall jag kan BP:a lite och finna varför den inte lyckas logga in.
Citera
2007-03-17, 21:05
  #36
Bannlyst
jag gjorde en search på CMP EAX,9 och den finns på 3 ställen.. bara två stycken får man break på..

004152B8 VENTRI~1 Always CMP EAX,9
004153C8 VENTRI~1 Always CMP EAX,9

så jag testade och göra en CMP EAX,11 på båda.. går utmärkt.. men på 10e får jag en total crash istället.. mysko?!

antar att vi måste få logon ID på den 10 och ev ändra dessa checkar senare.. den crasher nog för att den tillåts.. och sen har den inget ID istället..

den crashar på 004125B5 där din crashade sist..

kollar man när man sätter en break på 004125B5 så bryter den typ hela tiden..
så kollar man under CPU fönstret men över DUMP fönstret så har du tex..

DS:[00A63B1C]=00000158
EDI=00000002

när den bryter hela tiden ändras ds med 158, 15C, 160, 164, 168 etc och edi är 2.. det borde ju va dom olika loginnen.. för när ja körde in den 10e med patchad CMP EAX,9 så vad DS ???? och edi 1 *hmmmm* den ökar med 4 hela tiden.. och det finns bara 8st å bläddra mellan.. den sista är edi 2 och de kanske är klient 9 då? för vid varje step så lägger den den förra i edi..
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in