is there any existing tools that can find & download all smart contracts deployed on Ethereum blockchain, regardless they have source code or not?
There is no such tool.
if there is no such a tool, what is the best way to implement one? i suppose we can look at all the transactions sent to 0x0, but this requires access to a big full node?
If you want to find all contracts and their code, your only option is to run a debug trace (offered by both Parity and Geth) using an archival node on each tx throughout Ethereum's history, and look for calls invoking the
CREATE op code.
Moreover, this will only give you the bytecode for each contract, not the source code. Ethereum does not store the source code, and you will either need to use a disassembler, which rarely produces good quality source code, or scrape other services such as Github to find the code to common contracts, or run a service similar to etherscan which allows users to submit their contract source to you.