{"id":24,"date":"2009-01-05T22:03:13","date_gmt":"2009-01-06T02:03:13","guid":{"rendered":"http:\/\/adamrosenfield.com\/blog\/?p=24"},"modified":"2011-02-21T00:47:19","modified_gmt":"2011-02-21T04:47:19","slug":"dont-steal-mac-os-x","status":"publish","type":"post","link":"http:\/\/adamrosenfield.com\/blog\/2009\/01\/05\/dont-steal-mac-os-x\/","title":{"rendered":"Don&#8217;t steal Mac OS X"},"content":{"rendered":"<p>I was reading through the <a href=\"http:\/\/osxbook.com\/\">Mac OS X Internals<\/a> book, and came across this interesting nugget in <a href=\"http:\/\/www.osxbook.com\/book\/bonus\/chapter7\/binaryprotection\/\">chapter 7<\/a>.  In OS X 10.4, a kernel extension maps an anti-piracy message into the 256 bytes of virtual address space of every running process at address <code>0xFFFF1600<\/code>, which you can see for yourself by compiling and running the following code:<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">#include &lt;stdio.h&gt;\r\nint main(void)\r\n{\r\n    printf(&quot;%.256s\\n&quot;, (char *)0xFFFF1600);\r\n    return 0;\r\n}<\/pre>\n<p>The output:<\/p>\n<pre>Your karma check for today:\r\nThere once was was a user that whined\r\nhis existing OS was so blind,\r\nhe'd do better to pirate\r\nan OS that ran great\r\nbut found his hardware declined.\r\nPlease don't steal Mac OS!\r\nReally, that's way uncool.\r\n   (C) Apple Computer, Inc.<\/pre>\n<p>Note that this only works in OS X 10.4, not in 10.5.  I don&#8217;t know if it runs on older versions of OS X.  I wonder if this message is also on iPods and iPhones.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was reading through the Mac OS X Internals book, and came across this interesting nugget in chapter 7. In OS X 10.4, a kernel extension maps an anti-piracy message into the 256 bytes of virtual address space of every running process at address 0xFFFF1600, which you can see for yourself by compiling and running [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-24","post","type-post","status-publish","format-standard","hentry","category-misc"],"_links":{"self":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":3,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":35,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions\/35"}],"wp:attachment":[{"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/adamrosenfield.com\/blog\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}