http://bugs.winehq.org/show_bug.cgi?id=9685
Summary: Punkbuster removes me from game for UNKNOWN WINDOWS API FUNCTION [131124] Product: Wine Version: CVS/GIT Platform: PC URL: http://www.evenbalance.com OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-misc AssignedTo: wine-bugs@winehq.org ReportedBy: ead1234@hotmail.com
Created an attachment (id=8104) --> (http://bugs.winehq.org/attachment.cgi?id=8104) punkbuster kick log
When playing America's Army with punkbuster enabled I am removed from the server for UNKNOWN WINDOWS API FUNCTION [131124].
http://bugs.winehq.org/show_bug.cgi?id=9685
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Difficulty|Days |---
http://bugs.winehq.org/show_bug.cgi?id=9685
Stefan Dösinger stefandoesinger@gmx.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefandoesinger@gmx.at
--- Comment #1 from Stefan Dösinger stefandoesinger@gmx.at 2007-09-16 15:16:31 --- Some time ago it kicked me(in battlefield 1942) due to COMFAIL 132. Is this an improvement or a regression?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #2 from EA Durbin ead1234@hotmail.com 2007-09-16 15:16:56 --- Created an attachment (id=8105) --> (http://bugs.winehq.org/attachment.cgi?id=8105) Corresponding console output
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #3 from EA Durbin ead1234@hotmail.com 2007-09-16 15:20:41 --- I don't think this has ever worked, but I just got over my fear of a global hardware ban(this is my older machine) and decided to test/file a bug report.
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #4 from Anastasius Focht focht@gmx.net 2007-09-17 10:21:33 --- Hello,
ahh my old friend Punkbuster again ;-) The are a couple of reasons why this currently does not work.
Punkbuster mal^H^H^Hsoftware consists of user mode and kernel mode parts. The usermode dlls which are loaded into target process are not a problem for wine. They use standard psapi/toolhelp api to enumerate processes and modules lists, read user mode structures and the like.
There are two services "PnkBstrA" (PnkBstrA.exe) and "PnkBstrB" (PnkBstrB.exe). PnkBstrA is their auto update service. No harm. PnkBstrB is their anti cheat measure which unpacks and loads a kernel driver module at run time.
The PnkBstrB.exe executable contains a digital certificate which is used for integrity verification. Current showstopper is crypt api insufficiency. Due to CryptQueryObject() being a stub, the service refuses to initialize correctly.
--- snip trace --- ... 001c:Ret wintrust.WinVerifyTrust() retval=00000000 ret=00401473 001c:Call KERNEL32.MultiByteToWideChar(00000000,00000000,00410c71 "c:\windows\profiles\focht\Application Data\PnkBstrB.exe",00000038,61605570,00000104) ret=00401bb2 001c:Ret KERNEL32.MultiByteToWideChar() retval=00000038 ret=00401bb2 001c:Call crypt32.CryptQueryObject(00000001,61605570,00000400,00000002,00000000,61604ee8,61604eec,61604ee4,61604f24,61604f28,00000000) ret=00401bef 001c:fixme:crypt:CryptQueryObject 00000001 0x61605570 00000400 00000002 00000000 0x61604ee8 0x61604eec 0x61604ee4 0x61604f24 0x61604f28 (nil) 001c:Ret crypt32.CryptQueryObject() retval=00000000 ret=00401bef 001c:Call KERNEL32.GetLastError() ret=0040123b 001c:Ret KERNEL32.GetLastError() retval=80092004 ret=0040123b 001c:Call KERNEL32.FormatMessageA(00001300,00000000,80092004,00000400,61604de0,00000000,00000000) ret=00401259 001c:Ret KERNEL32.FormatMessageA() retval=00000000 ret=00401259 001c:Call KERNEL32.lstrlenA(61605b00 "v]`a$_`a"Software\\Microsoft\\Cryptography\\OID\\EncodingType 1\\CryptDllImportPublicKeyInfoEx\\1.2.840.113549.1.1.1"") ret=00401266 ... --- snip trace ---
If you improved the stub (must return valid data -> CryptMsgGetParam), you might try again and report back. Though i think there much severe problems ahead, the kernel driver part itself.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Louis Lenders xerox_xerox2000@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox_xerox2000@yahoo.co.uk Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #5 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-17 10:53:44 ---
Due to CryptQueryObject() being a stub, the service refuses to initialize correctly.
I tried this a time ago with native crypt32, and it still bails out then. If i remember correctly, it stops with different kind of "unknown windows api function" like 131, 148 etc. I'll see if i can get a useful debugtrace while i run into such a "crash"
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #6 from Anastasius Focht focht@gmx.net 2007-09-17 11:38:12 --- Hello,
--- quote --- I tried this a time ago with native crypt32, and it still bails out then. If i remember correctly, it stops with different kind of "unknown windows api function" like 131, 148 etc. I'll see if i can get a useful debugtrace while i run into such a "crash" --- quote ---
Native crypt32 wont work on this. Too much infrastructure missing. I discussed this problem a while back in some iTunes 7.x thread - before juan started work on crypt api.
"UNKNOWN WINDOWS API FUNCTION [131124]." is a pretty generic error message. It doesnt necessarily translate to "non-working/missing api function". In fact it can be everything, from missing admin privileges, detected hooks (antivir, spyware/trojan, cheats), services/drivers not running and the like.
Both services need to be up and correctly running. The services socket communication - local and remote endpoints - need to be functional. Without these basics in place it's pretty useless to fix up/work around something.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #7 from H. Verbeet hverbeet@gmail.com 2007-09-17 14:36:44 --- So the component should probably be wine-crypt32. Also, pbsvc (http://www.evenbalance.com/downloads/pbsvc/pbsvc.exe) is probably more convenient to test with than going into a server and waiting to be kicked.
IIRC when Stefan and me briefly looked at PB some time ago Stefan was able to get the verification part to work by adding half of IE6, but at that point you've got an amount of native dlls and registry entries that it's not particularly useful for anything anymore.
http://bugs.winehq.org/show_bug.cgi?id=9685
EA Durbin ead1234@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|wine-misc |wine-crypt32
http://bugs.winehq.org/show_bug.cgi?id=9685
EA Durbin ead1234@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Difficulty|--- |Days
http://bugs.winehq.org/show_bug.cgi?id=9685
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Difficulty|Days |---
--- Comment #8 from Dmitry Timoshkov dmitry@codeweavers.com 2007-09-18 03:59:09 --- There is no point in changing Difficulty field unless you are working on this bug and know exactly how much time it will take.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #9 from Stefan Dösinger stefandoesinger@gmx.at 2007-09-18 04:12:33 --- Yes, installing IE6 and setting an enourmous amount of DLLs to native made PunkBuster get further. The test app worked, but the kernel driver failed to launch and I got kicked from Battlefield 1942 withhin a few secounds due to COMFAIL 132.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #10 from EA Durbin ead1234@hotmail.com 2007-09-18 07:24:50 --- (In reply to comment #8)
There is no point in changing Difficulty field unless you are working on this bug and know exactly how much time it will take.
The difficulty level is for other developers who are searching for something to work on based on the amount of time the bug will take, and is not for someone already working on it as outlined in bug 5201
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #11 from Dmitry Timoshkov dmitry@codeweavers.com 2007-09-18 07:38:01 --- Then I'd say that another person who may change the Difficulty field is a mentor who is going to help in fixing the bug (a developer qualified enough in the area of the Component).
http://bugs.winehq.org/show_bug.cgi?id=9685
Brandon Wright yardkarter456@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |yardkarter456@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #12 from Juan Lang juan_lang@yahoo.com 2007-09-24 17:25:50 --- Created an attachment (id=8198) --> (http://bugs.winehq.org/attachment.cgi?id=8198) Partially implement CryptQueryObject
Does this patch help? I had this sitting around in an old tree.
http://bugs.winehq.org/show_bug.cgi?id=9685
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |juan_lang@yahoo.com
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #13 from EA Durbin ead1234@hotmail.com 2007-09-24 22:15:24 --- Created an attachment (id=8200) --> (http://bugs.winehq.org/attachment.cgi?id=8200) console output - crash with Juan's patch
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #14 from EA Durbin ead1234@hotmail.com 2007-09-25 00:17:37 --- fixme:crypt:CryptQueryObject 00000001 0x33c914 00000400 00000002 00000000 0x33c290 0x33c28c 0x33c288 0x33c2c8 0x33c2c4 (nil) trace:crypt:CryptMsgGetParam ((nil), 6, 0, (nil), 0x33c2a8) wine: Unhandled page fault on read access to 0x00000024 at address 0x7e7eec95 (thread 0009), starting debugger... Unhandled exception: page fault on read access to 0x00000024 in 32-bit code (0x7e7eec95). Register dump:
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #15 from EA Durbin ead1234@hotmail.com 2007-09-25 00:30:19 --- when punkbuster calls CryptQueryObject() the values passed in are:
dwObjectType = CERT_QUERY_OBJECT_FILE pvObject = pointer to "c:/windows/system32/PnkBstrA.exe" dwExpectedContentTypeFlags = CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED dwExpectedFormatTypeFlags = CERT_QUERY_FORMAT_FLAG_BINARY
http://bugs.winehq.org/show_bug.cgi?id=9685
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8198 is|0 |1 obsolete| |
--- Comment #16 from Juan Lang juan_lang@yahoo.com 2007-09-25 13:31:55 --- Created an attachment (id=8209) --> (http://bugs.winehq.org/attachment.cgi?id=8209) Partially implement CryptQueryObject
Thanks for testing the patch, EA. Here's a better one.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #17 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-25 13:55:39 --- Created an attachment (id=8210) --> (http://bugs.winehq.org/attachment.cgi?id=8210) crash with patch from comment #16
Just ran "wine pbsvc.exe", patched wine with Juan's patch from comment #16
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #18 from Juan Lang juan_lang@yahoo.com 2007-09-25 14:22:17 --- Could you attach a +crypt log?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #19 from Juan Lang juan_lang@yahoo.com 2007-09-25 14:25:39 --- Actually, a +crypt,+imagehlp log would be more helpful. Thanks.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #20 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-25 15:01:35 --- Created an attachment (id=8213) --> (http://bugs.winehq.org/attachment.cgi?id=8213) +crypt,+imagehlp log
http://bugs.winehq.org/show_bug.cgi?id=9685
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8209 is|0 |1 obsolete| |
--- Comment #21 from Juan Lang juan_lang@yahoo.com 2007-09-25 16:16:00 --- Created an attachment (id=8215) --> (http://bugs.winehq.org/attachment.cgi?id=8215) Partially implement CryptQueryObject
Okay, I see the bug with my last patch. Here's an updated version.
http://bugs.winehq.org/show_bug.cgi?id=9685
EA Durbin ead1234@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8104 is|0 |1 obsolete| | Attachment #8105 is|0 |1 obsolete| | Attachment #8200 is|0 |1 obsolete| |
--- Comment #22 from EA Durbin ead1234@hotmail.com 2007-09-25 18:48:38 --- Created an attachment (id=8217) --> (http://bugs.winehq.org/attachment.cgi?id=8217) image of pbsvc.exe error
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #23 from EA Durbin ead1234@hotmail.com 2007-09-25 18:50:02 --- Created an attachment (id=8218) --> (http://bugs.winehq.org/attachment.cgi?id=8218) +crypt,+imagehlp
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #24 from Juan Lang juan_lang@yahoo.com 2007-09-25 18:55:18 --- Okay, it looks like CryptMsgUpdate is failing to decode the message. Could you post a +crypt,+cryptasn log?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #25 from EA Durbin ead1234@hotmail.com 2007-09-25 19:01:00 --- Created an attachment (id=8219) --> (http://bugs.winehq.org/attachment.cgi?id=8219) +crypt,+cryptasn
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #26 from Juan Lang juan_lang@yahoo.com 2007-09-25 19:08:34 --- Thanks. I just noticed Louis's comment about pbsvc.exe. I'll test with that and get back to you later this week if I find anything. Meanwhile I'll send the CryptQueryObject patch, it seems to help.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #27 from Juan Lang juan_lang@yahoo.com 2007-09-25 19:09:16 --- Er, I mean Henri's comment.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #28 from Juan Lang juan_lang@yahoo.com 2007-09-25 19:20:04 --- I got a hexdump of the message it's trying to decode, and it begins with the following bytes (in hex): 38 15 00 00 00 02 02 00 30 82
That doesn't decode as a message. The last two bytes are the beginning of an asn.1-encoded message, but the prior bytes are not.
I believe this is a bug in either wintrust or imagehlp. The first four bytes, interpreted as a little-endian integer, are 5432. This is exactly the length being passed to CryptMsgUpdate. So, I think the length of the message in the file doesn't take into account the size of the WIN_CERTIFICATE header.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #29 from Juan Lang juan_lang@yahoo.com 2007-09-27 12:42:39 --- Actually, the real problem is just that I an idiot when I wrote that patch ;) I've sent in patches that fix that part of the problem (I was passing in the wrong pointer): http://www.winehq.org/pipermail/wine-patches/2007-September/044498.html http://www.winehq.org/pipermail/wine-patches/2007-September/044499.html
It still fails, however. From a +crypt log with these patches applied: trace:crypt:CryptDecodeObject (0x00010001, "1.3.6.1.4.1.311.2.1.12", 0x50004880, 1252019248, 0x00000000, (nil), 0x33c15c)
1.3.6.1.4.311.2.1.12 is SPC_SP_OPUS_INFO_OBJID, and the decode function for it, WVTAsn1SpcSpOpusInfoDecode, is a stub in wintrust.dll. The pointer and size look bogus, so I'm not sure they'd succeed even if it were implemented. The program appears to continue anyway.
Another suspicious line from the log: trace:crypt:CryptDecodeObject (0x00010001, #01f4, 0x30010102, 1728152112, 0x00000000, (nil), 0x33c164)
0x01f4 is 500 decimal, which is PKCS7_SIGNER_INFO. This is implemented, but the pointer and value look bogus. CryptDecodeObject will fail with CRYPT_E_ASN1_LARGE with a size this big. This appears to be the last bit of useful work crypt32 is doing, so the question is where the pointer and value come from.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #30 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-27 13:49:36 --- Hi, i dunno if i did something wrong, but i get a compiler warning after applying your 2 patches:
object.c: In function ‘CryptQueryObject’: object.c:520: warning: too few arguments for format
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #31 from Juan Lang juan_lang@yahoo.com 2007-09-27 14:45:31 --- Hi Louis, that warning was fixed in git - could you update and reapply the patches?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #32 from Juan Lang juan_lang@yahoo.com 2007-09-28 15:01:05 --- Here's a snippet from a +relay,+crypt log: 0009:Call KERNEL32.lstrcmpA(00149c5c "1.2.840.113549.1.9.6",004e4494 "1.2.840.113549.1.9.6") ret=004084dc 0009:Ret KERNEL32.lstrcmpA() retval=00000000 ret=004084dc 0009:Call crypt32.CryptDecodeObject(00010001,000001f4,30010102,67018230,00000000,00000000,0033c164) ret=0040850a trace:crypt:CryptDecodeObject (0x00010001, #01f4, 0x30010102, 1728152112, 0x00000000, (nil), 0x33c164) 0009:Ret crypt32.CryptDecodeObject() retval=00000000 ret=0040850a
The string is szOID_RSA_counterSign. The call flow looks a lot like the MS sample code here: http://support.microsoft.com/kb/323809
If that's being used, then the invalid pointer and length come from the unauthenticated attributes of the message. That points to a bug in message decoding.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #33 from Juan Lang juan_lang@yahoo.com 2007-09-28 18:16:27 --- I've found the cause of the bad pointer value and length, and sent a patch: http://www.winehq.org/pipermail/wine-patches/2007-September/044547.html
This now causes pbsvc.exe to crash with a call to wintrust.dll.WVTAsn1SpcSpOpusInfoDecode. Getting closer..
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #34 from Juan Lang juan_lang@yahoo.com 2007-09-28 18:29:46 --- And it turns out a stub is all it needs. Patch sent: http://www.winehq.org/pipermail/wine-patches/2007-September/044548.html
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #35 from EA Durbin ead1234@hotmail.com 2007-09-28 22:44:52 --- Im still getting the extract file failed an authenticity check error.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #36 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-29 01:17:47 --- wow, it gets further now with the two patches above applied. Alltough it crashes later on the, app keeps running, and it claims the tests it performed have been successfull. I'll do some testing.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #37 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-29 01:18:36 --- Created an attachment (id=8276) --> (http://bugs.winehq.org/attachment.cgi?id=8276) crash (almost at the end)
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #38 from EA Durbin ead1234@hotmail.com 2007-09-29 02:01:22 --- I was missing a patch, i fail at the same point now as well.
fixme:cryptasn:WVTAsn1SpcSpOpusInfoDecode 0x1c65fa, 76, 00000000, (nil), 5357393 wine: Unhandled page fault on write access to 0x10000038 at address 0x10003054 (thread 0018), starting debugger...
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #39 from EA Durbin ead1234@hotmail.com 2007-09-29 02:12:25 --- Created an attachment (id=8277) --> (http://bugs.winehq.org/attachment.cgi?id=8277) pbsvc.log
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #40 from EA Durbin ead1234@hotmail.com 2007-09-29 02:13:01 --- Created an attachment (id=8278) --> (http://bugs.winehq.org/attachment.cgi?id=8278) PknbstrA.log
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #41 from EA Durbin ead1234@hotmail.com 2007-09-29 02:16:21 --- Created an attachment (id=8279) --> (http://bugs.winehq.org/attachment.cgi?id=8279) PnkbstrB.log
There is now a LogFiles folder under system32 containing the above 3 logs.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #42 from EA Durbin ead1234@hotmail.com 2007-09-29 02:21:41 --- I don't know if it is pertinent, but a +ntdll,+ntoskrnl trace has this line
trace:ntdll:NtQueryInformationToken (0x20,1,0x34fbd4,80,0x34fc24) warn:ntdll:NtQueryFullAttributesFile L"\??\C:\windows\system32\ntoskrnl.exe" not found (c0000034)
ntoskrnl.exe doesn't appear to be copied over to the system32 folder. It does get built in the wine dlls directory during compilation.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #43 from EA Durbin ead1234@hotmail.com 2007-09-29 02:44:21 --- Created an attachment (id=8280) --> (http://bugs.winehq.org/attachment.cgi?id=8280) getting closer
wine still runs through the crash for WVTAsn1SpcSpOpusInfoDecode, I was able to get to this screen :)
However, after pressing OK it loops through the test again, outputs a PnkbstrB error and hangs on WVTAsn1SpcSpOpusInfoDecode.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #44 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-29 02:46:01 --- I get the same crash as here http://bugs.winehq.org/attachment.cgi?id=8276, while trying to join a server in Enemy Territory Quake Wars. So this crash is for now blocking Punkbuster.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #45 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-29 03:41:27 --- Created an attachment (id=8283) --> (http://bugs.winehq.org/attachment.cgi?id=8283) relevant +relay,+seh log
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #46 from Anastasius Focht focht@gmx.net 2007-09-29 16:50:49 --- Created an attachment (id=8295) --> (http://bugs.winehq.org/attachment.cgi?id=8295) patch to prevent kernel driver entry point called in LoadLibrary
Hello,
seems some progress has been made last time I visited ;-)
The crash is due to driver entry point being called when winedevice loads the kernel driver using LoadLibrary(). This is incorrect, although the dll export/import stuff is the same, the entry point of a kernel driver is special (parameters/signature) and is only to be called at a certain place within winedevice.
To make minimal intrusive changes, the optional NT headers subsystem flag is evaluated in "dlls/ntdll/loader.c:alloc_module()" to detect native exectuables. In that case the entry point field of loaders module structure is not set to executable entry point. This prevents accidental calls of entry point during dll events (attach/detach).
--- snip dlls/ntdll/loader.c --- static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename ) { ... /* do not setup entry point if kernel driver */ if( !(nt->OptionalHeader.Subsystem & IMAGE_SUBSYSTEM_NATIVE) && (nt->FileHeader.Characteristics & IMAGE_FILE_DLL)) { wm->ldr.Flags |= LDR_IMAGE_IS_DLL; if (nt->OptionalHeader.AddressOfEntryPoint) wm->ldr.EntryPoint = (char *)hModule + nt->OptionalHeader.AddressOfEntryPoint; }
... } --- snip dlls/ntdll/loader.c ---
Although native executables can have "dll" characteristic flags set too, I omitted the "wm->ldr.Flags |= LDR_IMAGE_IS_DLL" on purpose to prevent snooping. It doesnt make sense to snoop on native kmode drivers.
For the uninitiated reader: don't mix "native" with wine's concept of "native" vs. "builtin" libraries - windows native subsystem executables are a completely different beast. ;-)
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #47 from EA Durbin ead1234@hotmail.com 2007-09-29 17:54:25 --- NICE!!!!! The pbsvc.exe application now installs and tests properly
Time to see if it works in a game
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #48 from EA Durbin ead1234@hotmail.com 2007-09-29 18:11:36 --- bah, unfortunately there's a regression in the america's army installer
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #49 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-30 05:19:59 --- @EA Durbin and anyone, you can also test with Enemy Territory Quake Wars, that's a free download. I'm gonna give it a test now.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #50 from Louis Lenders xerox_xerox2000@yahoo.co.uk 2007-09-30 06:32:04 --- hmm, no luck yet, when i try to connect ro a server, the game crashes like below. There wasn't a backtrace generated.
wine: Unhandled page fault on write access to 0x00000000 at address 0x7005a00d (thread 0009), starting debugger... fixme:ntdll:FILE_GetNtStatus Converting errno 12 to STATUS_UNSUCCESSFUL fixme:ntdll:FILE_GetNtStatus Converting errno 12 to STATUS_UNSUCCESSFUL (that fixme was repeated 9 times) err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x78663c84
I'll see if i can get something more usefull trace later on.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #51 from Anastasius Focht focht@gmx.net 2007-09-30 07:18:34 --- Hello,
if you supply traces or crashlogs, be sure to include following flags:
WINEDEBUG=-all,+loaddll,+tid,+winedevice,+ntoskrnl,+vxd,+advapi
"-all" because some games really spit lots of annoying d3d fixme's
Use "+seh" only if you are absolutely sure it's PB related. SEH is (ab)used a lot for error handling and the logs might get filled with all the uninteresting stuff.
Before you run a game to play with PB, make sure all PB related services/drivers are stopped (wineserver -k).
The driver test passed "OK" with "pbsvc" tool has no relevance to real game. In case of "PnkBstrK.sys" kernel driver, the tool just checks for existance of symbolic device link that gets created during driver entry. No device i/o controls are used to really verify if driver is operational. 99% of the drivers code is not even touched/executed in test tool.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #52 from Anastasius Focht focht@gmx.net 2007-09-30 09:36:00 --- Created an attachment (id=8311) --> (http://bugs.winehq.org/attachment.cgi?id=8311) pb trace with ioctl handling problem in wineserver
Hello,
the game PB servers seem to behave differently. Some of them kick early for "unknown windows api xxx" and others get much further.
The "good" ones assign you PB player GUID (message) and the PB "B" service actually tries to talk to kernel driver. The bad news is: the ioctl request is never delivered to kernel driver itself (IRP). Somewhere in wine server the request fails. Attached is trace of this case. I added some debug trace in ntdll ("server_ioctl_file") to see where it fails.
tid 0x41 is device driver context tid 0x2f is "B" service context
--- snip trace --- .. 002f:trace:ntdll:NtDeviceIoControlFile (0x64,(nil),(nil),(nil),0x61762854,0x002261c0,0x51bf44,0x00000008,0x41b228,0x00000010) 002f:trace:ntdll:server_ioctl_file server_ioctl_file begin: 0x64, 2261c0 002f:trace:ntdll:server_ioctl_file server_ioctl_file end: 0x64, 2261c0, c0000022 002f:trace:ntdll:server_ioctl_file server_ioctl_file end wait: 0x64, 2261c0, c0000022 .. --- snip trace ---
ioctl code 0x2261c0 decodes as follows: device_type=0x22, func=0x870, access=FILE_READ_ACCESS, method=METHOD_BUFFERED
Returned status code 0xc0000022 is actually STATUS_ACCESS_DENIED.
The driver symbolic link handle is valid so it must be something different. I remember app <-> kernel driver device i/o control stuff has worked several months ago. Probably some parts in wineserver have been changed/rewritten over the months.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #53 from Anastasius Focht focht@gmx.net 2007-09-30 17:04:43 --- Created an attachment (id=8322) --> (http://bugs.winehq.org/attachment.cgi?id=8322) patch to implement device object access mapping
Hello,
after hours of placing traces into wineserver and looking at the code I finally found the cause. Seems the access rights mapping was wrong due to fallback mapper if no handler is present for the object.
--- snip (additional trace code by me) --- 0027: open_file_object( access=c0000000, attributes=00000040, rootdir=(nil), sharing=00000001, options=00000050, filename=L"\??\pnkbstrk_link" ) alloc_handle(1): ptr=0x924a740, acc=c0000000, attr=40 alloc_handle(2): ptr=0x924a740, acc=20000, attr=40 alloc_entry(): handle=0x64, access=0x20000 0027: open_file_object() = 0 { handle=0x64 } 0027: ioctl( handle=0x64, code=002261c0, async={callback=0x7bc38d40,iosb=0x61785854,arg=0x127418,apc=(nil),event=(nil)}, in_data={67,c4,3c,81,00,00,00,00} ) get_handle_obj(): access problem: handle=0x64, req_acc=1, now=0x20000 0027: ioctl() = ACCESS_DENIED { wait=(nil), options=00000000, out_data={} } --- snip ---
When a handle for an object is created in wineserver (alloc_handle), object access rights are remapped which is usually something like this (example from file object):
--- snip --- static unsigned int generic_file_map_access( unsigned int access ) { if (access & GENERIC_READ) access |= FILE_GENERIC_READ; if (access & GENERIC_WRITE) access |= FILE_GENERIC_WRITE; if (access & GENERIC_EXECUTE) access |= FILE_GENERIC_EXECUTE; if (access & GENERIC_ALL) access |= FILE_ALL_ACCESS; return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); } --- snip ---
If no mapping handler is present, a default handler is called. Well this default (fallback) handler mapping was not suited for device object case and resulted in wrong access right bitmasks which later led to access mismatch.
The patch resembles file objects mapper for device objects. Now the kernel mode driver gets its device io control requests.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #54 from Anastasius Focht focht@gmx.net 2007-09-30 17:09:15 --- Created an attachment (id=8323) --> (http://bugs.winehq.org/attachment.cgi?id=8323) patch to implement ntoskrnl.exe.MmGetSystemRoutineAddress
Hello,
when seeing it's first real device io control the driver dies immediately due to unimplemented ntoskrnl export.
--- snip --- trace:vxd:DeviceIoControl (0x64,2261c0,0x51bf44,8,0x41b228,16,0x618cd8b8,(nil)) trace:ntoskrnl:process_ioctl ioctl 2261c0 device 0x110a20 in_size 8 out_size 16 wine: Call from 0x7b840ab0 to unimplemented function ntoskrnl.exe.MmGetSystemRoutineAddress, aborting wine: Unimplemented function ntoskrnl.exe.MmGetSystemRoutineAddress called at address 0x7b840ab0 (thread 002b), starting debugger... Unhandled exception: unimplemented function ntoskrnl.exe.MmGetSystemRoutineAddress called in 32-bit code (0x7b840b28). --- snip ---
Attached patch implements it.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
EA Durbin ead1234@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8217 is|0 |1 obsolete| | Attachment #8218 is|0 |1 obsolete| | Attachment #8219 is|0 |1 obsolete| | Attachment #8277 is|0 |1 obsolete| | Attachment #8278 is|0 |1 obsolete| | Attachment #8279 is|0 |1 obsolete| | Attachment #8280 is|0 |1 obsolete| |
--- Comment #55 from EA Durbin ead1234@hotmail.com 2007-09-30 19:48:46 --- Created an attachment (id=8324) --> (http://bugs.winehq.org/attachment.cgi?id=8324) snip from ArmyOps.log, pb kick
Im able to join a server now and it assigns me a guid with your latest patches, but then I'm kicked with a driver failure message in the log, in the console during game play it said something about heart beats, and a communication failure.
http://bugs.winehq.org/show_bug.cgi?id=9685
Warren Dumortier elwario91@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |elwario91@gmail.com
--- Comment #56 from Warren Dumortier elwario91@gmail.com 2007-10-01 01:20:38 --- Hello!
This Service Communication Failure was present before, screen on warrock: http://www.host-img.info/img6/upload/6869_capture.png
I think we are nearby the solution, but if we resolve this bug, will the punkbuster bug resolved or just part of it?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #57 from EA Durbin ead1234@hotmail.com 2007-10-01 02:43:40 --- (In reply to comment #56)
I think we are nearby the solution, but if we resolve this bug, will the punkbuster bug resolved or just part of it?
When punkbuster stops removing me either by kick/ban from a server, then I'll mark this bug as fixed.
http://bugs.winehq.org/show_bug.cgi?id=9685
EA Durbin ead1234@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|wine-crypt32 |wine-misc
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #58 from Warren Dumortier elwario91@gmail.com 2007-10-01 03:08:39 --- Is there some improvement with the patch?
Is the error on the screen related to this bug or not?
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8323 is|0 |1 obsolete| |
--- Comment #59 from Anastasius Focht focht@gmx.net 2007-10-01 04:20:07 --- Created an attachment (id=8327) --> (http://bugs.winehq.org/attachment.cgi?id=8327) patch to implement ntoskrnl.exe.MmGetSystemRoutineAddress and other
Hello,
attached patch fixes bug in previous patch and adds missing stub + better trace output. Generally: don't be so excited... It's not much fun to debug this stuff (kernel driver) and the truth is: it could take days, weeks .. or months to resolve all issues.
There is no straight forward solution. You can experience a wide range of PB kick errors (131xxx) and there is no trace of the real cause. Some of them seem not only service <-> driver related.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Luke Bratch l_bratch@yahoo.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |l_bratch@yahoo.co.uk
http://bugs.winehq.org/show_bug.cgi?id=9685
Simon sileon@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sileon@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #60 from Anastasius Focht focht@gmx.net 2007-10-03 05:13:22 --- Created an attachment (id=8363) --> (http://bugs.winehq.org/attachment.cgi?id=8363) patch to make ZwQuerySystemInformation() return more useful values for SystemBasicInformation class
Hello
attached is patch which corrects some SystemBasicInformation values returned by ZwQuerySystemInformation() API.
The PB kernel driver expects page size of at least 4K and not greater 4MB. Don't know who came up with such a funny value of 1K as page size in current implementation. Such page size is not supported for x86 architectures.
Adjusted highest physical page too, the driver expects at least 0xFC00 pages to be present on system.
Another patch and conclusion is following ... stay tuned.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8327 is|0 |1 obsolete| |
--- Comment #61 from Anastasius Focht focht@gmx.net 2007-10-03 06:12:35 --- Created an attachment (id=8365) --> (http://bugs.winehq.org/attachment.cgi?id=8365) patch to make PB kernel driver happy. Revamped ioctl buffer handling and more
Hello,
this patch enables the PB kernel driver to work. See comments in source for further information.
- ioctl buffer handling has been party rewritten and clearified (especially "in" and "out" buffer parameters) - MmGetSystemRoutineAddress as previous patch - simple stubs for MmMapIoSpace, MmUnmapIoSpace and MmGetPhysicalAddress
The Mm-io and physical address space related stuff are just simple minded stubs which let _this_ driver work. Wine "kernel" has no concept of page mapping mechanism (page tables, phys vs. virtual) and paged vs. nonpaged pool. See comments. For other malware^H^H^H^H^H^H^Hrootkits like gameguard a full page directory/page tables emulation is required.
All three components, PB "A", "B", "K" services/driver are now functional. The kernel driver talks to its user mode client and the "heartbeat" is established.
As of wine-0.9.46-81-g4a5ba4c the following patches are needed:
http://bugs.winehq.org/attachment.cgi?id=8295&action=edit (driver entry point fix) http://bugs.winehq.org/attachment.cgi?id=8322&action=edit (device object access fix) http://bugs.winehq.org/attachment.cgi?id=8363&action=edit (ZwQuerySystemInformation fix)
and this one (ntoskrnl stubs+fixes)
... Sadly I have to take the optimism from you now ;-( Even the PB components work correctly now, there is currently an issue I cannot fix using _legal_ ways.
You will see sooner or later the infamous "UNKNOWN WINDOWS API FUNCTION [131124]" kick message. Sometimes it takes 30 minutes, sometimes the kick comes immediately after server join. It depends on the client checks "work item" scheduling position of the PB server. There is no predefined order for the checks to be issued at client side nor the interval is constant.
The main problem is the way they check for API hooking. To catch not only the simple redirected ones (trampolines) the take a fingerprint of certain API entries. That involves some well known system dlls, few API exports each. Usually XX bytes (opcodes) of an entry are read and send to server. EB probably has a database with all known signatures for different windows versions and patch levels (though I wonder how they handle windows dlls with hot-patching API). That signature is verified and if not matched a kick is issued for the client at game server.
Though even windows users suffer from this problem. There are (legal) tools like Powerstrip and others which hook certain API entries, which cause this exact problem (signature mismatch due to changed opcode sequences). When a new windows version and/or m$ patches come out, the signatures have to be added to avoid false kicks.
Some may suggest: "use native (windows) dlls". Well in fact you can't. Some dlls are a very integral part of wine (ntdll, kernel32) and can't be exchanged without rendering wine unusable.
Getting EB to add wine builtin dlls signatures is not really an option. Think of different wine versions, compiler setups and the like (= may produce wide range of different signatures). Impossible to manage.
Well, you could try to get EB to drop API signature checks which must be globally, because there is no differentiation between "real" windows and wine clients and even if: they have to make sure there is no abuse (pretending to be wine).
The only way that currently works (without known flaws) is another, completely different approach which involves native linux client. But before further steps are taken in this direction, some (legal) issues have to be resolved.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8365 is|0 |1 obsolete| |
--- Comment #62 from Anastasius Focht focht@gmx.net 2007-10-03 07:04:06 --- Created an attachment (id=8366) --> (http://bugs.winehq.org/attachment.cgi?id=8366) patch v2 to make PB kernel driver happy. Revamped ioctl buffer handling and more
Hello,
attached is patch v2 which corrects a variable typo/comment.
As of recent git (wine-0.9.46-119-g57a67eb) the device object access patch (http://bugs.winehq.org/attachment.cgi?id=8322&action=edit) is no more needed. Only people with older wine/git versions need to apply it.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #63 from Warren Dumortier elwario91@gmail.com 2007-10-05 13:30:17 --- I don't understeand! Is it/will it be possible to have punkbuster working legally or not? Does this mean that you can't use punkbuster under wine legally?
Are there patches able to let punkbuster work or not?
http://bugs.winehq.org/show_bug.cgi?id=9685
Daniel daniel.spies@fuceekay.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |daniel.spies@fuceekay.com
--- Comment #64 from Daniel daniel.spies@fuceekay.com 2007-10-07 05:40:35 --- Maybe we could get some help from id Software? They have it running on Linux, regarding to there latest news:
"The closed-beta testers are now able to play alongside Windows players on the same version, with full Punkbuster support."
See the full news here: http://community.enemyterritory.com/index.php?q=node/168
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #65 from Warren Dumortier elwario91@gmail.com 2007-10-07 10:51:37 --- Hi!
I think you didn't understeand ;) Punkbuster works on linxu if native! Some native linux games have it and quake wars too...
Punkbuster supports linux if the game supports it ;)
This will not help us ;)
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #66 from Daniel daniel.spies@fuceekay.com 2007-10-08 02:55:38 --- Eh, sorry, didn't think twice before posting. I never said something... :)
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #67 from Warren Dumortier elwario91@gmail.com 2007-10-08 10:02:43 --- No problem ;) But can someone say if it is really possible to have punkbuster working legally? And are we far from this dream that pb works on wine?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #68 from Juan Lang juan_lang@yahoo.com 2007-10-08 10:43:02 --- It seems difficult/unlikely to have the Windows version of pb working legally on Wine, if pb relies on checking the binary of various entry points. We can't legally copy MS's binaries.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #69 from Warren Dumortier elwario91@gmail.com 2007-10-08 12:29:31 --- But would it then possible with adding native dlls or on another way?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #70 from Stefan Dösinger stefandoesinger@gmx.at 2007-10-08 15:24:56 --- Because you can't use Microsoft's ntdll, kernel32, gdi32, d3d9 or ddraw.dll on Wine.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #71 from Warren Dumortier elwario91@gmail.com 2007-10-09 12:21:57 --- So m$'s dlls doesn't work and wine's dlls too? Impossible?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #72 from Stefan Dösinger stefandoesinger@gmx.at 2007-10-09 12:41:01 --- Yes, unless Even Balance removes the checksumming of the functions Win32 Punkbuster will never work on Wine. However, there is a Linux punkbuster client, we are investigating if this one can be of use.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #73 from Warren Dumortier elwario91@gmail.com 2007-10-09 12:44:39 --- Ok, would it possible to use punkbuster if there is no linux version with the game? I presume not ;)
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #74 from Stefan Dösinger stefandoesinger@gmx.at 2007-10-09 12:54:30 --- That's the thing I do not really know yet.
http://bugs.winehq.org/show_bug.cgi?id=9685
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|juan_lang@yahoo.com |
http://bugs.winehq.org/show_bug.cgi?id=9685
Paulo Hahn paulohahn@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |paulohahn@gmail.com
--- Comment #75 from Paulo Hahn paulohahn@gmail.com 2007-10-21 14:17:21 --- (In reply to comment #74)
That's the thing I do not really know yet.
I have instaled Americas Army 282 and PBClient for Linux, after intalation I updated PB for Americas Army, they donwloaded and installed files with no errors, now I am going to test with the game... I passed 3 of 4 basic training... 1 more round for the truth! It is so exciting!!!!
More late I will post results.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #76 from Stefan Dösinger stefandoesinger@gmx.at 2007-10-21 15:41:57 --- Well, installing the Linux Punkbuster client alone doesn't help there. But note that the Windows Punkbuster client works nice in win98 mode, it just fails in win2k/xp/vista mode. That screws up all games that require win2k+.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #77 from Paulo Hahn paulohahn@gmail.com 2007-10-21 16:31:21 --- The Linux version still is not working ... More studies are needed with respect to how the two software interact.
I was kicked out! Without extress!
Hmmm ... I will try this Win98. Tnks!
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #78 from Paulo Hahn paulohahn@gmail.com 2007-10-21 17:31:03 --- After configuring wine to run PnkBstrB.exe under Win98 compatibility, I tried to play again... now prepared with Screen shot :D
The message is: "PunkBuster Client: Removing MyUserName 00cc (0 Minutes) RESTRICTION: Service Communication Failure: PnkBstrB.exe initialization failed"
At this moment, PnkBstrB.exe and PnkBstrA.exe are running!
I suspect: Not a initialization failure for PB, but may be a communication channel not working?
I hope this information help someone to resolve this problem.
By... good week to all!
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #79 from Warren Dumortier elwario91@gmail.com 2007-10-23 12:28:51 --- We always had this error message with wine :/ Please resolve this ****ing punkbuster :) I've read that punkbuster uses a md5sum or something like that to check the windows version, maybe that it is the problem! (I'm not sure)
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #80 from gitarrenmoerk@yahoo.de 2007-10-24 12:30:06 --- Are there countepieces for PnkBstrB.exe and PnkBstrA.exe? If not it will be impossible to use the linux version of pb.
Does pbsetup update the .exe files? The manual update donwloads just contains dll and htm files.
btw: I just wrote a mail to evenbalance, wondering if they will answer...
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #81 from Anastasius Focht focht@gmx.net 2007-10-25 03:29:27 --- Hello,
whould you please stop spamming this thread with useless questions/infos? All technical details have already been discussed, there is no need to refrain everything.
Once again:
The windows version of punkbuster is technically working at API level (with patches I posted). Due to a certain PunkBuster check - the fingerprinting of certain API entries - you'll get kicked sooner or later. There is no legal way to fix this in wine! There are some ways to prevent/fake this check but they are intrusive and of course considered "hacks". If I would post infos/patches to fix this issue, it will open doors for having working hacks/cheats again. Cheating paradise, talk about easy hardware ban evasion whatever.
As previously said: the only way to use windows PB Client is to run the game in Win9X Mode where certain PB components/functionalities are disabled by default (services, several api checks).
---
There is another way which works quite flawlessly: using PB thunking layer. It requires the native linux PB client for the game (not all games have linux PB client). The culprit is: the linux PB client has much reduced functionality for anti-cheating countermeasures than it's windows counterpart.
Again: if that stuff is disclosed, all cheats and hacks will work again due to the way the linux client is currently designed (because it was never intended to be used within wine). I tested it myself with most public cheats/hacks (known for being detected). They work flawlessly with this approach (undetected by design).
So what solution would you prefer?
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #82 from Daniel daniel.spies@fuceekay.com 2007-10-25 07:40:00 --- I just tried the Windows 98 solution and it doesn't work. I got kicked after five minutes of playing. (Unknown Windows API...) I set Windows 98 to default and explicit to CoDMP.exe. THere was some output (several times) in my terminal: fixme:vxd:VXD_Open Unknown/unsupported VxD L"smartvsd.vxd". Try setting Windows version to 'nt40' or 'win31'.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #83 from gitarrenmoerk@yahoo.de 2007-10-25 14:20:00 --- @ Anastasius Focht: Sorry, I don't want to spam. I just give the input I can to help where I can. Some of the things you wrote I was not able to find while reading all comments. I also can't see current movement so I don't think that deliberating will harm anyone.
@ all: Is it impossible to implement those api functions or is it illegal? We know that we can't use the linux client because native Windows games like BF2 doesn't have one. Under (imitated) Win 98 the Windows clients work, but do they work if they are included within Win XP games? If they do, why don't pretend to be Win 98, but give XP functionality?
Perhaps I am not intelligent enough to understand it, but where is the final problem?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #84 from Anastasius Focht focht@gmx.net 2007-10-25 15:52:50 --- Hello,
--- quote --- Is it impossible to implement those api functions or is it illegal? --- quote ---
There are quite a number of dlls functions that need their API entry signatures to be matched to windows ones. Currently the following dlls are checked: user32, ntdll, kernel32, psapi, iphlpapi, d3d9, opengl32, ddraw. For each dll, a selected number of API entries [known for being hooked] are fingerprinted. In worst case this means you have to duplicate API entry code for 30+ API functions. Technically you can fake API entry opcodes by placing __asm__ wrappers around all checked API functions and then call real ones later. This would interfere with wine's tracing and relay functionality (you can't have both). Additionally not all API entry code can be matched because some windows code is special requiring additional [internal] windows structures/data layouts in place.
(1) You would have to gather a list of all API signatures being checked (can be very time consuming - although possible). (2) disassemble all checked API entry code for specific windows version and make __asm__ wrappers for it's wine counterparts (at least 20-30 opcode bytes deep). (3) extensive testing for any side-effects on other apps (4) profit! (joke) :-)
Well ... at least (2) is not compatible with wine policy ;-)
--- quote --- We know that we can't use the linux client because native Windows games like BF2 doesn't have one. --- quote ---
Yes, for games that don't have native linux client the thunking approach won't work.
--- quote --- Under (imitated) Win 98 the Windows clients work, but do they work if they are included within Win XP games? If they do, why don't pretend to be Win 98, but give XP functionality? --- quote ---
Games that require Windows NT/2K/XP will simply refuse to start if you fake OS version info to Win9X. You would have to lie to PunkBuster about windows version (imposting Win9X) but tell all other game code "we're running NT/2K/XP". Technically possible (by walking callstacks) but such functionality is very specific/intrusive/hackish for the sole purpose of running PunkBuster. Simply spoken: such code would _never_ make it into official wine tree.
As shown in comment #82 there is no insurance that all API entry checks are disabled in Win9X config (differs between game/client versions).
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #85 from EA Durbin ead1234@hotmail.com 2007-10-25 18:10:08 --- --- quote --- If I would post infos/patches to fix this issue, it will open doors for having working hacks/cheats again. Cheating paradise, talk about easy hardware ban evasion whatever. --- quote ---
Wine already allows you to spoof your hard drive serial # and spoofing your mac address isn't hard, I think that's all evenbalance uses to issue hardware bans.
As for cheating paradise, it's better than not being able to play at all due to punkbuster. Evenbalance refuses to support, or even assist projects like wine and cedega. I personally wouldn't mind giving them some incentive to be a little more community friendly.
Anastasius, I'm curious about the thunking solution, could you elaborate a little more on how the thunking approach works? The last version of America's Army in Linux was 2.3, does it use the same punkbuster version as the newer windows version, are there conflicts between the Windows and Linux versions? How does the thunking approach work?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #86 from Anastasius Focht focht@gmx.net 2007-10-25 18:43:02 --- Hello,
--- quote --- As for cheating paradise, it's better than not being able to play at all due to punkbuster. Evenbalance refuses to support, or even assist projects like wine and cedega. I personally wouldn't mind giving them some incentive to be a little more community friendly. --- quote ---
s/incentive/punishment/g ;-)
--- quote --- Anastasius, I'm curious about the thunking solution, could you elaborate a little more on how the thunking approach works? The last version of America's Army in Linux was 2.3, does it use the same punkbuster version as the newer windows version, are there conflicts between the Windows and Linux versions? How does the thunking approach work? --- quote ---
Basically the interfaces of both clients (windows and linux) are compatible at binary level - but only the "client pair", tied to specific game. The PB clients of different games have different binary interfaces. The thunk bridges/delegates the in-game and PB interface callbacks plus some minor internal data conversion, related to windows vs. linux issues. There are no known conflicts (yet) - as long as the interfaces remain stable.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #87 from EA Durbin ead1234@hotmail.com 2007-10-25 19:14:50 --- Can you give me an example of implementing thunking layer code, or a link to learn more about the subject?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #88 from Warren Dumortier elwario91@gmail.com 2007-10-29 14:41:09 --- Hello!
Are there improvement in wine 0.9.48 about punkbuster? Today I played CoD2 on a punkbuster server and I playes 1 hour without being kicked! I saw a lot of punkbuster messages and sometimes there were kicked players but I've never been kicked!
But on evenbalance.com I saw there were CoD2 binairies of punkbuster, is that a solution provided by PB or not? But I didn't download them or whatever, so I presume that it isn't related!
Also why do they provide binaries of pb if there's no linux version?
Can someone help me, thanks!
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #89 from Anastasius Focht focht@gmx.net 2007-10-31 10:54:53 --- Hello,
--- quote --- Can you give me an example of implementing thunking layer code, or a link to learn more about the subject? --- quote ---
If you're curious: you just have to write a wine (builtin) dll (winegcc) that exports same PB interface and talks to the linux PB client (.so library) using dlopen/dlsym. Of course you need some knowledge on PB api exports. Anyway, forget that thunking approach. Seems recent PB updates broke even this way on games that worked before (having binary compatible interfaces win<->linux).
I'm currently in the process of gathering some statistics to calculate the effort of making API wrappers to please PB signature checks - but it's very time consuming. I already gathered an increasing list of API calls being checked, each corresponding to a specific 1311xx number. To please the signature scanner I faked the API entry opcodes from my Windows XP SP2 binaries and this keeps it happy (that proved my theory). Unfortunately I have no knowledge _how many_ different API calls are actually verified (scattered between number of dlls). If the number remains somewhat manageable (<25) it could be worth to mimic windows API entries with __asm__ wrappers to keep that signature scanner happy (just like I recently did for Shrinker PE compressor).
Currently I run the Battlefield series (BF1942, Vietnam, BF2) and Americas Army as PunkBuster testbed without further problems. Although random 1311xx kicks are still there - when APIs are checked I have no signature for (I add them "on demand" = "on kick"). Though I could automate this process by having windows versions of the required dlls in place and calculating the required export signatures on demand at run time.
In my opinion this stuff is just a big waste of time because even if I gather a more or less complete list of checked entries, the patches probably won't make it into official wine tree ... and EB could add expand that list every time to disrupt this effort.
Just bugger EB to drop/loosen 131xxx signature checks. All other stuff just works fine - as long as EB doesn't add other braindamaged methods, requiring windows interna mimicked. Hell, they could easily implement non OS/patchlevel specific analyzer to verify if an API entry has been hooked (using some heuristics) - so even wine could be officially supported.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #90 from EA Durbin ead1234@hotmail.com 2007-10-31 18:24:29 --- (In reply to comment #89)
Hello,
In my opinion this stuff is just a big waste of time because even if I gather a more or less complete list of checked entries, the patches probably won't make it into official wine tree ... and EB could add expand that list every time to disrupt this effort.
This and copy protection are the two biggest obstacles to adopting gaming in linux, and hence linux adoption in general. If it is absolutely impossible to come up with a wine acceptable solution for this, just maintaining a pb patch or unofficial third-party wine tree may be the only solution. Cedega currently doesn't support pb either, it's a huge need that's just waiting to be filled.
Just bugger EB to drop/loosen 131xxx signature checks. All other stuff just works fine - as long as EB doesn't add other braindamaged methods, requiring windows interna mimicked. Hell, they could easily implement non OS/patchlevel specific analyzer to verify if an API entry has been hooked (using some heuristics) - so even wine could be officially supported.
EB absolutely refuses to bend their code to conform with wine or cedega, nor will they support users of these api compatibility layers as Stuart Dunsmore has been quoted as stating before.
so bugger EB = render the checks useless and persuade them to drop them
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #91 from Stefan Dösinger stefandoesinger@gmx.at 2007-10-31 18:38:01 --- if EB is stubborn, it might be more efficient to talk to server admings. Write an open letter to server admins explaining the situation and perhaps disabling thunkbuster.
However, I think it is an illusion to ask for disabling PB, as it will open the door for script kiddies. I am not too familiar with the server controls, but if some specific PB checks can be disabled by server admins it might help us.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #92 from EA Durbin ead1234@hotmail.com 2007-11-01 07:12:35 --- (In reply to comment #91)
if EB is stubborn, it might be more efficient to talk to server admings. Write an open letter to server admins explaining the situation and perhaps disabling thunkbuster.
However, I think it is an illusion to ask for disabling PB, as it will open the door for script kiddies. I am not too familiar with the server controls, but if some specific PB checks can be disabled by server admins it might help us.
Most honor/rank programs require punkbuster to be enabled.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #93 from Anastasius Focht focht@gmx.net 2007-11-01 11:21:59 --- Hello,
--- snip --- EB absolutely refuses to bend their code to conform with wine or cedega, nor will they support users of these api compatibility layers as Stuart Dunsmore has been quoted as stating before.
so bugger EB = render the checks useless and persuade them to drop them --- snip ---
Render useless? Then hack the PB server binaries not the client. The server schedules the client side checks. In case of signature checks it gets the "match" list from EB servers and verifies against what the clients returned.
Windows users get 131xxx kicks too because Micro$oft issues hot fixes/security updates on regular schedule which can change API entry signatures. Yesterday I encountered an API signature even invalid for my Windows XP SP2 with latest updates.
Just a "bad" example how brain damaged the PB signature approach is:
"UNKNOWN WINDOWS API FUNCTION [131131]"
This is in fact a signature mismatch of kernel32.GetTickCount() API.
They currently have 9(!) different signatures for this one (as of 29.10.2007). In this case, few signatures contain opcode "wildcards", mostly exact match is needed. Due to the nature of this API call, it changes very frequently because its entry code contains unconditional 32 bit jump destinations (mostly through "jmp <rel32>" or "jmp <rel8> + jmp <rel32> or "mov <reg32>,<off32> ; jmp <reg32>" ...) Every time Micro$oft changes some of their code in system libraries, the compiler _might_ generate different destination addresses, even for code blocks which are not directly changed (but contain branches to other code) -> different signature if no wildcards are used for jump destinations.
When users report their kicks, they usually get an answer like "blame virii/hacks/cheats/3rd party software". This might be true for some cases but in fact many signature mismatches are caused by windows security updates.
So even if I take the opcode sequences containing most "wildcards" from each API call it is difficult to mimick because the __asm__ wrappers must not do any "damage", e.g. leave the callstack and data structures intact. Some of their API selections have only one signature = difficult to mimick due to specific register usage in entry code.
The more the list grows, the more reluctant I get to go any further. Never ending story, which might be unmaintainable even for unofficial patches.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8366 is|0 |1 obsolete| |
--- Comment #94 from Anastasius Focht focht@gmx.net 2007-11-01 15:33:31 --- Created an attachment (id=8920) --> (http://bugs.winehq.org/attachment.cgi?id=8920) small fix for safedisc 2.x related secdrv issue
Hello,
just a small update in case someone uses the patches from this bug id in conjunction with upcoming SafeDisc 2.x patch.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #95 from EA Durbin ead1234@hotmail.com 2007-11-01 17:56:13 --- (In reply to comment #94)
Created an attachment (id=8920)
--> (http://bugs.winehq.org/attachment.cgi?id=8920) [details]
small fix for safedisc 2.x related secdrv issue
Hello,
just a small update in case someone uses the patches from this bug id in conjunction with upcoming SafeDisc 2.x patch.
Regards
: ) will this SafeDisc 2.0 patch be posted under bug 219?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #96 from westcubegeek westcubegeek@gmail.com 2007-11-07 07:04:44 --- Hello! Sorry to spam this bug but I would like to say and ask something...
Having 2 games installed with wine i've compared 'Warrock' and 'Call of Duty 2'.
After playing 2 hours on Call of Duty 2 on a punkbuster server, i've seen that i were not kicked! I tried again today playing 2 hours on a punkbuster server without being kicked!
But when i played 1 minute Warrock, I was directly kicked!
This is strange (for me)!
But i've seen that there were client files for linux for Call of Duty 2: http://evenbalance.com/index.php?page=dl-cod2.php
As you can see there are files for Linux but this game isn't native!?!
Warrock doesn't have client files and it doesn't work...
So my question is: does punkbuster works on wine with Linux clients? I hope i'm not the first to see this!
Again, sorry is you knew that but i am trying to help ;) Can someone also confirm if it works or not and if it related or not?
http://bugs.winehq.org/show_bug.cgi?id=9685
Andrew Min baseballnut@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |baseballnut@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
Julian Rüger jr98@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jr98@gmx.net
http://bugs.winehq.org/show_bug.cgi?id=9685
Wiebe Cazemier wiebe@halfgaar.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wiebe@halfgaar.net
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #97 from Wiebe Cazemier wiebe@halfgaar.net 2007-12-27 18:00:09 --- I kind of lost track in all the messages, so allow me to ask some questions.
Are the posted patches part of the current release (0.9.51)? If so, does that mean that games which can run on win98 work with Punkbuster?
The game I'm trying to get to work, is Call of Duty 1. But whatever I do, I get kicked from punkbuster games, with the message "service communication failure, pnkbstra.exe", or something. What hasn't become clear to me, is how to fix this particular problem. Can it be solved, or is it as problematic as the API scan?
http://bugs.winehq.org/show_bug.cgi?id=9685
Jeff Zaroyko jeffzaroyko@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeffzaroyko@gmail.com
--- Comment #98 from Jeff Zaroyko jeffzaroyko@gmail.com 2008-02-25 19:04:49 --- confirming punkbuster is not functional with Battlefield 1942 1.6x
the default install will work but after about 20 minutes it updated and disconnected me with the message 'PunkBuster kicked player "foo"' 'RESTRICTION. Service Communication Failure. PnKBstrB.exe initialization failed'
http://bugs.winehq.org/show_bug.cgi?id=9685
Frank Sagurna fgunni@01019freenet.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fgunni@01019freenet.de
http://bugs.winehq.org/show_bug.cgi?id=9685
Mantas Mantislav@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Mantislav@gmail.com
--- Comment #99 from Mantas Mantislav@gmail.com 2008-03-13 15:10:43 --- Hello, How i see you writed very much and maybe finded a solution. I playing America's Army 2.8.3 and i too got that error (UNKNOWN WINDOWS API FUNCTION [131124]). How i see, you here are add very much patch's and i can't find what patch i need, to fix that my problem. Please, tell to this stupid boy, what patch i need?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #100 from Stefan Dösinger stefandoesinger@gmx.at 2008-03-13 15:20:53 --- None of the patches fixes that problem
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #101 from Anastasius Focht focht@gmx.net 2008-03-13 17:59:42 --- Hello,
same old story every month ...
131124 is the code for fingerprint mismatch of kernel32.dll!IsBadReadPtr (about 40+ API entries of various system/dx dlls are fingerprinted).
You have to hack the PB client itself - which is kind of pointless if you're not going to cheat anyway.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #102 from Mantas Mantislav@gmail.com 2008-03-14 05:50:10 --- Yeah, but maybe are variant connect Linux PunkBuster to America's Army?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #103 from Mantas Mantislav@gmail.com 2008-03-15 13:36:16 --- Bad news:
--- Reply From PunkBuster --- We appreciate you writing in. Unfortunately, PunkBuster is not supported for emulation, as many of the checks within PunkBuster will not work under emulation. We sorry, but we have no immediate plans to support Wine at this time. - -
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #104 from EA Durbin ead1234@hotmail.com 2008-03-16 15:50:21 --- PunkBuster will not work under emulation
wine is not an emulator
http://bugs.winehq.org/show_bug.cgi?id=9685
killertux killertux@suomi24.fi changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |obfuscation
http://bugs.winehq.org/show_bug.cgi?id=9685
th00ry daarty@gg-com.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |daarty@gg-com.de
--- Comment #105 from th00ry daarty@gg-com.de 2008-04-13 05:56:42 --- how would you basically write such a pb hack / or at least fake the fingerprints? just curious ;D most probably i am too unskilled for it anyway
th00ry
http://bugs.winehq.org/show_bug.cgi?id=9685
William wwarsin@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wwarsin@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
Warren Dumortier kwixbit@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |kwixbit@gmail.com
--- Comment #106 from Warren Dumortier kwixbit@gmail.com 2008-05-18 12:40:05 --- Hi!
So if i understand, it's technically impossible to have punkbuster working in wine?
So i think the only solution (legally), is to ask evenbalance (punkbuster) to accept wine as windows version or something like that, is it possible? A petition for asking wine support (fingerprinting?) would be nice...
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #107 from Wiebe Cazemier wiebe@halfgaar.net 2008-05-18 13:04:37 --- That's never gonna happen. Even if they wanted, they couldn't support wine, I guess. It changes too often for that.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #108 from Warren Dumortier kwixbit@gmail.com 2008-05-21 07:54:14 --- Why wouldn't it be possible? Maybe they could support Wine, even if it sin't on the same way as Windows...
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #109 from Wiebe Cazemier wiebe@halfgaar.net 2008-05-21 08:04:46 --- They are even having problems avoiding false positive flags on legitimate Windows installations. With such a constantly moving target such as Wine, there is no way to reliably detect whether it has been tempered with. Should they support every version of Wine, no matter the API signatures and such, you open the door for cheaters.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #110 from Stefan Dösinger stefandoesinger@gmx.at 2008-05-21 08:24:26 --- There's a native linux PB client. I once wrote a thunk pbcl.dll that calls pbcl.so. Worked like a charm for ~ 2 weeks, then there was a PB update and the server started taking a screenshot on login. The screenshot function isn't implemented in the linux client, so an error was returned and kick. Ditched the thunk idea after that.
http://bugs.winehq.org/show_bug.cgi?id=9685
haarp liquitsnake@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |liquitsnake@gmx.net
--- Comment #111 from haarp liquitsnake@gmx.net 2008-05-21 08:40:25 --- Mhh. Since the thunk idea worked at some point, that may be the way to go.
The issue at hand would be to get Evenbalance to keep the Linux and Win versions of Punkbuster in sync. With the amount of cooperation that they have shown in the past I find that highly unlikely.
Also, won't that make Wine depend on Punkbuster?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #112 from Warren Dumortier kwixbit@gmail.com 2008-05-21 10:47:15 --- Nice to know that it would be technically possible (if understand)! If it wouldn't be included by default in wine, it would be nice that the working dll could be added by the user to be able to play! (Would be great enough!) Maybe EvenBalance would agree to sync versions...
http://bugs.winehq.org/show_bug.cgi?id=9685
Paul "TBBle" Hampson Paul.Hampson@Pobox.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Paul.Hampson@Pobox.com
--- Comment #113 from Paul "TBBle" Hampson Paul.Hampson@Pobox.com 2008-05-28 04:37:13 --- (In reply to comment #89)
If the number remains somewhat manageable (<25) it could be worth to mimic windows API entries with __asm__ wrappers to keep that signature scanner happy (just like I recently did for Shrinker PE compressor).
I'm guessing this proved to be unmanageable from comment #101.
Though I could automate this process by having windows versions of the required dlls in place and calculating the required export signatures on demand at run time.
Maybe this idea could survive as an out-of-tree patch?
I dunno how it's actually getting the API entry point addresses, but could it be faked to actually return addresses to Microsoft's DLLs, loaded into memory, for PunkBuster specifically? That assumes PunkBuster doesn't then jump to the entry points it used to read the opcodes it sends to the server...
That might be easier/simpler than generating asm wrappers at run time. Or maybe not...
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8311 is|0 |1 obsolete| | Attachment #8322 is|0 |1 obsolete| |
--- Comment #114 from Anastasius Focht focht@gmx.net 2008-06-01 10:41:55 --- Created an attachment (id=13556) --> (http://bugs.winehq.org/attachment.cgi?id=13556) patch to fix CRYPT_QueryEmbeddedMessageObject
Hello,
just visiting my old stuff again ... Currently 2 out of 3 pb services won't start anyway due to crypt32 bug. Attached patch makes digital certificate verification succeed. Probably applies to other apps too.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #115 from Warren Dumortier kwixbit@gmail.com 2008-06-13 15:18:58 --- Hi!
I don't have the time and energy to test your patch and compile wine, but does your patch make PunkBuster, or some part of PunkBuster work in Wine?
Kind regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8295 is|0 |1 obsolete| |
--- Comment #116 from Anastasius Focht focht@gmx.net 2008-06-14 09:36:30 --- Created an attachment (id=14001) --> (http://bugs.winehq.org/attachment.cgi?id=14001) patch to prevent kernel driver entry point called in LoadLibrary
Hello,
revisiting. Small fix and rebased against wine-1.0-rc5
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8363 is|0 |1 obsolete| |
--- Comment #117 from Anastasius Focht focht@gmx.net 2008-06-14 09:39:53 --- Created an attachment (id=14002) --> (http://bugs.winehq.org/attachment.cgi?id=14002) patch to make ZwQuerySystemInformation() return more useful values for SystemBasicInformation class
Hello,
revisiting. Rebased against against wine-1.0-rc5
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #8920 is|0 |1 obsolete| |
--- Comment #118 from Anastasius Focht focht@gmx.net 2008-06-14 09:53:50 --- Created an attachment (id=14004) --> (http://bugs.winehq.org/attachment.cgi?id=14004) Patch which adds/fixes ntoskrnl functionality required for Punkbuster kernel driver
Hello,
revisiting. Revamped patch against wine-1.0-rc5
Fixes METHOD_BUFFERED handling (shared in/out buffer) Added MmGetSystemRoutineAddress Added MmMapIoSpace Added MmUnmapIoSpace Added MmGetPhysicalAddress
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #119 from Anastasius Focht focht@gmx.net 2008-06-14 10:23:23 --- Hello,
--- quote --- I don't have the time and energy to test your patch and compile wine, but does your patch make PunkBuster, or some part of PunkBuster work in Wine? --- quote ---
Sure. I just reviewed my old patches and adjusted some stuff, they still work.
The additional patch for CRYPT_QueryEmbeddedMessageObject from my comment #114 is most likely a regression.
To get all services/drivers running, the following patches are currently needed:
http://bugs.winehq.org/attachment.cgi?id=13556 (CRYPT_QueryEmbeddedMessageObject fix, most likely regression) http://bugs.winehq.org/attachment.cgi?id=14001 (patch to prevent kernel driver entry point called in LoadLibrary) http://bugs.winehq.org/attachment.cgi?id=14002 (ntdll ZwQuerySystemInformation, SystemBasicInformation class fix) http://bugs.winehq.org/attachment.cgi?id=14004 (required Ntoskrnl enhancements)
With the patches applied, the Windows version of Punkbuster is technically working - from API perspective.
From the "countermeasure" perspective there are subtle differences.
Some PB "features" don't work as intended but *Ssssh* ;-)
You can verify the "basic" function of the services (startup/communication/shutdown) with this tool from EvenBalance:
http://www.evenbalance.com/downloads/pbsvc/pbsvc.exe
C:\WINDOWS\system32\PnkBstrA.exe C:\WINDOWS\system32\PnkBstrB.exe C:\WINDOWS\system32\drivers\PnkBstrK.sys
For further information see: http://www.evenbalance.com/index.php?page=pbsvcfaq.php
----
Out of curiosity .. I visited some BF1942 Punkbuster enabled servers to test the reviewed patches and it seems they didn't carry out API fingerprinting check, tested for some hours without single kick. Though that could be coincidence.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
http://bugs.winehq.org/show_bug.cgi?id=9685
Brian Vuyk brian@brianvuyk.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |brian@brianvuyk.com
--- Comment #120 from Brian Vuyk brian@brianvuyk.com 2008-06-16 13:03:42 --- Anastasius,
What is the current status then? With these patches, are the PB issues worked out? Or are we still hung up on the API fingerprinting? You seem to imply that it is fully functional...
Secondly, you mentioned that BF1942 didn't seem to use the API check... are the API checks generally used on all PB installs? Or do different games use different checks?
You've done some good work here - resolving this bug will do a lot to make gaming on Wine/Linux more viable.
http://bugs.winehq.org/show_bug.cgi?id=9685
Fernando Otero granamachine-wa@yahoo.com.ar changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |granamachine-wa@yahoo.com.ar
--- Comment #121 from Fernando Otero granamachine-wa@yahoo.com.ar 2008-06-20 22:36:43 --- (In reply to comment #119)
To get all services/drivers running, the following patches are currently needed:
http://bugs.winehq.org/attachment.cgi?id=13556 (CRYPT_QueryEmbeddedMessageObject fix, most likely regression) http://bugs.winehq.org/attachment.cgi?id=14001 (patch to prevent kernel driver entry point called in LoadLibrary) http://bugs.winehq.org/attachment.cgi?id=14002 (ntdll ZwQuerySystemInformation, SystemBasicInformation class fix) http://bugs.winehq.org/attachment.cgi?id=14004 (required Ntoskrnl enhancements)
With the patches applied, the Windows version of Punkbuster is technically working - from API perspective. From the "countermeasure" perspective there are subtle differences. Some PB "features" don't work as intended but *Ssssh* ;-)
Hello Will that work with 1.0? Could some of these patches make it into wine tree? Thanks.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #122 from EA Durbin ead1234@hotmail.com 2008-06-20 22:45:39 ---
Hello Will that work with 1.0? Could some of these patches make it into wine tree? Thanks.
Unfortunately Alexandre doesn't allow patches from anononymous authors as Anastasius Focht is a pseudonym.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #123 from Warren Dumortier kwixbit@gmail.com 2008-06-22 03:25:30 --- So you mean that these patches are really working? Nice, but what should you do then to have thes patches included in wine? Would be nice for next version! :)
http://bugs.winehq.org/show_bug.cgi?id=9685
Charles Joynson ctjoynson@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ctjoynson@gmail.com
--- Comment #124 from EA Durbin ead1234@hotmail.com 2008-06-22 12:47:40 --- (In reply to comment #123)
So you mean that these patches are really working? Nice, but what should you do then to have thes patches included in wine? Would be nice for next version! :)
You can use Anastasius work as a guideline, but his patches won't be accepted. If you send them to wine-patches Alexandre will reject them. You can however write your own patches with test cases from what you learned from Anastasius Focht's work, but he uses a pseudonym and wishes to remain anonymous, he could have inside knowledge or could have signed a noncompete clause. For all we know he could be Steve Ballmer trying to taint the project. It would be nice if he used his real name and could send patches since he seems to know quite a bit.
--- Comment #125 from Charles Joynson ctjoynson@gmail.com 2008-06-25 20:53:27 ---
To get all services/drivers running, the following patches are currently needed:
http://bugs.winehq.org/attachment.cgi?id=13556 (CRYPT_QueryEmbeddedMessageObject fix, most likely regression) http://bugs.winehq.org/attachment.cgi?id=14001 (patch to prevent kernel driver entry point called in LoadLibrary) http://bugs.winehq.org/attachment.cgi?id=14002 (ntdll ZwQuerySystemInformation, SystemBasicInformation class fix) http://bugs.winehq.org/attachment.cgi?id=14004 (required Ntoskrnl enhancements)
Hi. I still got kicked from PunkBuster after applying these patches.
I was playing America's Army 2.8.3.1. I patched the Ubuntu 8.04 x86 source and built a package. That package can be downloaded from here: http://www.2shared.com/file/3498878/6bc627f/wine_100winehq0ubuntu804-1_i386....
If anyone wants to try it, you should 'sudo dpkg --purge wine' before installing it.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #126 from Fernando Otero granamachine-wa@yahoo.com.ar 2008-06-25 22:05:30 ---
Hi. I still got kicked from PunkBuster after applying these patches.
I was playing America's Army 2.8.3.1. I patched the Ubuntu 8.04 x86 source and built a package. That package can be downloaded from here: http://www.2shared.com/file/3498878/6bc627f/wine_100winehq0ubuntu804-1_i386....
If anyone wants to try it, you should 'sudo dpkg --purge wine' before installing it.
I think the patches will only work with a previous version of wine (maybe 1.0rc5).
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #127 from Anastasius Focht focht@gmx.net 2008-06-26 08:52:46 --- Hello,
--- quote --- Hi. I still got kicked from PunkBuster after applying these patches. --- quote ---
Again (1000th time) ...
The patches make PunkBuster services/kernel driver *functionally* working, e.g. no service load/startup failure, no crash due to missing APIs, no unexpected API data...
The kicks due to mismatching API signatures can't be worked around with simple patches. The legal and technical issues have already been discussed several times.
To counter the API fingerprinting you have to attack/hack the PB client itself - which ironically contradicts the purpose of PB. Although EB did shut down a number of attack vectors over several years, there are still some left which allow to alter all the information gathered by the client before being sent to server. Though that requires a certain level of understanding how the client internally works. My private just-for-fun stuff which directly targets the client still works without being detected (dating from early days of PB). If correctly done, it enables all known detected cheats/hacks to run undetected.
--- quote --- he could have inside knowledge or could have signed a noncompete clause. For all we know he could be Steve Ballmer trying to taint the project. It would be nice if he used his real name and could send patches since he seems to know quite a bit. --- quote ---
Do I look like a monkey boy? You can be assured that I've never worked for any of the monopolist/evil companies in question like M$, Google, Adobe, etc. nor signed NDA. The reasons are purely private nature, call it personal preference.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #128 from Fernando Otero granamachine-wa@yahoo.com.ar 2008-06-26 16:16:19 --- (In reply to comment #127)
The patches make PunkBuster services/kernel driver *functionally* working, e.g. no service load/startup failure, no crash due to missing APIs, no unexpected API data...
The kicks due to mismatching API signatures can't be worked around with simple patches. The legal and technical issues have already been discussed several times.
To counter the API fingerprinting you have to attack/hack the PB client itself
- which ironically contradicts the purpose of PB.
Although EB did shut down a number of attack vectors over several years, there are still some left which allow to alter all the information gathered by the client before being sent to server. Though that requires a certain level of understanding how the client internally works. My private just-for-fun stuff which directly targets the client still works without being detected (dating from early days of PB). If correctly done, it enables all known detected cheats/hacks to run undetected.
Hi again So, if I understand correctly, in order to play without being kicked you need these patches AND your "private just-for-fun stuff". Am I right?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #129 from Anastasius Focht focht@gmx.net 2008-06-26 16:47:26 --- Hello,
--- quote --- So, if I understand correctly, in order to play without being kicked you need these patches AND your "private just-for-fun stuff". Am I right? --- quote ---
Exactly. Though weeks ago I tested some official PB enabled BF1942 servers and the client didn't receive a single fingerprinting command but all the usual in-memory scanning for cheats/hacks/patches and other detection methods. At the same time when I tested against PB enabled BF2 servers, the client immediately received signature scans. The types/amount/order of checks are delivered through EB servers (control is there).
So it might be possible that you encounter situations that allow playing with that patches applied without getting kicked with 131xxx's.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #130 from Frank Sagurna fgunni@01019freenet.de 2008-06-27 05:00:52 --- Hi Anastasius,
i think you have the right for privacy, but i would really like these patches get into wine. Maybe there is a way to resolve both? I dont know if you can contact some wine developer directly to prove that your not Bill, Steve or RMS, and to keep your privacy. Maybe then you can help a lot of people with that patches (and of course it would help me, as i would be able to play my favorite game BF1942 without restrictions)
Regards Frank
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #131 from Luke Bratch l_bratch@yahoo.co.uk 2008-06-27 18:13:17 --- Charles, please do not reply to wine-bugs, post in Bugzilla instead. Email read:
"You can play BF1942 right now if you just patch and compile wine yourself. EB isn't doing any API fingerprinting for BF1942 as Anastasius explained.
https://help.ubuntu.com/community/BuildingWineFromSource"
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #132 from Juan Lang juan_lang@yahoo.com 2008-07-11 11:06:25 --- (In reply to comment #114)
just visiting my old stuff again ... Currently 2 out of 3 pb services won't start anyway due to crypt32 bug. Attached patch makes digital certificate verification succeed. Probably applies to other apps too.
Thanks, that was a regression. I've sent a patch: http://www.winehq.org/pipermail/wine-patches/2008-July/057705.html
http://bugs.winehq.org/show_bug.cgi?id=9685
Mantas Meijito@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |Meijito@gmail.com
--- Comment #133 from Mantas Meijito@gmail.com 2008-07-16 14:09:18 --- Hello,
It's a little hard to understand which patches from here we need to make PB work on Wine. Maybe you could write step by step which patches we need? Something like that:
....
1. Patch #1 2. Patch #2 3. Patch #3 4. Patch #4 5. Patch #5 6. Now make PB update: "c:/..../pbsetup.exe" 7. Now start: "wine c:/...../pnkbstrb.exe" 8. Now start: "wine c:/...../pnkbstra.exe" 9. Now start game: "wine ArmyOps.exe"
.....
Thanks, Mantas.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #134 from Anastasius Focht focht@gmx.net 2008-07-16 16:22:02 --- Hello,
--- quote --- It's a little hard to understand which patches from here we need to make PB work on Wine. Maybe you could write step by step which patches we need? Something like that: --- quote ---
The patch for CRYPT_QueryEmbeddedMessageObject is no longer needed. This commit fixes the regression: 14a12b88614746375c8456a29324965cd61b652e
You need to apply the following patches:
http://bugs.winehq.org/attachment.cgi?id=14001 http://bugs.winehq.org/attachment.cgi?id=14002 http://bugs.winehq.org/attachment.cgi?id=14003
e.g.:
patch -p1 < wine-ntdll-native-driver-loader.patch patch -p1 < wine-ntdll-correct-sbivalues.patch patch -p1 < wine-ntoskrnl-required-punkbuster-fixes.patch
Then rebuild wine (make && make install)
======= PB service test (can be skipped) ========== The PB service/driver install, loading and communication can be tested without a game installed by using their service tool:
http://www.evenbalance.com/downloads/pbsvc/pbsvc.exe
Though that can you can skip this, it's only needed in case of diagnosing general service problems/regressions ;-)
All 3 services should pass. At the end of service test (when dynamic kmode driver service is stopped and deleted from SCM) there is still a bug lurking in service code, which luckily doesn't affect the overall functioning of PB.
You can verify the outcome by looking at generated log files in:
C:\windows\system32\LogFiles\PunkBuster\
pbsvc.log PnkBstrA.log PnkBstrB.log ======= PB service test (can be skipped) ==========
Install your game if it's not already installed.
Make sure the PB client files of the game are up to date. The best way is to manually run the PB update GUI client:
http://www.evenbalance.com/index.php?page=pbsetup.php
Download "pbsetup.zip" (windows), unzip and run pbsetup.exe
Select the game and update the client as described on the EB website.
Start the game and pray.
EB doesn't issue API fingerprinting checks for all games. Last time I tested AA PB servers they still had fingerprinting active.
If you get kicked with 131xxx error code, you're basically out of luck. To get around this you need to hack the client itself. There are some ways to accomplish this but I'm not inclined to publish details. Such 'hacks' should remain private as they would immediately trigger counter-action from EB (and if not correctly done they get you a global GUID ban).
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #13556|0 |1 is obsolete| |
--- Comment #135 from Anastasius Focht focht@gmx.net 2008-07-16 16:22:55 --- (From update of attachment 13556) Hello,
obsoleting this patch because this regression is fixed by commit 14a12b88614746375c8456a29324965cd61b652e
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #136 from Anastasius Focht focht@gmx.net 2008-07-17 11:01:56 --- Hello,
in my comment #134 I made copy/paste error in required patches list:
--- snip --- http://bugs.winehq.org/attachment.cgi?id=14001 http://bugs.winehq.org/attachment.cgi?id=14002 http://bugs.winehq.org/attachment.cgi?id=14003 --- snip ---
Should read:
--- snip --- http://bugs.winehq.org/attachment.cgi?id=14001 http://bugs.winehq.org/attachment.cgi?id=14002 http://bugs.winehq.org/attachment.cgi?id=14004 --- snip ---
(replace 14003 with 14004)
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Ayvind Binde ombinde@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ombinde@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
Tobias Stegmann tobias_stegmann@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tobias_stegmann@gmx.net
--- Comment #137 from Tobias Stegmann tobias_stegmann@gmx.net 2008-08-23 09:19:14 --- Did these patches hit wine-1.1.3, or do I still have to patch the sources in order to fix this issue?
http://bugs.winehq.org/show_bug.cgi?id=9685
Mamede forevertheuni@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |forevertheuni@gmail.com
--- Comment #138 from Mamede forevertheuni@gmail.com 2008-08-23 18:52:52 --- fixme:ntdll:NtQueryObject Unsupported information class 3 fixme:ntdll:NtQueryDirectoryObject multiple entries not implemented fixme:cryptasn:WVTAsn1SpcSpOpusInfoDecode 0x176872, 76, 00000000, (nil), 5361507 err:winedevice:ServiceMain driver L"PnkBstrK" failed to load fixme:cryptasn:WVTAsn1SpcSpOpusInfoDecode 0x131b6a, 78, 00000000, (nil), 2116574716 The NCBENUM return code is: 0x0 The NCBENUM return code is: 0x0 fixme:cryptasn:WVTAsn1SpcSpOpusInfoDecode 0x176872, 76, 00000000, (nil), 5361507 err:winedevice:ServiceMain driver L"PnkBstrK" failed to load The NCBENUM return code is: 0x0 The NCBENUM return code is: 0x0 fixme:cryptasn:WVTAsn1SpcSpOpusInfoDecode 0x1767ea, 78, 00000000, (nil), 2116574716 fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS) fixme:dsound:DllCanUnloadNow (void): stub
I patched wine source and compiled it. It was working ok this afternoon, but i'm getting banned again with this message. It has anything to do with the patch/old issue?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #139 from Anastasius Focht focht@gmx.net 2008-08-25 05:14:20 --- Hello,
--- quote --- Did these patches hit wine-1.1.3, --- quote ---
No.
--- quote --- or do I still have to patch the sources in order to fix this issue? --- quote ---
Yes. The patches from attachments 14001 and 14002 are relatively unintrusive and won't break anything. If someone decides to redo and sends them to wine-patches they might get accepted. Test cases are not needed (would be useless anyway). The stuff from 14004 will probably take longer until more work is done in Ntoskrnl component area.
--- quote --- I patched wine source and compiled it. It was working ok this afternoon, but i'm getting banned again with this message. It has anything to do with the patch/old issue? --- quote ---
Depends on game/servers. EB/PB still has signature/fingerprinting checks enabled for various games and the logic when these checks are selected/active is unknown. Some PB enabled games/servers seem to work without fingerprinting "feature". If you get the unknown API [131xxx] message kicks you're basically out of luck.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Levo lev_marios@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |lev_marios@hotmail.com
--- Comment #140 from Levo lev_marios@hotmail.com 2008-09-23 07:49:48 --- Is it possible to bypass the unknown API [131xxx] kicks by using original windows dlls (or other files)? (I own and used to use Windows XP)
http://bugs.winehq.org/show_bug.cgi?id=9685
Paul Johnson baloo@ursine.ca changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |baloo@ursine.ca
--- Comment #141 from Paul Johnson baloo@ursine.ca 2008-09-23 16:51:38 --- If that were possible in this case, Levo, this problem wouldn't be a bug, just really annoying.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #142 from Levo lev_marios@hotmail.com 2008-09-24 13:31:41 --- (In reply to comment #141)
If that were possible in this case, Levo, this problem wouldn't be a bug, just really annoying.
I asked this as a work around.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #143 from Paul Bransford draeath@gmail.com 2008-09-27 17:52:00 --- For what it's worth: http://www.petitionspot.com/petitions/PunkBusterforWINE
I seem to remember Punkbuster working previously as a native Linux client. I think it was Enemy Territory that had that. It seems they must know of this but don't think helping out is worth it.
http://bugs.winehq.org/show_bug.cgi?id=9685
Paul Bransford draeath@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |draeath@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #14004|0 |1 is obsolete| |
--- Comment #144 from Anastasius Focht focht@gmx.net 2008-10-30 17:28:19 --- (From update of attachment 14004) Hello,
revisiting. Invalidating one patch as it doesn't apply cleanly anymore and to ping any takers.
If you manage to get the three issues fixed in near future, I might give you more hints to work around other pb problems. There will be a day when the interest to help with such bugs is gone ...
As already told, the other two issues are simple fixes. The third problem can be split in several parts.
For a start supply a minimal impl of ntoskrnl's MmGetSystemRoutineAddress to keep the kmode driver surviving the initial ioctls.
--- snip --- 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"ZwQuerySystemInformation" resolved to 0x7bc4d850 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmMapIoSpace" resolved to 0x60596864 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmUnmapIoSpace" resolved to 0x60596c54 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmGetPhysicalAddress" resolved to 0x60596690 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"ObDereferenceObject" resolved to 0x6059708c 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"MmIsAddressValid" resolved to 0x6059aeb0 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"PsLookupProcessByProcessId" resolved to 0x60597d10 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeStackAttachProcess" resolved to 0x60595fd0 002e:trace:ntoskrnl:MmGetSystemRoutineAddress L"KeUnstackDetachProcess" resolved to 0x6059603c --- snip ---
The driver calls ZwQuerySystemInformation to retrieve page size etc. (see comment to make ZwQuerySystemInformation() return more useful values for SystemBasicInformation class). Hence MmGetSystemRoutineAddress can't simply return NULL (driver would simply refuse to work).
The other APIs resolved by MmGetSystemRoutineAddress will be needed later depending on PB client/server versions and capabilities (differs between games). It's ok to leave them as they are for now.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #145 from Stefan Dösinger stefandoesinger@gmx.at 2008-11-01 21:23:52 ---
If you manage to get the three issues fixed in near future, I might give you more hints to work around other pb problems. There will be a day when the interest to help with such bugs is gone ...
My sense is that general interest in this specific bug here has faded, because the chances to get around the API fingerprinting are rather limited :-(
That said, I think this bug has come a long way, especially thanks to Anastasius' documentory work. If EB somewhen decides to drop the fingerprinting, the documentation here will be very helpful.
http://bugs.winehq.org/show_bug.cgi?id=9685
Jordi tha-jj@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tha-jj@hotmail.com
--- Comment #146 from Jordi tha-jj@hotmail.com 2008-11-02 13:08:03 --- Is there a site that explanes how to do the 'thrunking' methode, I think it should be mentioned here. By thrunking I mean using linux punkbuster to play games on wine. I haven't figured it out yet.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #147 from Stefan Dösinger stefandoesinger@gmx.at 2008-11-02 17:00:44 --- Jordi, there is none. I played with this idea, but then ditched it again because it didn't work. You can try to write your own thunk, but you have to know what you are doing. It isn't much work(~ 15 lines of code), but unless you know what you are doing you won't be lucky with it anyway.
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #14002|0 |1 is obsolete| |
--- Comment #148 from Anastasius Focht focht@gmx.net 2008-11-03 14:24:29 --- (From update of attachment 14002) Hello,
obsoleting one patch. The issue should now be fixed by commit 3d6313c9ce6bb1ebe10f61223ba42ddf99075370
Next problem please ;-)
Although I already described the problem several times and provided fix, here it goes again:
--- snip --- 0036:Call advapi32.CreateServiceA(00143e70,0051e538,0051e538,000f01ff,00000001,00000003,00000001,0051b3d8,00000000,00000000,00000000,00000000,00000000) ret=00408b00 0036:trace:service:CreateServiceA 0x143e70 "PnkBstrK" "PnkBstrK" 0036:trace:service:CreateServiceW 0x143e70 L"PnkBstrK" L"PnkBstrK" ... 003c:trace:winedevice:load_driver loading driver L"C:\windows\system32\drivers\PnkBstrK.sys" 003c:Call KERNEL32.LoadLibraryW(0011db38 L"C:\windows\system32\drivers\PnkBstrK.sys") ret=60321b70 003c:Call PE DLL (proc=0x60491a80,module=0x60460000 L"msvcrt.dll",reason=PROCESS_ATTACH,res=(nil)) ... 003c:Ret PE DLL (proc=0x60491a80,module=0x60460000 L"msvcrt.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 003c:Call PE DLL (proc=0x10003030,module=0x10000000 L"PnkBstrK.sys",reason=PROCESS_ATTACH,res=(nil)) 003c:trace:seh:raise_exception code=c0000005 flags=0 addr=0x10003054 003c:trace:seh:raise_exception info[0]=00000001 003c:trace:seh:raise_exception info[1]=10000038 003c:trace:seh:raise_exception eax=10003030 ebx=7bc8d4c0 ecx=00000000 edx=10000000 esi=00000000 edi=7bc845c3 003c:trace:seh:raise_exception ebp=7ece63e8 esp=7ece63d4 cs=0073 ds=007b es=007b fs=0033 gs=003b flags=00010293 ... 003c:exception in PE entry point (proc=0x10003030,module=0x10000000,reason=PROCESS_ATTACH,res=(nil)) 003c:Ret PE DLL (proc=0x10003030,module=0x10000000 L"PnkBstrK.sys",reason=PROCESS_ATTACH,res=(nil)) retval=1 003c:Ret KERNEL32.LoadLibraryW() retval=00000000 ret=60321b70 003c:Call KERNEL32.GetProcessHeap() ret=60321cd7 003c:Ret KERNEL32.GetProcessHeap() retval=00110000 ret=60321cd7 003c:Call ntdll.RtlFreeHeap(00110000,00000000,0011db38) ret=603218d3 003c:Ret ntdll.RtlFreeHeap() retval=00000001 ret=603218d3 003c:err:winedevice:ServiceMain driver L"PnkBstrK" failed to load --- snip ---
Just make sure that the loader doesn't call entry point for native subsystem binaries.
The driver entry point is only to be called by winedevice' init_driver().
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #149 from Anastasius Focht focht@gmx.net 2008-11-03 17:03:40 --- Hello,
--- quote --- Is there a site that explanes how to do the 'thrunking' methode, I think it should be mentioned here. By thrunking I mean using linux punkbuster to play games on wine. I haven't figured it out yet. --- quote ---
I added a note to appdb (http://appdb.winehq.org/objectManager.php?sClass=version&iId=5813), giving an overview for people interested. Only the surface is covered to prevent liability claims ;-)
What you need is to write a pbcl winelib to interface the linux version of the client(s) for each game. The prototypes/exported signatures are as follows:
Linux side (cdecl):
--- snip --- typedef int (*pbcl_linux_ca)(void* iface, int id); typedef int (*pbcl_linux_cb)(void* iface, int func_code, int packet_len, void* packet_buf, int res); --- snip ---
Windows side (stdcall):
--- snip --- 1 stdcall ca(ptr long) pbcl_windows_ca 2 stdcall cb(ptr long long ptr long) pbcl_windows_cb --- snip ---
I provided the client interface "iface" as opaque datatype. If you want to mess with it, you'll have to figure it out by yourself. Usually you just pass it through.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #14001|0 |1 is obsolete| |
--- Comment #150 from Anastasius Focht focht@gmx.net 2008-11-10 17:42:06 --- (From update of attachment 14001) Hello,
obsoleting one patch. The issue should now be fixed by commit 2e25b859eaa0d9b479f8a51327ae6bdd0e327f87
Next step is to supply a simple MmGetSystemRoutineAddress implementation so that the driver can dynamically resolve needed API like ZwQuerySystemInformation. See my comment #144.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #151 from EA Durbin ead1234@hotmail.com 2008-11-19 20:20:30 --- (In reply to comment #150)
(From update of attachment 14001 [details]) Hello,
obsoleting one patch. The issue should now be fixed by commit 2e25b859eaa0d9b479f8a51327ae6bdd0e327f87
Next step is to supply a simple MmGetSystemRoutineAddress implementation so that the driver can dynamically resolve needed API like ZwQuerySystemInformation. See my comment #144.
Regards
http://article.gmane.org/gmane.comp.emulators.wine.patches/60249
It appears this is in the works, what's next?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #152 from EA Durbin ead1234@hotmail.com 2008-11-20 18:36:23 --- (In reply to comment #151)
(In reply to comment #150)
(From update of attachment 14001 [details] [details]) Hello,
obsoleting one patch. The issue should now be fixed by commit 2e25b859eaa0d9b479f8a51327ae6bdd0e327f87
Next step is to supply a simple MmGetSystemRoutineAddress implementation so that the driver can dynamically resolve needed API like ZwQuerySystemInformation. See my comment #144.
Regards
http://article.gmane.org/gmane.comp.emulators.wine.patches/60249
It appears this is in the works, what's next?
it was commited today
http://bugs.winehq.org/show_bug.cgi?id=9685
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|CVS/GIT |unspecified
--- Comment #153 from Austin English austinenglish@gmail.com 2009-01-15 10:53:58 --- Removing deprecated CVS/GIT version tag. Please retest in current git. If still present, update version field to earliest known version of wine that had this bug. Thanks!
http://bugs.winehq.org/show_bug.cgi?id=9685
bk m5it@m5it.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |m5it@m5it.org
Lars Blomqvist knaprigt@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |knaprigt@gmail.com
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |wylda@volny.cz
--- Comment #154 from bk m5it@m5it.org 2009-04-01 05:50:30 --- Hello all,
I see a lot of time went by the first post was writed. I am using wine 1.18 and still have problems with punkbuster. I am trying to play COD2. Single player works perfect! Multiplayer work too perfect if we remove PB problems :(
I have tryed to update pb with pbsetup.exe and pbsetup.run and both together.. Result was only different errors.
So have anyone behter news for punkbuster on call of duty 2 ?
Please help us... tnx :)
--- Comment #155 from Lars Blomqvist knaprigt@gmail.com 2009-05-23 20:44:44 --- (In reply to comment #154)
Hello all,
I see a lot of time went by the first post was writed. I am using wine 1.18 and still have problems with punkbuster. I am trying to play COD2. Single player works perfect! Multiplayer work too perfect if we remove PB problems :(
I have tryed to update pb with pbsetup.exe and pbsetup.run and both together.. Result was only different errors.
So have anyone behter news for punkbuster on call of duty 2 ?
Please help us... tnx :)
As said before, due to the API checks done by Punkbuster, using Wine and playing on any server with PB enabled is pretty much always a no go.
If I've understood everything correctly, making Wine return the "correct" values for every API check would be pretty much impossible, using native only native Windows files won't work, and Even Balance (makers of PB) don't seem that interested in implementing a solution just for the Wine API.
Would be nice with some ideas on possible ways to proceed though, since this does affect a lot of titles.
--- Comment #156 from Vitaliy Margolen vitaliy@kievinfo.com 2009-05-31 11:15:25 --- *** Bug 18710 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=9685
detructor15 steffen.linux@gmx.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |steffen.linux@gmx.de
--- Comment #157 from detructor15 steffen.linux@gmx.de 2009-06-06 17:22:55 --- Some thoughts on this:
* have someone EVER contacted evenbalance and asked them to add a "wine check" and if it detects a wine environment executes different checks? And if yes, what was their answer? * * Would it help if the wine community bombs their mailserver away? (sorry needed some "lol point", because this bug is so damn frustrating)...Would it?
* would it be possible to execute the linux version of punkbuster and "route" the checks to the linux version? (the wine devs have done something similiar with the gecko engine...I mean, the default steam client uses the engine of the internet explorer, but in wine it uses gecko, so (for me) it seems possible to get the applications to use something complete different instead of that what they want
* the checkIDs that have to be returnt are known to everyone that knows how to sniff a network, aren't they? So, it would be possible to hardcode these IDs and return them when PB asks for them. It isn't illegal (I think), it's just a workaround...
* oh and last idea: if we get the "real" windows files into one directory, wouldn't it be possible to get the routines of PB to check those files instead of the wine files?
http://bugs.winehq.org/show_bug.cgi?id=9685
Adys adys.wh+winehqdotorg@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adys.wh+winehqdotorg@gmail. | |com
--- Comment #158 from Adys adys.wh+winehqdotorg@gmail.com 2009-06-06 17:38:50 --- (In reply to comment #157)
Some thoughts on this:
- Would it help if the wine community bombs their mailserver away? (sorry
needed some "lol point", because this bug is so damn frustrating)...Would it?
Would be pointlessly immature, I hope you realize that. Keep that out of bugzilla, and the wine community in general.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #159 from Austin English austinenglish@gmail.com 2009-06-06 17:49:32 --- (In reply to comment #157)
Some thoughts on this:
- have someone EVER contacted evenbalance and asked them to add a "wine check"
and if it detects a wine environment executes different checks? And if yes, what was their answer?
Why don't you ask them and see?
- would it be possible to execute the linux version of punkbuster and "route"
the checks to the linux version? (the wine devs have done something similiar with the gecko engine...I mean, the default steam client uses the engine of the internet explorer, but in wine it uses gecko, so (for me) it seems possible to get the applications to use something complete different instead of that what they want
And what do we do for BSD/Solaris users?
- the checkIDs that have to be returnt are known to everyone that knows how to
sniff a network, aren't they? So, it would be possible to hardcode these IDs and return them when PB asks for them. It isn't illegal (I think), it's just a workaround...
May break other applications.
- oh and last idea: if we get the "real" windows files into one directory,
wouldn't it be possible to get the routines of PB to check those files instead of the wine files?
Not sure what you mean here. Regardless, bugzilla is for discussing bugs only, not user support. Use the forums/AppDB for that.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #160 from EA Durbin ead1234@hotmail.com 2009-06-06 18:47:46 --- (In reply to comment #157)
Some thoughts on this:
- have someone EVER contacted evenbalance and asked them to add a "wine check"
and if it detects a wine environment executes different checks? And if yes, what was their answer?
Yes, as stated in the bug previously, Stuart Dunsmore from Evenbalance has been contacted and stated that they will not alter their codebase to support wine or cedega or any other compatibility layer. It will never be officially supported by Evenbalance.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #161 from Stefan Dösinger stefandoesinger@gmx.at 2009-06-06 23:26:03 ---
- the checkIDs that have to be returnt are known to everyone that knows how to
sniff a network, aren't they? So, it would be possible to hardcode these IDs and return them when PB asks for them. It isn't illegal (I think), it's just a workaround...
It's most likely illegal under the DMCA and futile. The traffic is encrypted, and PunkBuster can change any time without warning.
- oh and last idea: if we get the "real" windows files into one directory,
wouldn't it be possible to get the routines of PB to check those files instead of the wine files?
No luck. PB uses the in-memory code and function pointer to checksum the functions, not the file on disk. So it checksums whatever the game will later execute. We'd have to actually use the native DLLs like kernel32, gdi32, d3d9, ... to achive this, which is not possible with Wine's design. To run the native DLLs you'd have to run a Windows kernel. That's essentially the same as running reactos in a virtual machine.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #162 from detructor15 steffen.linux@gmx.de 2009-06-07 07:41:32 --- (In reply to comment #158)
(In reply to comment #157)
Some thoughts on this:
- Would it help if the wine community bombs their mailserver away? (sorry
needed some "lol point", because this bug is so damn frustrating)...Would it?
Would be pointlessly immature, I hope you realize that. Keep that out of bugzilla, and the wine community in general.
man, you don't have any sense of humor...realize THAT.
Why don't you ask them and see?
why? if someone have done that already, it won't change anything and is only lost time.
And what do we do for BSD/Solaris users?
you are right with that point, but...would it be possible? Than it would work on most linux distribution and that would be a big step forward. It's better than nothing.
May break other applications.
hmm...wouldn't it be possible to determine if Punkbuster have called the function?
Not sure what you mean here. Regardless, bugzilla is for discussing bugs only,
not user support. Use the forums/AppDB for that.
never mind, would be illegal, if I have it correctly in mind.
Yes, as stated in the bug previously, Stuart Dunsmore from Evenbalance has been
contacted and stated that they will not alter their codebase to support wine or cedega or any other compatibility layer. It will never be officially supported by Evenbalance
okay, thanks for answering.
It's most likely illegal under the DMCA and futile. The traffic is encrypted,
and PunkBuster can change any time without warning. hmm...okay, that is right.
No luck. PB uses...
okay, thanks for description...
so, I think this bug can be closed as "wontfix"...because there is absoluteley no possibility to fix this. Or have I overseen something?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #163 from Stefan Dösinger stefandoesinger@gmx.at 2009-06-07 09:40:13 --- One could write a set of DLLs that are loaded instead of the normal wine dlls, and contain a wrapper function for each function in the dll. In every wrapper function where PB checks the checksum, clone the instructions that are checked, so the checksum matches. Then undo the work those instructions did(reset register contents, stack, etc), and call the real Wine function.
That is a mess from a technical point of view, and legally questionable, and a LOT of work. But it could be done outside Wine, so you don't have to get this past Alexandre. The other issue is that PB could catch these thunk DLLs, or they could be abused for cheating on Windows. (So make this a set of Winelib dlls, not real PE dlls)
http://bugs.winehq.org/show_bug.cgi?id=9685
Lauri Niskanen ape@ape3000.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ape@ape3000.com
--- Comment #164 from Lauri Niskanen ape@ape3000.com 2009-06-11 08:44:29 --- One could use Virtualbox to run games with Punkbuster since that way you could have the real windows dlls. This isn't a fix for this Wine bug, but it could help lot of people having this bug by providing an extra method.
I haven't tested this, but in theory it could work perfectly.
http://bugs.winehq.org/show_bug.cgi?id=9685
Lauri Niskanen ape@ape3000.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ape@ape3000.com
--- Comment #164 from Lauri Niskanen ape@ape3000.com 2009-06-11 08:44:29 --- One could use Virtualbox to run games with Punkbuster since that way you could have the real windows dlls. This isn't a fix for this Wine bug, but it could help lot of people having this bug by providing an extra method.
I haven't tested this, but in theory it could work perfectly.
--- Comment #165 from Dmitry Timoshkov dmitry@codeweavers.com 2009-06-11 09:09:16 --- (In reply to comment #164)
One could use Virtualbox to run games with Punkbuster since that way you could have the real windows dlls. This isn't a fix for this Wine bug, but it could help lot of people having this bug by providing an extra method. I haven't tested this, but in theory it could work perfectly.
No wonder it will work perfectly under Windows, and you don't even need to test it, it's tested by Punkbuster developers.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #166 from Fernando Otero granamachine-wa@yahoo.com.ar 2009-06-11 10:34:43 --- (In reply to comment #161)
It's most likely illegal under the DMCA and futile. The traffic is encrypted, and PunkBuster can change any time without warning.
The DMCA is a criminalization and abbusive law that only applyes to USA. Most countries do not have such a limitation, and it's unlikely someday will. This being said, if a definitive fix appears, it may be hosted in another country.
In reply to comment #164)
One could use Virtualbox to run games with Punkbuster since that way you could have the real windows dlls. This isn't a fix for this Wine bug, but it could help lot of people having this bug by providing an extra method. I haven't tested this, but in theory it could work perfectly.
You can't use Virtualbox to run most games that uses Punkbuster, because of the lack of Direct3D acceleration. Yes, you can use Swiftshader, but it's painfully slow. Yes, latest version of Virtualbox supports OpenGL (never tested), maybe some OpenGL games will run.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #167 from Stefan Dösinger stefandoesinger@gmx.at 2009-06-11 10:43:52 --- (In reply to comment #166)
The DMCA is a criminalization and abbusive law that only applyes to USA. Most countries do not have such a limitation, and it's unlikely someday will. This being said, if a definitive fix appears, it may be hosted in another country.
The political issues aside, Wine (and its commercial counterparts) are available in the US, used in the US and stored on US servers. While fighting the DMCA is probably a noble goal, Wine is not The Pirate Bay or some other similar website that wants to make political statements with questionable means, Wine is software that also aims at businesses. So any questionable legal things will make Wine unusable for businesses, so we can't do that.
You can't use Virtualbox to run most games that uses Punkbuster, because of the lack of Direct3D acceleration. Yes, you can use Swiftshader, but it's painfully slow. Yes, latest version of Virtualbox supports OpenGL (never tested), maybe some OpenGL games will run.
You can compile wined3d.dll and friends for Windows and use it.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #168 from Austin English austinenglish@gmail.com 2009-06-11 11:08:25 --- (In reply to comment #166)
(In reply to comment #161)
It's most likely illegal under the DMCA and futile. The traffic is encrypted, and PunkBuster can change any time without warning.
The DMCA is a criminalization and abbusive law that only applyes to USA. Most countries do not have such a limitation, and it's unlikely someday will. This being said, if a definitive fix appears, it may be hosted in another country.
In reply to comment #164)
One could use Virtualbox to run games with Punkbuster since that way you could have the real windows dlls. This isn't a fix for this Wine bug, but it could help lot of people having this bug by providing an extra method. I haven't tested this, but in theory it could work perfectly.
You can't use Virtualbox to run most games that uses Punkbuster, because of the lack of Direct3D acceleration. Yes, you can use Swiftshader, but it's painfully slow. Yes, latest version of Virtualbox supports OpenGL (never tested), maybe some OpenGL games will run.
This has nothing to do with fixing the bug, please take such discussions off bugzilla.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #169 from Fernando Otero granamachine-wa@yahoo.com.ar 2009-06-11 12:20:00 --- (In reply to comment #168)
This has nothing to do with fixing the bug, please take such discussions off bugzilla.
Agree with the Virtualbox workaround. But, discussing about legality of an eventual fix is relevant to this topic. Even if that fix cannot be published here or make into the Wine tree. As far as I know there in no other place to get information about running PB enabled games on Linux. This is the best place.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #170 from Austin English austinenglish@gmail.com 2009-06-11 15:18:32 --- (In reply to comment #169)
(In reply to comment #168)
This has nothing to do with fixing the bug, please take such discussions off bugzilla.
Agree with the Virtualbox workaround. But, discussing about legality of an eventual fix is relevant to this topic. Even if that fix cannot be published here or make into the Wine tree. As far as I know there in no other place to get information about running PB enabled games on Linux. This is the best place.
No, it is not. Bugzilla is for fixing bugs in wine, not fixing bugs in other applications/activities illegal in the United States.
http://bugs.winehq.org/show_bug.cgi?id=9685
vreten vreten@zoznam.sk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |vreten@zoznam.sk
--- Comment #171 from vreten vreten@zoznam.sk 2009-06-11 17:24:33 --- I hate evenbalance. We can do nothing. I wrote them few months ago about supporting wine, but there was clearly answer: no. I think they need money or more linux users. Its time for opensource game anticheating tool :) .
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #172 from Paulo Hahn paulohahn@gmail.com 2009-06-12 18:28:38 --- Well, this wine bug is not a bug, it is a limitation of technology, there is nothing to do about wine.
I too hate evenbalance. I too wrote them few months ago about supporting wine, but there was clearly answer: no.
I think they need to know more linux users.
YES ... "Its time for opensource game anticheating tool :)."
BUT HOW WE WILL DO THIS HAPPEN???!!!
http://bugs.winehq.org/show_bug.cgi?id=9685
Tomi Kyöstilä tomi.kyostila@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tomi.kyostila@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #173 from Austin English austinenglish@gmail.com 2009-12-31 11:14:05 --- Still present.
http://bugs.winehq.org/show_bug.cgi?id=9685
Richard shiningarcanine@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |shiningarcanine@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=9685
jameslinton@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jameslinton@hotmail.com
--- Comment #174 from jameslinton@hotmail.com 2010-06-13 07:50:49 --- Still present in Wine 1.2-rc3
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #175 from Richard shiningarcanine@gmail.com 2010-06-23 13:15:38 --- (In reply to comment #61)
What debugging tools are you using to obtain this information?
Also, are the legal issues surrounding this isolated to the DMCA? We could try filing a bug report with upstream to have that fixed:
https://writerep.house.gov/writerep/welcome.shtml
Unfortunately, bug reports with upstream tend to work differently than bug reports here. Unlike here, you need to keep sending complaints on a weekly basis for a few years before upstream does anything, and they need to be from a large volume of people. I am sure that many people would like to participate in such a bug report, but all of us would need to know the exact nature of the issues involved before any of us could begin filing a proper bug report, especially since unlike here, each comment at upstream costs about $0.44 to make. That is probably another issue that should be filed with upstream as well.
http://bugs.winehq.org/show_bug.cgi?id=9685
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #176 from joaopa jeremielapuree@yahoo.fr 2011-06-11 07:36:59 CDT --- Is it still a bug in current git?
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #177 from EA Durbin ead1234@hotmail.com 2011-06-11 09:45:57 CDT --- (In reply to comment #176)
Is it still a bug in current git?
Yes, it is. There's plenty of demos, or America's Army, you could test it if you like.
http://bugs.winehq.org/show_bug.cgi?id=9685
Fernando nandohuguenin@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nandohuguenin@gmail.com
--- Comment #178 from Fernando nandohuguenin@gmail.com 2011-09-09 01:49:02 CDT --- I said, in my last post AppDB, that the PunkBuster works, but I had not played much. Today I played for a few hours in differents servers with the PunkBuster and every 20 minutes or so the wine crash. And the computer to work again was to restart it. I think the fault lies with the server PunkBuster because without it it did not happen.
http://bugs.winehq.org/show_bug.cgi?id=9685
Manuel manuel.reimer@gmx.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |manuel.reimer@gmx.de
--- Comment #179 from Manuel manuel.reimer@gmx.de 2011-10-27 17:57:34 CDT --- Is there still someone working on this?
Is it really known that checksums over files are generated? IMHO this would be a pretty bad idea. As soon as Microsoft offers a security patch that touches such files, you would be banned everywhere.
Is the "unknown API function" known? Is it possible to just use a native DLL there?
http://bugs.winehq.org/show_bug.cgi?id=9685
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|patch | Version|unspecified |0.9.45.
--- Comment #180 from Anastasius Focht focht@gmx.net 2011-12-21 15:58:18 CST --- Hello,
--- quote --- Is there still someone working on this?
Is it really known that checksums over files are generated? IMHO this would be a pretty bad idea. As soon as Microsoft offers a security patch that touches such files, you would be banned everywhere.
Is the "unknown API function" known? Is it possible to just use a native DLL there? --- quote ---
Please read up the whole bug history. Everything has been answered/explained a dozen times in detail.
In short: the major blocker are API entry signature checks and that is something Wine can't fix. Even Balance needs to drop this type of check.
Of course you can hack/circumvent PunkBuster but that's out of Wine's scope (no I won't give any details).
Actually I don't see a point keeping this bug open forever - I tend for WONTFIX.
Regards
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #181 from detructor15 steffen.linux@gmx.de 2012-01-07 22:06:52 CST ---
No, it is not. Bugzilla is for fixing bugs in wine
then fix this bug. It doesn't matter how do you fix it. Just fix it.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #182 from Richard shiningarcanine@gmail.com 2012-01-07 22:48:15 CST --- (In reply to comment #181)
No, it is not. Bugzilla is for fixing bugs in wine
then fix this bug. It doesn't matter how do you fix it. Just fix it.
People cite the DMCA as the reason for not doing anything about this, but as far as I know, WINE has already violated the DMCA on at least one occasion.
Rise of Nations has Digital Rights Management technology that broke the game in earlier versions of WINE, but it works in recent versions. As far as I know, that is a DMCA violation. Fixing that should have violated DMCA, yet no one had any problem doing it.
Since the DRM technology used in Rise of Nations is not unique to it, I imagine that each game that started working when that issue was fixed is a separate DMCA violation. However, I am not a lawyer, so I can only speculate on the quantity of violations that occurred when that was fixed.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #183 from Juan Lang juan.lang@gmail.com 2012-01-07 22:54:46 CST --- (In reply to comment #182)
Rise of Nations has Digital Rights Management technology that broke the game in earlier versions of WINE, but it works in recent versions. As far as I know, that is a DMCA violation. Fixing that should have violated DMCA, yet no one had any problem doing it.
Please don't go about spreading misinformation. Adding DMCA violations to Wine is always prohibited. When we get a DRM-protected piece of software to work with Wine, it's because we've made the DRM protection actually work in Wine, not because we've circumvented it. And this isn't the right forum for this kind of discussion.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #184 from Richard shiningarcanine@gmail.com 2012-01-07 23:29:03 CST ---
Please don't go about spreading misinformation. Adding DMCA violations to Wine is always prohibited. When we get a DRM-protected piece of software to work with Wine, it's because we've made the DRM protection actually work in Wine, not because we've circumvented it. And this isn't the right forum for this kind of discussion.
There is not much to discuss. The thing that I and others do not seem to understand is how "we've made the DRM protection actually work in Wine" is not a form of circumvention.
If someone could answer that, then I imagine people would have no reason to keep posting about this. You can deride me for not posting something that fits your concept of a productive comment, but I am merely the messenger. Also, as far as I can tell, comments discouraging unproductive comments are themselves unproductive.
http://bugs.winehq.org/show_bug.cgi?id=9685
Stefan Dösinger stefan@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |stefan@codeweavers.com
--- Comment #185 from Stefan Dösinger stefan@codeweavers.com 2012-01-08 04:36:18 CST --- Basically: If you have the CD in the drive(or are properly online activated, etc), the game starts. If you don't, it doesn't. Ie, the DRM finds the environment it expects from Windows and behaves like it does on Windows.
For an example how this might look, see 10273. SafeDisc does some statistical tests on the API, which we can satisfy with quite a bit of work and the right compiler. PunkBuster checks if the API code is byte-for-byte equal to the Windows implementation, which we cannot satisfy(next to impossible technically, would violate Microsoft copyright).
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #186 from Stefan Dösinger stefan@codeweavers.com 2012-01-08 04:40:19 CST --- Another way people have put it: You must not be able to find out how a given DRM system works by looking at the Wine code. The Wine code is a clean, hack-free implementation of the Windows behavior tested by our tests, and that the DRM works is just a side effect of properly behaving like Windows.
http://bugs.winehq.org/show_bug.cgi?id=9685
--- Comment #187 from Jerome Leclanche adys.wh@gmail.com 2012-01-08 11:19:04 CST --- (In reply to comment #180) Agreed, WONTFIX.
A quick repeat as summary before further comments sprout up: - Fixing this issue with PunkBuster properly is apparently impossible. The checks done by the app are extreme (checksums and the like). To me that sounds too extreme even for genuine Windows. - As Stefan has explained, other DRM issues have been fixed by improving/implementing further Windows compatibility. There are no hacks or circumventions. - The real issue is with PunkBuster itself. Contact EvenBalance about it. They have said they won't implement workarounds for Wine and Friends, but they still could replace those harsh checksums by something that can actually be implemented.
http://bugs.winehq.org/show_bug.cgi?id=9685
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |WONTFIX
--- Comment #188 from Jerome Leclanche adys.wh@gmail.com 2012-01-08 11:19:17 CST --- Resolving WONTFIX.
http://bugs.winehq.org/show_bug.cgi?id=9685
Dmitry Timoshkov dmitry@baikal.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Punkbuster removes me from |Punkbuster removes me from |game for UNKNOWN WINDOWS |game for UNKNOWN WINDOWS |API FUNCTION [131124] |API FUNCTION [131124] (Not | |a Wine bug)
http://bugs.winehq.org/show_bug.cgi?id=9685
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #189 from Austin English austinenglish@gmail.com 2012-01-23 23:55:08 CST --- Closing.
https://bugs.winehq.org/show_bug.cgi?id=9685
hash HASH.DuOrden@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |HASH.DuOrden@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=9685
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch