What are Decentralized Applications (Dapps)

Most people are familiar with apps particularly with reference to software. Software applications are software that defines a particular goal. As opposed to the most widespread software models that are centralized (the server client model is centralized), dApps are apps whose server-client models are decentralized while others are distributed as illustrated in the figure below.
A decentralized app must meet the following criteria: They should be open source and autonomous. This means that any changes can only be executed by consensus and there is no single body which holds majority tokens in the network.
Protocols and Data are stored cryptographically in a blockchain
The cryptographic tokens are used for rewarding network users as well as for application access.
Tokens are generated using an algorithm that encourages contribution by members of the network to the system.
Read Morehttps://medium.com/ethereum-dapp-builder/what-are-decentralized-applications-dapps-ed7459a27786So much information. So, nobody can hack such apps?