{"id":103438,"date":"2020-02-14T07:00:00","date_gmt":"2020-02-14T15:00:00","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/oldnewthing\/?p=103438"},"modified":"2020-02-11T23:21:08","modified_gmt":"2020-02-12T07:21:08","slug":"20200214-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20200214-00\/?p=103438","title":{"rendered":"Quality updates: Consequences for rogue-patched binaries"},"content":{"rendered":"<p>We spent the past week learning about the different types of Windows update packages, <a href=\"http:\/\/devblogs.microsoft.com\/oldnewthing\/20200213-00\/?p=103436\"> ending with the Quality update<\/a> that obsoletes all the others.<\/p>\n<p>The Quality update relies on the presence of a reverse patch that gets the files currently on the client machine back to the original versions, so that the forward patch can be applied to bring the file forward to the latest version.<\/p>\n<p>This is bad news if you hacked the file by using a hex editor to patch some bytes.<\/p>\n<p>Because patching the file on disk means that the reverse patch back to the original version won&#8217;t work, and that makes the entire update fall apart. If you&#8217;re lucky, the Quality update will fail to install, and you&#8217;re not going to be able to make any progress until you un-patch the file back to its original form. If you&#8217;re unlucky, the Quality update will apply the reverse patch anyway, creating a mess. (I don&#8217;t know what will actually happen, and I&#8217;m not going to try it to find out.)<\/p>\n<p>That&#8217;s why when companies who develop fancy &#8220;system enhancement&#8221; software ask about patching files, we always say, &#8220;No, don&#8217;t do it.&#8221;<\/p>\n<p>Since we know that nothing we say will stop them from proceeding with their plan to ship their &#8220;system enhancement&#8221; software, we ask them at least to limit their patching to in-memory copies of the file, and leave the file on disk unchanged.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can&#8217;t get back any more.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-103438","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>You can&#8217;t get back any more.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/103438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=103438"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/103438\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=103438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=103438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=103438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}