[Bug 27075] Battlefield Heroes: Punkbuster doesn't work as it should (ntoskrnl.exe.PsLookupProcessByProcessId stub needed)

wine-bugs at winehq.org wine-bugs at winehq.org
Sat May 7 08:15:06 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=27075

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|-unknown                    |ntoskrnl
            Summary|Battlefield Heroes:         |Battlefield Heroes:
                   |Punkbuster doesn't work as  |Punkbuster doesn't work as
                   |it should                   |it should
                   |                            |(ntoskrnl.exe.PsLookupProce
                   |                            |ssByProcessId stub needed)
     Ever Confirmed|0                           |1

--- Comment #7 from Anastasius Focht <focht at gmx.net> 2011-05-07 08:15:06 CDT ---
Hello,

--- quote ---
Flash *is* unnecessary to download, install and run the game.
The only part where Flash is needed is to create a hero on the website. That
can be done just fine using Linux and a browser. No need for wine, or the flash
plugin in wine. There's a "Create Hero" button on the website.
--- quote ---

well I'm not going to argue with you. I assumed you did everything using Wine
and not native Linux tools (browsers).
I just don't want to waste time figuring out stuff that are different bugs.
Just keep in mind: the better the prerequisites/steps to reproduce the bug are
given (exact steps!) the higher the chance that people might actually look at
the bug.

The problem here can't be reproduced every time, it depends on the type of
PunkBuster check carried out.
There are cases where the infamous bug 9685 is encountered before your problem:

--- snip ---
[05.07.2011 14:30:38] Receiving from PB Server (w v1.821 | A1376 C2.260)
[05.07.2011 14:30:39] PnkBstrA successfully loaded PnkBstrB
[05.07.2011 14:30:40] RESTRICTION: Unknown Windows API Function [131131]
[05.07.2011 14:30:42] PnkBstrB service installed and started successfully
--- snip ---

First you have to make sure that PunkBuster basics work by using the PB svc
tool:

~/.wine/drive_c/Program Files/EA Games/Battlefield Heroes$ wine
./pbsvc_heroes.exe

click "Test services"

The PunkBuster "A" and "B" service should run and the kernel driver "K" can be
extracted and run too.

Your problem might be this one:

--- snip ---
...
0089:trace:service:svcctl_CreateServiceW (L"PnkBstrK", L"PnkBstrK", 0xf01ff,
L"C:\\windows\\system32\\drivers\\PnkBstrK.sys") 
...
0016:trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\msvcrt.dll"
at 0x62f60000: builtin
0016:trace:loaddll:load_native_dll Loaded
L"C:\\windows\\system32\\drivers\\PnkBstrK.sys" at 0x10000000: native
0016:trace:ntoskrnl:IoCreateDevice (0x683474a0, 0, L"\\Device\\pnkbstrk",
40000, 0, 0, 0x53e648)
0016:trace:ntoskrnl:IoCreateSymbolicLink L"\\DosDevices\\pnkbstrk_link" ->
L"\\Device\\pnkbstrk"
0016:trace:service:SetServiceStatus 0x1109b0 30 4 5 0 0 0 2710
0095:trace:service:svcctl_SetServiceStatus (0x113288, 0x1131b4)
0089:trace:service:service_wait_for_startup Service started successfully
0089:trace:service:service_start returning 0
0096:trace:service:CloseServiceHandle 0x13ba00
0088:trace:service:svcctl_CloseServiceHandle (&0x112da8)
0096:trace:service:CloseServiceHandle 0x13a0c0
0095:trace:service:svcctl_CloseServiceHandle (&0x111788)
0016:trace:ntoskrnl:process_ioctl ioctl 2261c0 device 0x110f18 in_size 16
out_size 16
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"ZwQuerySystemInformation" ->
0x7bc56904
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmMapIoSpace" -> 0x683cd904
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmUnmapIoSpace" -> 0x683cda6b
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmGetPhysicalAddress" ->
0x683c4cb4
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"ObDereferenceObject" ->
0x683c57b4
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmIsAddressValid" -> 0x683cd880
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"PsLookupProcessByProcessId" ->
0x683c66a8
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeStackAttachProcess" ->
0x683c4550
0016:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeUnstackDetachProcess" ->
0x683c45d4
0016:trace:ntoskrnl:__regs_IofCompleteRequest 0x53e780 0
0016:trace:ntoskrnl:IoCompleteRequest 0x53e780 0 
...
0016:trace:ntoskrnl:process_ioctl ioctl 226214 device 0x110f18 in_size 16
out_size 4096 
...
wine: Call from 0x7b838257 to unimplemented function
ntoskrnl.exe.PsLookupProcessByProcessId, aborting 
...
--- snip ---

Wine needs supply a stub for ntoskrnl.exe.PsLookupProcessByProcessId to let the
service live (returning STATUS_NOT_IMPLEMENTED is enough).

--- snip ---
006f:trace:ntoskrnl:process_ioctl ioctl 226214 device 0x110f18 in_size 16
out_size 4096
006f:fixme:ntoskrnl:PsLookupProcessByProcessId stub: 0x72, 0x53e728
006f:trace:ntoskrnl:__regs_IofCompleteRequest 0x53e780 0
006f:trace:ntoskrnl:IoCompleteRequest 0x53e780 0 
...
--- snip ---

But even with that stub in place (preventing crash of kernel driver) you will
more or less frequently encounter bug 9685 in the game, effectively destroying
gameplay.

See: http://appdb.winehq.org/objectManager.php?sClass=version&iId=5813

"UNKNOWN WINDOWS API FUNCTION [131xxx]" for a list I made years ago by
dissecting PunkBuster (there exist more but it would be useless to document
them).

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list