Noob-friendly executable patching tool, CreateTethEXE

Sodaboy

Sodabob
Staff member
Gender
Male
Guildcard
11111111
I know a lot of people have trouble hex editing their own PSO server executable, so I wanted to release a tool that makes it as painless as possible to hex edit your connection information and more into a PSO executable.

This topic is for the release of "CreateTethEXE". You can download it from https://files.pioneer2.net/CreateTethEXE_v1.03.zip

The program reads a file named CreateTethEXE.ini which has:

- Offsets to the client version strings in the PsoBB.EXE, both Unicode and plain.
- Offsets to the Blue Burst encryption table in the PsoBB.EXE.
- Offsets to both the patch server and login server's IP address/hostname in the PsoBB.EXE.
- Offsets to both the patch server and login server's port in the PsoBB.exe (New to v1.01, thanks Tofu')
- What you'd like to change the client version string to.
- What file holds a binary representation of a new Blue Burst encryption table you'd like to write into PsoBB.exe (You can use a bbtable.bin generated from newtable.exe, which comes inside of the archive. Newtable.exe also generates a bbtable.h for use with the Tethealla source code.)
- What you'd like to change the patch and database server host name to. (They don't have to be the same.)

The program also has support for a light patching script that you can use to modify the direct computer code of the EXE. See "asmpatch_example.txt" for more details inside of the archive.

The jist of it is, you can use a script which has seek and write instructions to write byte patches to the file. You can use this to patch functionality, fix things, or change how entire code is handled in the EXE.

The archive also comes with the latest Tethealla EXE named as PsoBB.code (it patches in memory and dumps the edits to "PsoBB.exe") and the default Tethealla Blue Burst Encryption table named "default_tethealla_table.bin".

Default offsets which correspond to PsoBB.code are also already defined in CreateTethEXE.ini, so you shouldn't need to change them unless there is a brand new PSO EXE that is released and things are no longer aligned.

Uh, I guess that's it. If I feel like adding anything to this program, fixing any encountered bugs, or maybe making the scripting patcher more robust, I'll update this topic with the updates.

Cheers.

EDIT: Version 1.03 doesn't add any new functionality from version 1.02, it just ignores extra characters on a "WRITE" line that aren't hexadecimal characters so that it won't write anything it shouldn't to the new EXE file.
 
Last edited:
Updated to version v1.01 which adds the ability to customize the login and patch server's ports.
 
The PsoBB.code that was distributed with v1.01 had some faults with meseta pick up with items were at 30/30, this has been fixed and the program updated to v1.02.

Sorry for any inconvenience this may have caused you.
 
Could you please add to the paremeters in the configuration the posibility to enable/disable the japanese IME input for JP users as well?
Currently is not possible to type in Japanese with your client.

Cheers!
 
Neirene said:
Could you please add to the paremeters in the configuration the posibility to enable/disable the japanese IME input for JP users as well?
Currently is not possible to type in Japanese with your client.

Cheers!

Depends on what people prefer, I was gonna upload a fix so that people can type in both languages in the future rather than having to flag these on/off through the exe.
 
You can make an ASM patch for that, thanks to the above topic by putting this in asmpatch.txt and making your EXE

SEEK,00440786
WRITE,A8 83 8F

EDIT: THIS PARTICULAR PATCH DOES NOT WORK.
 
Thanks a lot Sodaboy!! however i've been testing this exe in a little server I set a home and its not connecting, I already configured the settings in the ini but is not connecting at all.

The server distributables i'm using are the MySQL version ones you posted in the setup topic. Probably it's because this new exe is optimized for the new tethealla build you have yet to release?

This is what happens when i try to login with the generated exe it just stays on the loading screen:
311tdtl.png


and this is a copy of my settings at the INI

Code:
# Location of client version string in PsoBB.code
0056CE20
# Location of unicode client version string in PsoBB.code
0056CE30
# Location of first 72 bytes of Blue Burst encryption table in PsoBB.code
00574C20
# Location of remaining bytes of Blue Burst encryption table in PsoBB.code
00573B20
# Desired client version string.  For the new client, the default is "Teth ver.1.30".  For the **OLD** client, the default is "TethVer12513".
# (Maximum length of string: 13 characters.)
DEBUG BUILD
# File name of new Blue Burst table (.bin type generated by newtable.exe)
bbtable.bin
# Database Hostname or IP Address Entry 1 Offset
0056D70C
# Database Hostname or IP Address Entry 2 Offset
0056D724
# Patch Server Hostname or IP Address Entry 1 Offset
0056D750
# Patch Server Hostname or IP Address Entry 2 Offset
0056D76C
# Patch Server Hostname or IP Address Entry 3 Offset
0056D788
# Patch Server Hostname or IP Address Entry 4 Offset
0056D7A4
# Login Hostname or IP Address. You can use a host name like myserver.domain.com instead of an IP address.
# (Maximum length of string: 21 characters)
127.0.0.1
# Patch Server Hostname or IP Address. You can use a host name like myserver.domain.com instead of an IP address.
# (Maximum length of string: 21 characters)
127.0.0.1
# Location of Login Server Port in PsoBB.code
00307A50
# Location of Patch Server Port in PsoBB.code
00307711
# Desired Login Server Port
12000
# Desired Patch Server Port
11000
 
Code:
# Desired client version string....
# (Maximum length of string: 13 characters.)
DEBUG BUILD
Is your login server client version string "DEBUG BUILD" too? If not, you might need to use the old client's version string.

Edit:
The picture didn't load before.
If you updated the bbtable without updating the login bbtable header and recompiling, it simply broke .
 
Soly, i just recompiled everything with the new BB tables and with the version string corrected too and it works now!
 
A little warning for everyone, please don't use the asmpatch function as it breaks the game client, this feature needs further testing!
Hopefully Sodaboy will be able to upload an updated version for this tool soon. In the meanwhile just patch as usual without using the asm text file!
 
Neirene said:
A little warning for everyone, please don't use the asmpatch function as it breaks the game client, this feature needs further testing!
Hopefully Sodaboy will be able to upload an updated version for this tool soon. In the meanwhile just patch as usual without using the asm text file!
Hey, there's NOTHING wrong with my asmpatching feature. I use it to patch my client all the time. Perhaps the offsets or the script I wrote for your patch don't work, but don't go bashing my tool.

Before you start blaming someone or assuming you know what you're talking about as the problem, actually know 100%.

You're the one blaming me about connection problems when you didn't know jack squat about configuring your router.

Then you go off and say my old version of my software is fucked up because you can't load RAmarls in any of your games, when you didn't bother to trouble shoot the patch in the first place.

It's not MY responsibility to test another person's patches or offsets.

So, if you want to blame something, blame your own lack of technical knowledge before you blame me.

You shouldn't even be administering your own private server if you can't even get the basics of networking and how computers work down.
 
Uploaded version 1.03

Version 1.03 doesn't add any new functionality from version 1.02, it just ignores extra characters on a "WRITE" line that aren't hexadecimal characters so that it won't write anything it shouldn't to the new EXE file. (So, if you have extra white space, or characters that shouldn't be on the WRITE line, it won't affect the EXE output.)
 
Back
Top