{"id":50,"date":"2005-08-28T14:14:04","date_gmt":"2005-08-28T21:14:04","guid":{"rendered":"http:\/\/outflux.net\/blog\/archives\/2005\/08\/28\/porrasturvat-hacking\/"},"modified":"2015-05-05T17:27:24","modified_gmt":"2015-05-06T01:27:24","slug":"porrasturvat-hacking","status":"publish","type":"post","link":"https:\/\/outflux.net\/blog\/archives\/2005\/08\/28\/porrasturvat-hacking\/","title":{"rendered":"porrasturvat hacking"},"content":{"rendered":"<p>Three years ago, when I first saw tAAt&#8217;s <a href=\"http:\/\/jet.ro\/dismount\/\">Porrasturvat<\/a>, I couldn&#8217;t stop playing it all day.  It&#8217;s a really simple game: see how much &#8220;damage&#8221; you can score to a stick figure that you push down the stairs.  It&#8217;s basically a physics simulation that tracks force and impact of a body falling down a flight of stairs.  So much fun.  I hope they make it skinnable.  :)  <\/p>\n<p>At the time (2002-11-12) I had asked for source code in the hopes of helping to port it to Linux.  I got an email yesterday in reply to my request.  This sets the record for the longest reply-time on a email, ever.  :)  Jetro was letting me know it was available for Linux now, so I immediately downloaded it and started playing again.  This version is much more stable and lacks any scoring glitches (that I&#8217;ve been able to find), so it&#8217;s a real challenge to get a high score.<\/p>\n<p>Even in the original game, I had wanted to push the figure backwards off the stairs to see what kind of damage would be done just from having him fall straight down.  This time, I&#8217;m determined to practice some binary analysis skills and locate the place in memory where the &#8220;Force&#8221; value is kept so I can <em>tweak<\/em> it.  So far so good, I&#8217;ve been able to locate the damage accumulators for the various body parts.  Now it&#8217;s a matter of just tracing the changes back through the execution paths.  Here&#8217;s my million-point game:<\/p>\n<p><img decoding=\"async\" src=\"\/porrasturvat\/porrasturvat-damage-mod.jpg\" alt=\"damage mod\" \/><\/p>\n<p style='text-align:left'>&copy; 2005 &#8211; 2015, <a href=\"https:\/\/outflux.net\/blog\/\">Kees Cook<\/a>. This work is licensed under a <a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/\">Creative Commons Attribution-ShareAlike 4.0 License<\/a>.<br \/><a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/\"><img decoding=\"async\" alt=\"CC BY-SA 4.0\" style=\"border-width:0\" src=\"https:\/\/i.creativecommons.org\/l\/by-sa\/4.0\/88x31.png\" \/><\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Three years ago, when I first saw tAAt&#8217;s Porrasturvat, I couldn&#8217;t stop playing it all day. It&#8217;s a really simple game: see how much &#8220;damage&#8221; you can score to a stick figure that you push down the stairs. It&#8217;s basically a physics simulation that tracks force and impact of a body falling down a flight [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":1,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":795,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/posts\/50\/revisions\/795"}],"wp:attachment":[{"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/media?parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/categories?post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/outflux.net\/blog\/wp-json\/wp\/v2\/tags?post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}