The miners need to run the smart contracts and to know how to do that, they inevitably need the EVM code. So, yes everything on the blockchain can be reverse engineered, although it requires a lot of effort, as 1) understanding the byte code is magnitudes harder than high-level Solidity code and 2) good disassemblers / decompilers (think Hex-Rays IDAPro) don’t exist for EVM byte code yet.
Note that this is not specific to cryptocurrencies / blockchain technology. It’s the same “problem” every single software has, no matter what operating system they run on. There is no such thing as black box software. (Even though cryptographers are trying hard to achieve it with something called ”indistinguishable obfuscation”, but it is completely impracticable. But that’s a whole different topic.)
Notice that I used the word “onchain” in the above statement. What cryptokitties or any other smart contract could do is outsource that logic to their own servers, and call it as an Oracle. Then you would indeed only observe input/output behavior without knowing what’s going on at all. But this comes at the price of having to trust that they do each computation in an honest way.