Uncharted Ocean

Upload your cheat tables here (No requests)
Post Reply
dharthoorn
Noobzor
Noobzor
Posts: 10
Joined: Wed Apr 19, 2017 4:32 pm
Reputation: 8

Uncharted Ocean

Post by dharthoorn »

While I'm not a total noob I'm not nearly as good as many, many others on the scene here so be gentle with criticism please.

I was sorta kinda waiting for someone else to hack it but it's taking too long so I had a go myself.

How to use:
1. Hook the THIRD process instance of Hanghai.exe (which is the SQL thread). Scripts should work from the title screen, if not, you either hooked the wrong process or my table needs updating.
2. Use 6.7+ version of CE with support of "Link to other memory record for Dropdown list" functionality. (Thanks a million to Panraven & Mgr.inz.player for that feature it is GREAT.)

Features:
- London Black Market hack --> Modify items for sale there. This is the main gateway to cheat items.
- Ship hack --> Only 2 ships for now. Very easy to add more but I am lazy and I particularly chose the Saint Philip Giant Merchant Ship because NPC's do not use it (you cannot even obtain the Blueprint without cheating). Anything you modify for Ships affects NPC's sailing that Ship as well. Although gun loadout may be hardcoded for NPC I didn't test.
- Extensive Item ID lists (90% Complete) --> It's a WIP in Excel (and a total boring hell to compile) but I put most into dropdown lists so you can select items relatively quick and easy. Please use it so my time and effort does not feel wasted.

BACKUP YOUR SAVE, dammit!
Steam Legit: \Steam\userdata\<YourUserID>\1158690\remote\SavesDir\Save1.sav
Seriously. The game normally only saves the database upon exit and illegal edit goofs usually result in a white screen freeze but you CAN corrupt the database (and your save) with unwanted Legal edits that prevent the save from loading. I KNOW because I did it during testing, fortunately I had a backup. You have been warned. Remember to disable Steam cloud save if you need to restore.

Some research notes;
This game seems to use SQL databases for much (if not all) of its referenced data arrays. The interaction with said databases seems to run in a separate process. Since this particular process is started as the third process after running the game you should hook the THIRD process when you use this Table.
Adding data directly to the arrays from anything other than command line SQL is extremely tricky since many data arrays use embedded pointers to other arrays and it's really easy to corrupt the whole database.

Minds greater than my own when it comes to cheat tables, like tfigment, have made an excellent SQL lua plugin for Star Traders Frontier. From what I have seen, this game seems to use the same architecture (perhaps the same engine). I will PM him/her and ask if they are willing to make something similar for this game.

For now, have fun with it, and if you have any specific feature requests or need help with its use, feel free to ask.


UPDATE:
hanghai.CT
Uncharted Ocean 1.1.0
(78.8 KiB) Downloaded 457 times


How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1
Last edited by dharthoorn on Mon Dec 30, 2019 5:49 pm, edited 1 time in total.

tfigment
Table Makers
Table Makers
Posts: 673
Joined: Sat Apr 15, 2017 12:49 am
Reputation: 916

Re: Uncharted Ocean

Post by tfigment »

Well probably not going to touch it since not my personal preference kinda game. If you can find the entry points and they really used sqlite (probably likely) then the table interface I did is easily copyable. I would have no problem with anyone using that code.

The trick of the Star Traders table was locating the main entry points for sql. It will almost always be identical code in most games (if its 32 bit compiled). The hard parts are that the entry points need to be found. Star Traders opened several databases so to get the pointer couldn't be done by just finding the sqlite code it needed to be the code calling that.

So what I did was reverse some test code that I compiled with sqlite to see what the real entry points looked like then find equivalent code in the game. (Probably used IDA but Ghidra would also work for that) I may have used strings since those are usually unique.

Once the main sql functions are found then table can likely just be used as is. (I have no issues with anyone using that code. consider my contribution as public domain).

For the main functions, openDatabase, sqlite3Close, sqlite3_get_table, sqlite3_free_table, sqlite3_exec, sqlite_open_cxx you might be able to reuse the AOBSCANMODULE references from my Star Traders table. If you get all of these and they are called then the question is how much sqlite_open_cxx is called. If only once then you can just capture ecx on entry of that function with no need to find function calling it to get the table handle. The other potential issue is that they open database at start without give you an opportunity to hook it later.

I would use the AOBSCAN test as a starting point if they work then continue on if not then try something else.

Post Reply

Who is online

Users browsing this forum: AhrefsBot, Alex5588, AmazonBot, DotBot, Google [Bot], Google Adsense [Bot], hitori355, kashpaint62, SemrushBot, xspeed