I suppose my whole point with this thread at this point in the conversation is to say that, I know enough about game design to notice things when I read through these documents, styles, the way thier code is set-up and how it arbitrarily links to .c scripts and .bounds files.
You're seeing references to .c source files only because a programmer put them there on purpose. They're part of the string table, so you have to find where they're referenced from. In a C program, the compiler will lump all of the strings (text) used by the program together, often eliminate duplicates, and then the actual compiled code will reference those strings.
Here's an example from a relatively simple function that is called when you click a choice in a reward table popup:
CPU Disasm
Address Hex dump Command Comments
005E2970 /$ 51 PUSH ECX
005E2971 |. A1 E05D6801 MOV EAX,DWORD PTR DS:[1685DE0]
005E2976 |. 56 PUSH ESI
005E2977 |. 8B35 DC3BB900 MOV ESI,DWORD PTR DS:[0B93BDC]
005E297D |. 57 PUSH EDI
005E297E |. 6A 5F PUSH 5F ; arg2 = 95
005E2980 |. 6A 01 PUSH 1 ; arg1 = 1
005E2982 |. 68 3F0A0000 PUSH 0A3F ; line=2623
005E2987 |. 68 200AAB00 PUSH OFFSET 00AB0A20 ; ASCII "C:\buildfarm\slave\full_release\release\2400\code\coh\Game\UI\uiNet.c"
005E298C |. 8BF8 MOV EDI,EAX
005E298E |. E8 BD992700 CALL 0085C350 ; send_pack_bits_debug
005E2993 |. 56 PUSH ESI ; arg2 = [0B93BDC]
005E2994 |. 6A 03 PUSH 3 ; arg1 = 3
005E2996 |. 68 400A0000 PUSH 0A40 ; line = 2624
005E299B |. 68 200AAB00 PUSH OFFSET 00AB0A20 ; ASCII "C:\buildfarm\slave\full_release\release\2400\code\coh\Game\UI\uiNet.c"
005E29A0 |. 8BC7 MOV EAX,EDI
005E29A2 |. E8 A9992700 CALL 0085C350 ; send_pack_bits_debug
005E29A7 |. 83C4 20 ADD ESP,20
005E29AA |. 5F POP EDI
005E29AB |. 5E POP ESI
005E29AC |. 59 POP ECX
005E29AD \. C3 RETN
The parts after the semicolons are comments added by me to clarify what some of the lines do for reference. The function name "send_pack_bits_debug" doesn't actually exist in the EXE, it's just something I made up after figuring out what the function at that address does.
As you can see, the machine code is using that string to add a file and line number parameter to certain functions for debugging purposes. The only reason it's there is so that the program can, at run-time, report which source file a particular call came from if there's a problem. Not all calls have this (if they did it would be much easier to reconstruct what everything does), but a few do. Probably ones that the debug code never got removed before releasing it.
I know you've opened the file in a hex editor as I can clearly see, however in a hex editor the entire document will be squigglies (special characters) which are used to represent something else whether its short terms such as AND and XOR or long terms and mathematical calcuations such as get.player.info.object.location() +90.87.23 and movement.speed = 3.4 (just an example it's not actually in the document)
The "squigglies" are X86 machine code; the lowest level of program instructions that are directly executed by the CPU. Get a disassembler and it will turn it into assembly language like I posted above, which is a bit more readable.
Also, .bounds files are just bounding boxes for various bits of geometry. Not too exciting by themselves, though somewhat useful if you were building a map editor or something.
but the fact of the matter is, Wordpad (based on the codecs and programming libraries you have installed) will actually automatically convert some of this text into a legible format not comprised of special characters.
The only thing wordpad might do for you is decode UTF-8, but the COH client doesn't have any of that embedded in the exe, and the French and German message files are long gone. If you just want to look at string tables, you'd be better off grabbing a copy of the
strings utility (link goes to a Windows port, pretty much all UNIX systems come with it already). It'll find and show just the ASCII, or Unicode text if you specify, filtering out all the binary portions.
Opening a pigg directly won't get you really anything except a list of filenames from the directory table. The files contained within are compressed -- you need a tool like PiggViewer to extract them.
as I said I'm willing the bet that the server responds to the client with one of those predefined expressions, some of them even have brackets, the brakets are either empty or labeled as Int (integer) or Bool (true or false switching operation)
The client/server protocol is binary. I'm using the colloquial form of binary to mean "not plain text", not literally using 1s and 0s to represent it. Most often binary data is viewed in hex for convenience.
@@CryptoPP@@V?$RSAPrivateKeyTemplate@V?$DecryptorTemplate@V?$OAEP@VSHA@CryptoPP@@V
heres what codewalker was talking about in another thread, every time the client connects to the server; the server tells the client "heres how I'm gonna encrypt the packets I send to you" well ok then the server is using the CryptoPP method the multi listing of cryptopp tells me that this is some type of exteriorly developed encryption syntax. gettign ahold of a copy of CryptoPP would allow us to make our server have the same encryption of it's packets as CoH did. and also decrypt any packets that the client sends
Except you're jumping to conclusions based on seeing some text in a string table instead of actually analyzing where it's used. CryptoPP is the C++ code I was talking about tracing through earlier. However, it's used
only during initial login, to talk to the authentication server. The game protocol is encrypted using a different library -- a modified version of the original C reference implementation of Blowfish.