PDA

View Full Version : Does anyone know how Playerview works?


gorgeous
01-07-2005, 11:07 PM
Specifically how does it "write" text to Party windows?

BradleyT
01-08-2005, 04:42 AM
Here's some of the code if you debug it. Brush up on your assembly.

<font class="small">Code:</font><hr /><pre>
00000000 push ebp
00000001 mov ebp,esp
00000003 sub esp,7Ch
00000006 push edi
00000007 push esi
00000008 push ebx
00000009 xor eax,eax
0000000b mov dword ptr [ebp-78h],eax
0000000e mov dword ptr [ebp-40h],eax
00000011 call dword ptr ds:[7BA956C0h]
00000017 mov dword ptr [ebp-44h],eax
0000001a mov edi,dword ptr ds:[7BA95524h]
00000020 mov dword ptr [ebp-70h],edi
00000023 mov edi,dword ptr [eax+8]
00000026 mov dword ptr [ebp-6Ch],edi
00000029 mov dword ptr [ebp-50h],ebp
0000002c lea edi,[ebp-70h]
0000002f mov dword ptr [ebp-64h],0
00000036 mov dword ptr [eax+8],edi
00000039 mov dword ptr [ebp-8],0
00000040 mov dword ptr [ebp-74h],ecx
00000043 mov esi,edx
00000045 mov eax,dword ptr [ebp-74h]
00000048 mov edx,dword ptr [eax+14h]
0000004b mov dword ptr [ebp-14h],edx
0000004e mov dword ptr [ebp-18h],1
00000055 cmp dword ptr [eax+4],0
00000059 jne 00000094
0000005b mov ecx,dword ptr ds:[7B9C6018h]
00000061 call dword ptr ds:[7BA95598h]
00000067 mov edi,eax
00000069 push 3F800000h
0000006e push 0
00000070 push 0
00000072 mov ecx,edi
00000074 xor edx,edx
00000076 mov eax,dword ptr ds:[7BA961A4h]
0000007c call dword ptr [eax]
0000007e mov eax,dword ptr [ebp-74h]
00000081 lea edx,[eax+4]
00000084 call dword ptr ds:[7BA9563Ch]
0000008a mov eax,dword ptr [ebp-74h]
0000008d mov dword ptr [eax+10h],0
00000094 mov eax,dword ptr [ebp-74h]
00000097 mov edi,dword ptr [eax+4]
0000009a mov ecx,dword ptr ds:[7B9C6140h]
000000a0 call dword ptr ds:[7BA95598h]
000000a6 mov edx,eax
000000a8 mov dword ptr [edx+4],esi
000000ab mov ecx,edi
000000ad mov eax,dword ptr [ecx]
000000af call dword ptr [eax+38h]
000000b2 and eax,0FFh
000000b7 jne 000000C0
000000b9 xor eax,eax
000000bb jmp 000005AE
000000c0 mov eax,dword ptr [ebp-74h]
000000c3 mov edx,dword ptr [eax+8]
000000c6 mov dword ptr [ebp-78h],edx
000000c9 lea edi,[ebp-34h]
000000cc xor eax,eax
000000ce lea ecx,[eax+7]
000000d1 rep stos dword ptr [edi]
000000d3 mov eax,dword ptr [ebp-74h]
000000d6 cmp dword ptr [eax+4],0
000000da jne 00000115
000000dc mov ecx,dword ptr ds:[7B9C6018h]
000000e2 call dword ptr ds:[7BA95598h]
000000e8 mov edi,eax
000000ea push 3F800000h
000000ef push 0
000000f1 push 0
000000f3 mov ecx,edi
000000f5 xor edx,edx
000000f7 mov eax,dword ptr ds:[7BA961A4h]
000000fd call dword ptr [eax]
000000ff mov eax,dword ptr [ebp-74h]
00000102 lea edx,[eax+4]
00000105 call dword ptr ds:[7BA9563Ch]
0000010b mov eax,dword ptr [ebp-74h]
0000010e mov dword ptr [eax+10h],0
00000115 mov eax,dword ptr [ebp-74h]
00000118 mov edi,dword ptr [eax+4]
0000011b mov ecx,dword ptr ds:[7B9C6140h]
00000121 call dword ptr ds:[7BA95598h]
00000127 mov edx,eax
00000129 mov dword ptr [edx+4],esi
0000012c mov ecx,edi
0000012e mov eax,dword ptr [ecx]
00000130 call dword ptr [eax+4Ch]
00000133 mov edx,eax
00000135 mov ecx,7B9FEE34h
0000013a call dword ptr ds:[7BA955CCh]
00000140 test eax,eax
00000142 jne 00000163
00000144 mov dword ptr [ebp-38h],0
0000014b mov dword ptr [ebp-0Ch],0
00000152 mov dword ptr [ebp-8],0FCh
00000159 push 7B82E1F7h
0000015e jmp 00000575
00000163 mov eax,dword ptr [eax+4]
00000166 mov dword ptr [ebp-7Ch],eax
00000169 mov edx,dword ptr [ebp-74h]
0000016c lea edx,[edx+8]
0000016f call dword ptr ds:[7BA9562Ch]
00000175 mov eax,dword ptr [ebp-74h]
00000178 cmp dword ptr [eax+0Ch],0
0000017c je 00000186
0000017e mov eax,dword ptr [ebp-74h]
00000181 mov ebx,dword ptr [eax+0Ch]
00000184 jmp 0000019A
00000186 mov eax,dword ptr [ebp-74h]
00000189 cmp dword ptr [eax+8],0
0000018d je 00000197
0000018f mov eax,dword ptr [ebp-74h]
00000192 mov ebx,dword ptr [eax+8]
00000195 jmp 0000019A
00000197 mov ebx,dword ptr [ebp-7Ch]
0000019a lea esi,[ebp-34h]
0000019d mov ecx,7B9F993Ch
000001a2 call dword ptr ds:[7BA955BCh]
000001a8 mov eax,dword ptr ds:[7BA97510h]
000001ae mov eax,dword ptr [eax]
000001b0 add eax,4
000001b3 cmp ecx,dword ptr [eax]
000001b5 push dword ptr [eax+4]
000001b8 push dword ptr [eax]
000001ba push 0
000001bc push 0
000001be mov ecx,esi
000001c0 xor edx,edx
000001c2 call dword ptr ds:[7B9F2B18h]
000001c8 and eax,0FFh
000001cd je 00000395
000001d3 push dword ptr [ebp+8]
000001d6 lea eax,[ebp-34h]
000001d9 push eax
000001da mov edx,dword ptr [ebp+0Ch]
000001dd mov ecx,ebx
000001df mov eax,dword ptr [ecx]
000001e1 mov eax,dword ptr [eax+0Ch]
000001e4 add eax,dword ptr ds:[7BA97C18h]
000001ea mov eax,dword ptr [eax]
000001ec call dword ptr [eax+1Ch]
000001ef and eax,0FFh
000001f4 mov dword ptr [ebp-18h],eax
000001f7 test eax,eax
000001f9 je 00000556
000001ff mov edx,dword ptr ds:[7BA973DCh]
00000205 mov edx,dword ptr [edx]
00000207 mov ecx,dword ptr [ebp-34h]
0000020a mov eax,dword ptr ds:[7BA95FB8h]
00000210 call dword ptr [eax]
00000212 and eax,0FFh
00000217 je 00000275
00000219 lea ecx,[ebp-40h]
0000021c mov eax,dword ptr [ebp-34h]
0000021f mov dword ptr [ecx],0
00000225 mov dword ptr [ecx+4],eax
00000228 lea eax,[ebp-40h]
0000022b push dword ptr [eax+4]
0000022e push dword ptr [eax]
00000230 call dword ptr ds:[7B9EE6A0h]
00000236 and eax,0FFh
0000023b je 00000275
0000023d mov edi,1
00000242 lea esi,[ebp-34h]
00000245 mov ecx,7B9F993Ch
0000024a call dword ptr ds:[7BA955BCh]
00000250 mov eax,dword ptr ds:[7BA97510h]
00000256 mov eax,dword ptr [eax]
00000258 add eax,4
0000025b cmp ecx,dword ptr [eax]
0000025d push dword ptr [eax+4]
00000260 push dword ptr [eax]
00000262 push 0
00000264 mov ecx,esi
00000266 xor edx,edx
00000268 call dword ptr ds:[7B9F2C28h]
0000026e and eax,0FFh
00000273 jmp 000002A7
00000275 xor edi,edi
00000277 lea esi,[ebp-34h]
0000027a mov ecx,7B9F993Ch
0000027f call dword ptr ds:[7BA955BCh]
00000285 mov eax,dword ptr ds:[7BA97510h]
0000028b mov eax,dword ptr [eax]
0000028d add eax,4
00000290 cmp ecx,dword ptr [eax]
00000292 push dword ptr [eax+4]
00000295 push dword ptr [eax]
00000297 push edi
00000298 mov ecx,esi
0000029a xor edx,edx
0000029c call dword ptr ds:[7B9F2C24h]
000002a2 and eax,0FFh
000002a7 mov eax,dword ptr [ebp-30h]
000002aa cmp eax,dword ptr ds:[7B9E7E80h]
000002b0 jne 000002EC
000002b2 call dword ptr ds:[7B9FC2E8h]
000002b8 mov ecx,eax
000002ba cmp dword ptr [ecx],ecx
000002bc call dword ptr ds:[7B9FC2D0h]
000002c2 call dword ptr ds:[7B9FC2E8h]
000002c8 mov esi,eax
000002ca mov ecx,dword ptr [esi+2Ch]
000002cd mov eax,dword ptr ds:[7BA973DCh]
000002d3 push dword ptr [eax]
000002d5 mov eax,dword ptr ds:[7BA973DCh]
000002db push dword ptr [eax]
000002dd mov edx,12h
000002e2 call dword ptr ds:[7B9F28E0h]
000002e8 or dword ptr [esi+34h],8
000002ec cmp dword ptr [ebp-30h],12h
000002f0 jne 00000347
000002f2 cmp dword ptr [ebp+0Ch],0FFFFFFFFh
000002f6 je 0000033B
000002f8 mov ecx,dword ptr [ebp-2Ch]
000002fb mov eax,dword ptr ds:[7BA960F4h]
00000301 call dword ptr [eax]
00000303 push eax
00000304 mov dword ptr [ebp-68h],7B9F31A8h
0000030b mov dword ptr [ebp-64h],esp
0000030e mov eax,dword ptr [ebp-44h]
00000311 push 7B82DF8Bh
00000316 pop dword ptr [ebp-60h]
00000319 mov byte ptr [eax+4],0
0000031d call dword ptr ds:[7B9F31B0h]
00000323 mov ecx,dword ptr [ebp-44h]
00000326 mov byte ptr [ecx+4],1
0000032a mov edx,dword ptr ds:[7BA95528h]
00000330 cmp byte ptr [edx],0
00000333 je 0000033B
00000335 call dword ptr ds:[7BA9561Ch]
0000033b mov dword ptr [ebp-18h],0
00000342 jmp 00000560
00000347 lea edx,[ebp-34h]
0000034a mov ecx,ebx
0000034c mov eax,dword ptr [ecx]
0000034e mov eax,dword ptr [eax+0Ch]
00000351 add eax,dword ptr ds:[7BA97C18h]
00000357 mov eax,dword ptr [eax]
00000359 call dword ptr [eax+4]
0000035c and eax,0FFh
00000361 jne 00000556
00000367 lea ecx,[ebp-34h]
0000036a call dword ptr ds:[7B9F28D0h]
00000370 and eax,0FFh
00000375 test edi,edi
00000377 je 00000387
00000379 lea ecx,[ebp-34h]
0000037c call dword ptr ds:[7B9F28DCh]
00000382 jmp 00000556
00000387 lea ecx,[ebp-34h]
0000038a call dword ptr ds:[7B9F28D8h]
00000390 jmp 00000556
00000395 cmp dword ptr [ebp+0Ch],2
00000399 je 00000560
0000039f xor edi,edi
000003a1 mov eax,dword ptr [ebp-74h]
000003a4 cmp dword ptr [eax+4],0
000003a8 jne 000003E3
000003aa mov ecx,dword ptr ds:[7B9C6018h]
000003b0 call dword ptr ds:[7BA95598h]
000003b6 mov esi,eax
000003b8 push 3F800000h
000003bd push 0
000003bf push 0
000003c1 mov ecx,esi
000003c3 xor edx,edx
000003c5 mov eax,dword ptr ds:[7BA961A4h]
000003cb call dword ptr [eax]
000003cd mov eax,dword ptr [ebp-74h]
000003d0 lea edx,[eax+4]
000003d3 call dword ptr ds:[7BA95638h]
000003d9 mov eax,dword ptr [ebp-74h]
000003dc mov dword ptr [eax+10h],0
000003e3 mov eax,dword ptr [ebp-74h]
000003e6 mov edx,dword ptr [eax+4]
000003e9 test edx,edx
000003eb je 000004AC
000003f1 mov eax,dword ptr [ebp-74h]
000003f4 cmp dword ptr [eax+4],0
000003f8 jne 00000433
000003fa mov ecx,dword ptr ds:[7B9C6018h]
00000400 call dword ptr ds:[7BA95598h]
00000406 mov esi,eax
00000408 push 3F800000h
0000040d push 0
0000040f push 0
00000411 mov ecx,esi
00000413 xor edx,edx
00000415 mov eax,dword ptr ds:[7BA961A4h]
0000041b call dword ptr [eax]
0000041d mov eax,dword ptr [ebp-74h]
00000420 lea edx,[eax+4]
00000423 call dword ptr ds:[7BA95638h]
00000429 mov eax,dword ptr [ebp-74h]
0000042c mov dword ptr [eax+10h],0
00000433 mov eax,dword ptr [ebp-74h]
00000436 mov ecx,dword ptr [eax+4]
00000439 mov eax,dword ptr [ecx]
0000043b call dword ptr [eax+58h]
0000043e mov ecx,eax
00000440 mov eax,dword ptr [ecx]
00000442 mov eax,dword ptr [eax+0Ch]
00000445 add eax,dword ptr ds:[7BA97C1Ch]
0000044b mov eax,dword ptr [eax]
0000044d call dword ptr [eax]
0000044f mov esi,eax
00000451 jmp 00000494
00000453 mov ecx,esi
00000455 mov eax,dword ptr [ecx]
00000457 mov eax,dword ptr [eax+0Ch]
0000045a add eax,dword ptr ds:[7BA97BFCh]
00000460 mov eax,dword ptr [eax]
00000462 call dword ptr [eax+4]
00000465 mov edx,eax
00000467 mov ecx,7B9FEE34h
0000046c call dword ptr ds:[7BA955CCh]
00000472 mov ecx,dword ptr [eax+4]
00000475 mov edx,0FFFFFFFFh
0000047a mov eax,dword ptr [ecx]
0000047c mov eax,dword ptr [eax+0Ch]
0000047f add eax,dword ptr ds:[7BA97C18h]
00000485 mov eax,dword ptr [eax]
00000487 call dword ptr [eax+18h]
0000048a and eax,0FFh
0000048f or eax,edi
00000491 movzx edi,al
00000494 mov ecx,esi
00000496 mov eax,dword ptr [ecx]
00000498 mov eax,dword ptr [eax+0Ch]
0000049b add eax,dword ptr ds:[7BA97BFCh]
000004a1 mov eax,dword ptr [eax]
000004a3 call dword ptr [eax]
000004a5 and eax,0FFh
000004aa jne 00000453
000004ac mov eax,dword ptr ds:[7BA973DCh]
000004b2 mov eax,dword ptr [eax]
000004b4 mov dword ptr [ebp-34h],eax
000004b7 mov dword ptr [ebp-30h],0
000004be push dword ptr [ebp+8]
000004c1 lea eax,[ebp-34h]
000004c4 push eax
000004c5 mov edx,dword ptr [ebp+0Ch]
000004c8 mov ecx,ebx
000004ca mov eax,dword ptr [ecx]
000004cc mov eax,dword ptr [eax+0Ch]
000004cf add eax,dword ptr ds:[7BA97C18h]
000004d5 mov eax,dword ptr [eax]
000004d7 call dword ptr [eax+1Ch]
000004da and eax,0FFh
000004df mov dword ptr [ebp-18h],eax
000004e2 test eax,eax
000004e4 je 00000556
000004e6 test edi,edi
000004e8 jne 00000556
000004ea lea esi,[ebp-34h]
000004ed mov ecx,7B9F993Ch
000004f2 call dword ptr ds:[7BA955BCh]
000004f8 mov eax,dword ptr ds:[7BA97510h]
000004fe mov eax,dword ptr [eax]
00000500 add eax,4
00000503 cmp ecx,dword ptr [eax]
00000505 push dword ptr [eax+4]
00000508 push dword ptr [eax]
0000050a push 0
0000050c push 0
0000050e mov ecx,esi
00000510 xor edx,edx
00000512 call dword ptr ds:[7B9F2B18h]
00000518 and eax,0FFh
0000051d jne 00000556
0000051f mov dword ptr [ebp-68h],7B9F2CF8h
00000526 mov dword ptr [ebp-64h],esp
00000529 mov eax,dword ptr [ebp-44h]
0000052c push 7B82E1A6h
00000531 pop dword ptr [ebp-60h]
00000534 mov byte ptr [eax+4],0
00000538 call dword ptr ds:[7B9F2D00h]
0000053e mov ecx,dword ptr [ebp-44h]
00000541 mov byte ptr [ecx+4],1
00000545 mov edx,dword ptr ds:[7BA95528h]
0000054b cmp byte ptr [edx],0
0000054e je 00000556
00000550 call dword ptr ds:[7BA9561Ch]
00000556 cmp dword ptr [ebp-18h],0
0000055a jne 00000175
00000560 mov dword ptr [ebp-0Ch],0
00000567 mov dword ptr [ebp-8],0FCh
0000056e push 7B82E200h
00000573 jmp 00000575
00000575 mov eax,dword ptr [ebp-74h]
00000578 mov edx,dword ptr [ebp-14h]
0000057b mov dword ptr [eax+14h],edx
0000057e mov edx,eax
00000580 mov eax,dword ptr [ebp-78h]
00000583 lea edx,[edx+8]
00000586 call dword ptr ds:[7BA9562Ch]
0000058c pop eax
0000058d jmp eax
0000058f mov dword ptr [ebp-8],0
00000596 jmp 000005AB
00000598 mov dword ptr [ebp-8],0
0000059f cmp dword ptr [ebp-18h],0
000005a3 sete al
000005a6 movzx eax,al
000005a9 jmp 000005AE
000005ab mov eax,dword ptr [ebp-38h]
000005ae mov esi,dword ptr [ebp-44h]
000005b1 mov edi,dword ptr [ebp-6Ch]
000005b4 mov dword ptr [esi+8],edi
000005b7 pop ebx
000005b8 pop esi
000005b9 pop edi
000005ba mov esp,ebp
000005bc pop ebp
000005bd ret 8
</pre><hr />

gorgeous
01-08-2005, 01:41 PM
lol.. thanks but that's not any of the coding.

Freakin
01-08-2005, 03:08 PM
[ QUOTE ]
Specifically how does it "write" text to Party windows?

[/ QUOTE ]

Amir &amp; CT will correct me if I'm wrong, but I'm pretty sure it's all overlaying it, not modifying the party window. So it effectively has a Party sized window with no borders &amp;crap that is completely transpartent that attaches itself to each party window.

Freakin

gorgeous
01-09-2005, 01:15 AM
I see what you mean. A transparent form is unheard of. That gets my brain working. Thanks Freakin

BradleyT
01-09-2005, 01:32 PM
[ QUOTE ]
lol.. thanks but that's not any of the coding.

[/ QUOTE ]

Sure it is. I attached a debugger to the PlayerView process and can step through all the instructions but at this level it's broken down into assembly language.

ScottTheFish
01-09-2005, 05:46 PM
What it's doing is modifying the images that make up the table. The table is assembled from small images, and PV modifies those images.

Not that hard to do, althought the slick interface they have on it is very nice. It's nice work, and I'm pissed that I dodn't think of it first. /images/graemlins/tongue.gif

amirpc
01-09-2005, 08:04 PM
No transparent forms. Ours is an overlay of sorts but there are no controls/forms involved. More of a secondary device context. I don't feel like going over it in detail really though, sorry.

amirpc
01-09-2005, 08:05 PM
This is not even close, sorry dude /images/graemlins/wink.gif

BradleyT
01-09-2005, 09:23 PM
If you knew anything about the .NET framework you would know what MSIL is and what can be done with it.

ScottTheFish
01-10-2005, 03:22 AM
[ QUOTE ]
This is not even close, sorry dude /images/graemlins/wink.gif

[/ QUOTE ]

Heh, fair enough...i never really tried to figure it out, I assumed that would be the easiest way. Anyway nice work on the softeare.

OrcaDK
01-10-2005, 10:23 AM
Shouldn't be too tough in .NET.

Just get the PP windows handle and do a little bit of magic. Then you have a normal GDI+ canvas on which you can paint your own controls and such.

Vern
01-10-2005, 11:37 AM
Actually I would think it is tougher in .NET than earlier environments because .NET likes to complain so much about the unmanaged code that is required to cross the process barriers.