Many Android ROMs have become more and more secure. Many devices have been equipped with new system security mechanism to protect any advanced modification to the system itself. One of the known mechanism is Device Mapper Verity, also known as dm-verity. This security mechanism is basically developed to help prevent persistent rootkits that can hold onto root privileges and compromise devices. Most of the recent Android devices need to do a verified boot through the optional dm-verity kernel. This is sure can prevent malware to hide from detection programs and otherwise mask themselves. Unfortunately, for advanced Android users, it can be troublesome to a certain extent because it prevents the device to boot properly once custom recovery like TWRP is flashed.
The dm-verity feature lets you look at a block device, the underlying storage layer of the file system, and determine if it matches its expected configuration. It does this using a cryptographic hash tree. For every block (typically 4k), there is a SHA256 hash.
Previously, in order to flash TWRP on a device protected with dm-verity feature, you’ll need to first cook your own ROM modifying original ROM to disable dm-verity in its kernel. This could be so arduous for novice users. Luckily, there is a patch-like package allows you to disable dm-verity and forced encryption feature. Download the package from the link below and flash it from TWRP.