While that's true even in the general case (through reverse engineering), it's especially true in the case of Signal because it's open source.
There are libraries for interacting with Signal services (one from Signal themselves), here is a CLI tool that uses a patched official library: <https://github.com/AsamK/signal-cli>