Patches are sometimes created by the original software vendor, and sometimes by interested third parties. A patch file set may include a small program which actually implements the patch automatically, or it may include detailed instructions on making the changes by hand.
A patch which is not 100% effective or which is considered temporary (while a better fix is being sought) is sometimes called a workaround.