CANbus is, in every example I've seen, unencrypted. So yes, any car is hackable. It's not for the faint of heart though, if the values aren't published. I'm 4-5 hours into working through the messages on my car, to try and find a specific few messages on a fairly quiet data bus. I use a tool called a Kvaser Leaf, but there are lots of CAN tools out there that are cheaper than that.
Specifically, I'm looking for:
Vehicle Speed (found 4x channels with wheel speeds, not sure if I need to send 1 or all of these to the chassis)
RPM (found this pretty easily)
Engine Temp (lost on this one still, but I'll figure it out)
I'm working on a video for the process, but it's basically this:
1. Review diagrams, find where to sniff CANbus
2. Add a "tap" to the wires at this point (I soldered in a twisted pair of TXL wires to a DT connector)
3. Find CANbus speed/format. Most scanners can auto-populate this via trial/error.
4. Start sniffing while doing things that you can "find" in the results. Pressing throttle pedal to look for DBW position, revving engine to find RPM, driving to find wheel speed, etc..
5. I import this data into Excel in CSV, so that I can sort by CANID and look for trends. You could probably get fancy and lean on an AI/ML tool to automate this some, but I'm not going to get that fancy.
6. If you want to inject data, you can setup your scanner to inject data and see if you see it on the bus, and if it has the results you want. In my case, I sent my RPM setting and watched the tach jump. Once I get all of the settings, I'll pull power to the ECU and inject all of the dash settings I want, and make sure they respond as expected. It's hard to inject with the ECU on bus, as it's spamming data all the time that will conflict with your injected data.
It's a tedious process, but once I'm done I'll organize the data and share it publicaly. It's a little annoying as some companies have done this already, and it wouldn't really impact them to share the data out, but they choose not to. Oh well. I'll do it myself.