<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Indefinite Studies</title>
	<atom:link href="http://indefinitestudies.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://indefinitestudies.org</link>
	<description>Hitting bottom, and asking for more</description>
	<lastBuildDate>Tue, 09 Mar 2010 23:00:24 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='indefinitestudies.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/efbe72a47e446537f69667e7c33e9bee?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Indefinite Studies</title>
		<link>http://indefinitestudies.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://indefinitestudies.org/osd.xml" title="Indefinite Studies" />
	<atom:link rel='hub' href='http://indefinitestudies.org/?pushpress=hub'/>
		<item>
		<title>Newsflash: clever tricks have never been clever</title>
		<link>http://indefinitestudies.org/2010/03/09/newsflash-clever-tricks/</link>
		<comments>http://indefinitestudies.org/2010/03/09/newsflash-clever-tricks/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 23:00:24 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[useless]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=542</guid>
		<description><![CDATA[&#8220;DOS applications were rarely well behaved in terms of using existing system resources since they typically ran one at time. Developers often used tricks or even existing bugs in the OS or processors in clever ways to get more memory or prevent running of unlicensed copies. Windows was intended to enable multiple applications to run [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=542&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;DOS applications were rarely well behaved in terms of using existing system resources since they typically ran one at time. Developers often used tricks or even existing bugs in the OS or processors in clever ways to get more memory or prevent running of unlicensed copies. Windows was intended to enable multiple applications to run at the same time, so it was difficult to support running existing applications while isolating them so their clever tricks would not corrupt other applications.&#8221;<br />
&#8211; <a href="http://technologizer.com/2010/03/08/the-secret-origin-of-windows/">Tandy Trower</a> [technologizer.com]</p></blockquote>
<p>And that was 25 years ago. Ouch.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/542/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=542&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/03/09/newsflash-clever-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>US Domination over Security Conferences</title>
		<link>http://indefinitestudies.org/2010/02/25/us-domination-over-security-conferences/</link>
		<comments>http://indefinitestudies.org/2010/02/25/us-domination-over-security-conferences/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 13:46:49 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[useless]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=532</guid>
		<description><![CDATA[(UPDATE: now with NDSS data)
Looking at the program committees of a few top-ranking security conferences, you have to stop and think &#8220;wow, there&#8217;s a lot of American people in there&#8221; (I am referring to people working in the US, not necessarily their nationality). Just to name a few:

ACM CCS 2010: 39 out of 54 PC [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=532&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><strong>(UPDATE: now with NDSS data)</strong></p>
<p>Looking at the program committees of a few top-ranking security conferences, you have to stop and think &#8220;wow, there&#8217;s a lot of American people in there&#8221; (I am referring to people working in the US, not necessarily their nationality). Just to name a few:</p>
<ul>
<li>ACM CCS 2010: 39 out of 54 PC members in the US (72.2%)</li>
<li>Internet Society NDSS 2010: 31 out of 37 (83.8%)</li>
<li>IEEE S&amp;P 2010: 42 out of 49 (85.7%)</li>
<li>Usenix Security 2010: 26 out of 28 (92.9%)</li>
</ul>
<p>And an approximation of the similarity of program committees (only based on last names):</p>
<pre>ndss &amp; s_p : ['Feamster', 'Traynor', 'Shacham', 'Ateniese', 'Kirda',
'Smith', 'Stavrou', 'Barth', 'Backes', 'Kruegel', 'Borisov', 'Kohno',
'Brumley', 'Sion', 'Locasto', 'Reiter']
similarity: 33.33%

ndss &amp; usenix : ['Traynor', 'Shacham', 'Provos', 'Barth', 'Danezis',
'Borisov', 'Ganapathy', 'Garfinkel', 'Locasto']
similarity: 24.32%

ndss &amp; ccs : ['Christodorescu', 'Kirda', 'Stavrou', 'Barth',
'Danezis', 'Borisov', 'Kohno', 'Ganapathy', 'Locasto', 'Cui']
similarity: 18.52%

s_p &amp; usenix : ['Jha', 'Traynor', 'Giffin', 'Halderman', 'Shacham',
'Barth', 'Borisov', 'Locasto']
similarity: 16.67%

s_p &amp; ccs : ['Halderman', 'Molnar', 'Waters', 'XWang', 'Stavrou',
'Barth', 'Gligor', 'Borisov', 'Kohno', 'Locasto', 'Yu', 'Kirda']
similarity: 22.22%

usenix &amp; ccs : ['Sekar', 'Halderman', 'Gribble', 'Sailer', 'Barth',
'Danezis', 'Borisov', 'Ganapathy', 'Locasto', 'HWang']
similarity: 18.52%

<strong><span style="color:#ffffff;">.</span></strong></pre>
<p>I&#8217;m not sure how to interpret these numbers, they can mean lots of different things:</p>
<ul>
<li>they might reflect the proportion of US/RestOfWorld academics working on computer security</li>
<li>or they might reflect the proportion of US/RestOfWorld academics working on software engineering (and therefore there is nothing specific to computer security)</li>
<li>causation 1: security conferences are top ranking when they have mostly US PC members</li>
<li>causation 2: top ranking conferences attract US PC members</li>
<li>what else?</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/532/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/532/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=532&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/25/us-domination-over-security-conferences/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>Better shellcode disassembly in Pym&#8217;s</title>
		<link>http://indefinitestudies.org/2010/02/15/better-shellcode-disassembly-in-pyms/</link>
		<comments>http://indefinitestudies.org/2010/02/15/better-shellcode-disassembly-in-pyms/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:55:58 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[code analysis]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=526</guid>
		<description><![CDATA[Pym&#8217;s is an x86 disassembler packaged as a web application. It now includes a new feature, that I like to call &#8220;shellcode disassembly for really lazy dudes&#8221;. Just paste a C char* in the textbox and let the magic occur.
For instance, try with this shellcode (chosen completely arbitrarily), and you should get something like this:

[0x00000000] [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=526&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://disasm86.appspot.com/">Pym&#8217;s</a> is an x86 disassembler packaged as a web application. It now includes a new feature, that I like to call &#8220;shellcode disassembly for really lazy dudes&#8221;. Just paste a C <code>char*</code> in the textbox and let the magic occur.</p>
<p>For instance, try with <a href="http://www.milw0rm.com/shellcode/9678">this shellcode</a> (chosen completely arbitrarily), and you should get something like <a href="http://pyms86.appspot.com/desasm_hex?mode=32&amp;hexstring=\xeb\x1c\x5a\x89\xd6\x8b\x02\x66\x3d\xca\x7d\x75\x06\x66\x05\x03\x03\x89\x02\xfe\xc2\x3d\x41\x41\x41\x41\x75\xe9\xff\xe6\xe8\xdf\xff\xff\xff\x31\xd2\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xca\x7d\x41\x41\x41\x41">this</a>:</p>
<pre>
[0x00000000] 	jmp near 0x0000001e
[0x00000002] 	pop edx
[0x00000003] 	mov esi edx
[0x00000005] 	mov eax [dx]
[0x00000007] 	cmp ax 0x7dca
[0x0000000b] 	jnz 0x00000013
[0x0000000d] 	add ax 0x303
[0x00000011] 	mov [dx] eax
[0x00000013] 	inc dl
[0x00000015] 	cmp eax 0x41414141
[0x0000001a] 	jnz 0x00000005
[0x0000001c] 	jmp esi
[0x0000001e] 	call 0x00000002
[0x00000023] 	xor edx edx
[0x00000025] 	push 0xb
[0x00000027] 	pop eax
[0x00000028] 	cdq
[0x00000029] 	push edx
[0x0000002a] 	push 0x68732f2f
[0x0000002f] 	push 0x6e69622f
[0x00000034] 	mov ebx esp
[0x00000036] 	push edx
[0x00000037] 	push ebx
[0x00000038] 	mov ecx esp
[0x0000003a] 	retf 0x417d
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/526/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=526&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/15/better-shellcode-disassembly-in-pyms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>A note on the x86 semantics modeling in JPC</title>
		<link>http://indefinitestudies.org/2010/02/11/a-note-on-the-x86-semantics-modeling-in-jpc/</link>
		<comments>http://indefinitestudies.org/2010/02/11/a-note-on-the-x86-semantics-modeling-in-jpc/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:15:29 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[code analysis]]></category>
		<category><![CDATA[note to self]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=515</guid>
		<description><![CDATA[JPC is a full PC emulator (à la Bochs but in Java), including the BIOS, VGA BIOS, floppy drive and other hardware components. Of particular interest to me, is the way x86 instructions are modeled and executed. It works and stays at the binary level (no fancy disassembly), and actually compiles x86 instructions to a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=515&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><a href="http://www-jpc.physics.ox.ac.uk/">JPC</a> is a full PC emulator (à la <a href="http://bochs.sourceforge.net/">Bochs</a> but in Java), including the BIOS, VGA BIOS, floppy drive and other hardware components. Of particular interest to me, is the way x86 instructions are modeled and executed. It works and stays at the binary level (no fancy disassembly), and actually compiles x86 instructions to a simpler microcode language representing &#8220;atomic&#8221; instructions. This microcode language is then straightforward to execute, although a bit more complex than similar micro-languages (such as VEX, <a href="http://www.zynamics.com/BinNavi/manual/html/reil.htm">REIL</a> or <a href="http://bap.ece.cmu.edu/doc/bap.pdf">BIL</a>).</p>
<p style="text-align:justify;">The core of the x86 semantics is contained in the x86 to microcode compiler, found in <code>org.jpc.emulator.memory.codeblock.optimised.ProtectedModeUDecoder.decodeOpcode()</code>. This method takes a binary x86 instruction and decodes its prefices, opcode, modrm, sib, displacement and immediate parameters. Then it delegates the translation of the microcode to this sequence of methods:</p>
<pre>writeInputOperands(prefices, opcode, modrm, sib, displacement, immediate);
writeOperation(prefices, opcode, modrm);
writeOutputOperands(prefices, opcode, modrm, sib, displacement);
writeFlags(prefices, opcode, modrm);
<span style="color:#ffffff;">.</span></pre>
<p style="text-align:justify;">For instance, if we take the binary instruction 04 42 (add al, 0&#215;42), it is decoded with opcode = 0&#215;04 and immediate = 0&#215;42. Then based on these values, the instruction is translated to the following microcode sequence:</p>
<pre>// writeInputOperands:
LOAD0_AL
LOAD1_IB 0x42
// writeOperation:
ADD
// writeOutputOperands:
STORE0_AL
// writeFlags:
ADD_O8_FLAGS
<span style="color:#ffffff;">.</span></pre>
<p style="text-align:justify;">Now, understanding the semantics of an x86 instruction reduces to understanding the semantics of the microcode language. For this, we need the microcode interpreter, which is <code>org.jpc.emulator.memory.codeblock.optimised.ProtectedModeUBlock.execute()</code>. It is a relatively simple execution language (execution-wise), with 5 general-purpose registers but with roughly 750 opcodes. The execution of the above microcodes translates to this Java sequence:</p>
<pre>reg0 = cpu.eax &amp; 0xff;
reg1 = 0x42 &amp; 0xff;
reg2 = reg0; reg0 = reg2 + reg1;
cpu.eax = (cpu.eax &amp; ~0xff) | (reg0 &amp; 0xff);
cpu.setZeroFlag((byte)reg0);
cpu.setParityFlag(reg0);
cpu.setSignFlag((byte)reg0);
cpu.setCarryFlag(reg0, Processor.CY_TWIDDLE_FF);
cpu.setAuxiliaryCarryFlag(reg2, reg1, result, Processor.AC_XOR);
cpu.setOverflowFlag(reg0, reg2, reg1, Processor.OF_ADD_BYTE);</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/515/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/515/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/515/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=515&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/11/a-note-on-the-x86-semantics-modeling-in-jpc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>A super quick and super dirty shellcode emulator</title>
		<link>http://indefinitestudies.org/2010/02/10/a-super-quick-and-super-dirty-shellcode-emulator/</link>
		<comments>http://indefinitestudies.org/2010/02/10/a-super-quick-and-super-dirty-shellcode-emulator/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:13:47 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[code analysis]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=506</guid>
		<description><![CDATA[Using JPC, it gives something like this:
import java.io.IOException;
import org.jpc.emulator.PC;
import org.jpc.emulator.processor.Processor;
import org.jpc.j2se.VirtualClock;

public class EmulateShellcode {
    public static void main(String[] args) throws IOException {
	VirtualClock clock = new VirtualClock();
	PC pc = new PC(clock, args);
	Processor cpu = pc.getProcessor();
	cpu.cs.setSelector(0);
	cpu.eip = 0;

	if(args.length == 0) {
	    System.out.println("Usage: java EmulateShellcode ");
	    System.out.println("*** examples:");
	  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=506&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Using <a href="http://www-jpc.physics.ox.ac.uk/home_home.html">JPC</a>, it gives something like this:</p>
<pre>import java.io.IOException;
import org.jpc.emulator.PC;
import org.jpc.emulator.processor.Processor;
import org.jpc.j2se.VirtualClock;

public class EmulateShellcode {
    public static void main(String[] args) throws IOException {
	VirtualClock clock = new VirtualClock();
	PC pc = new PC(clock, args);
	Processor cpu = pc.getProcessor();
	cpu.cs.setSelector(0);
	cpu.eip = 0;

	if(args.length == 0) {
	    System.out.println("Usage: java EmulateShellcode ");
	    System.out.println("*** examples:");
	    System.out.println("* add al, 0x42:\n\tjava EmulateShellcode 04 42");
	    System.out.println("* nop:\n\tjava EmulateShellcode 0x90");
	    System.out.println("* inc edx:\n\tjava EmulateShellcode 42h");
	    System.exit(1);
	}

	System.out.println("Loading shellcode in memory...");
	for(int i=0; i&lt;args.length; i++) {
	    String str = args[i];
	    if(args[i].startsWith(&quot;0x&quot;))
		str = args[i].substring(2);
	    else if(args[i].startsWith(&quot;\\x&quot;))
		str = args[i].substring(2);
	    else if(args[i].endsWith(&quot;h&quot;))
		str = args[i].substring(0, args[i].length()-1);

            <strong>// the byte at address i is the argument at position i
	    cpu.linearMemory.setByte(i, (byte)Integer.parseInt(str, 16));</strong>
	}

	System.out.println("Before execution:");
	cpu.printState();
        <strong>// execute starting at address 0
	cpu.linearMemory.executeProtected(cpu, 0);</strong>
	System.out.println("\nAfter execution:");
	cpu.printState();
    }
}
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/506/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=506&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/10/a-super-quick-and-super-dirty-shellcode-emulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating a toy virtual machine with PyPy</title>
		<link>http://indefinitestudies.org/2010/02/08/creating-a-toy-virtual-machine-with-pypy/</link>
		<comments>http://indefinitestudies.org/2010/02/08/creating-a-toy-virtual-machine-with-pypy/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 19:30:32 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[code analysis]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=487</guid>
		<description><![CDATA[Here, you can use &#8220;virtual machine&#8221; as in &#8220;Java Virtual Machine&#8221;, not as in virtualization. We will play with the virtual machine described in the paper Tracing the Meta-Level: PyPy&#8217;s Tracing JIT Compiler by C.F. Bolz, A. Cuni, M. Fijalkowski and A. Rigo (it&#8217;s a great read by the way).
PyPy is a fascinating project, too [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=487&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Here, you can use &#8220;virtual machine&#8221; as in &#8220;Java Virtual Machine&#8221;, not as in virtualization. We will play with the virtual machine described in the paper <em><a href="http://codespeak.net/pypy/extradoc/talk/icooolps2009/bolz-tracing-jit.pdf">Tracing the Meta-Level: PyPy&#8217;s Tracing JIT Compiler</a></em> by C.F. Bolz, A. Cuni, M. Fijalkowski and A. Rigo (it&#8217;s a great read by the way).</p>
<p style="text-align:justify;"><a href="http://codespeak.net/pypy">PyPy</a> is a fascinating project, too complex to describe here. Among other things, PyPy can take any interpreter written in a subset of Python, translate it to C, and automatically generate a JIT compiler for this language. Does it sound too good to be true? Let&#8217;s try this.</p>
<ul style="text-align:justify;">
<li>grab <a href="http://codespeak.net/pypy/dist/pypy/doc/getting-started.html#svn-check-out">PyPy source code</a></li>
<li style="text-align:justify;">create the interpreter in pypy/translator/goal/target-toy.py with the following code:</li>
</ul>
<pre style="text-align:justify;">import os, sys
import autopath
import py

# these are the opcodes for the interpreted language
JUMP_IF_A  = 1
MOV_A_R    = 2
MOV_R_A    = 3
ADD_R_TO_A = 4
DECR_A     = 5
RETURN_A   = 6

<em>from pypy.rlib.jit import JitDriver
tlrjitdriver = JitDriver(greens = ['pc', 'bytecode'],
                         reds = ['a', 'regs'])</em>

# the main interpreter loop
def interpret(bytecode, a):
   regs = [0] * 256
   pc = 0
   while True:
<em>       tlrjitdriver.jit_merge_point(bytecode=bytecode, pc=pc, a=a, regs=regs)
</em>       opcode = bytecode[pc]
       pc += 1
       if opcode == JUMP_IF_A:
           target = bytecode[pc]
           pc += 1
           if a:
<em>               if target&lt;pc:
                   tlrjitdriver.can_enter_jit(bytecode=bytecode, pc=target, a=a, regs=regs)
</em>               pc = target
       elif opcode == MOV_A_R:
           n = bytecode[pc]
           pc += 1
           regs[n] = a
       elif opcode == MOV_R_A:
           n = bytecode[pc]
           pc += 1
           a = regs[n]
       elif opcode == ADD_R_TO_A:
           n = bytecode[pc]
           pc += 1
           a += regs[n]
       elif opcode == DECR_A:
           a -= 1
       elif opcode == RETURN_A:
           return a

# __________  Entry point  __________
def entry_point(argv):
    # the program we want to interpret
    # it computes the square of its argument
    bytecode = [
        MOV_A_R,    0, # i = a
        MOV_A_R,    1, # copy of ’a’
        # 4:
        MOV_R_A,    0, # i--
        DECR_A,
        MOV_A_R,    0,
        MOV_R_A,    2, # res += a
        ADD_R_TO_A, 1,
        MOV_A_R,    2,
        MOV_R_A,    0, # if i!=0: goto 4
        JUMP_IF_A,  4,
        MOV_R_A,    2,
        RETURN_A
    ]
    result = interpret(bytecode, int(argv[1]))
    print result
    return 0

def jitpolicy(driver):
    from pypy.jit.metainterp.policy import JitPolicy
    return JitPolicy()

# _____ Define and setup target ___
def target(*args):
    return entry_point, None

# main function, if this script is called from the command line
if __name__ == '__main__':
    entry_point(sys.argv)</pre>
<div><span style="color:#ffffff;">.</span></div>
<ul style="text-align:justify;">
<li>the lines in italic are the annotations for the JIT compiler. We need to give PyPy some insight on the interpreted language by declaring what is the instruction pointer (the green variables), the beginning of the dispatch loop and the backward branches (see the paper for full details).</li>
<li>check that you can execute this script correctly by running <code>python target-toy.py 12</code>, the output should be 144</li>
<li>PyPy can translate this script in C. For this, first install the <a href="http://codespeak.net/pypy/dist/pypy/doc/getting-started-python.html#translating-the-pypy-python-interpreter">dependencies</a> and then run the following command: <code>python translate.py target-toy.py</code></li>
<li>this should give you an executable target-toy-c, rename it target-toy-native and check that <code>./target-toy-native 12</code> yields 144</li>
<li>now we can ask PyPy to translate target-toy.py in C and generate a JIT compiler for it. For this, we just run <code>python translate.py --opt=jit target-toy.py</code>
<ul>
<li>note: the 64-bit backend of PyPy is not implemented yet, so if you are on a 64-bit system, you will have to struggle a bit. You will have to use a 32-bit Python interpreter (see my former post), create an alias for gcc -m32 (let&#8217;s call it gcc32) and then pass the option &#8211;cc=gcc32 to translate.py.</li>
</ul>
</li>
<li>this should give you another target-toy-c executable, rename it to target-toy-jit and check that <code>./target-toy-jit 12 yields 144</code></li>
</ul>
<p style="text-align:justify;">Ok, everything is working, so let&#8217;s now see how all this performs by computing large squares:<br />
<code><br />
~/pypy-trunk/pypy/translator/goal$ time python target-toy.py 1000000<br />
1000000000000<br />
real	0m18.637s</code></p>
<p style="text-align:justify;"><code> </code></p>
<p style="text-align:justify;"><code>~/pypy-trunk/pypy/translator/goal$ time ./target-toy-native 1000000<br />
-727379968<br />
real	0m0.024s</code></p>
<p style="text-align:justify;"><code> </code></p>
<p style="text-align:justify;"><code>~/pypy-trunk/pypy/translator/goal$ time ./target-toy-jit 1000000<br />
-727379968<br />
[...]<br />
real	0m0.005s</code></p>
<p style="text-align:justify;">The first run is the <strong>square program interpreted by our program, itself interpreted by the Python interpreter</strong>. Double interpretation is slow.</p>
<p style="text-align:justify;">The second run is the <strong>square program interpreted by a native version of our interpret function</strong>. Interpretation by native code is ok.</p>
<p style="text-align:justify;">The third run is the <strong>s</strong><strong>quare program interpreted and JIT&#8217;ed on the fly</strong>. It&#8217;s super awesome :)</p>
<p style="text-align:justify;">Final note: I must thank everybody from #pypy on freenode, for their help and resilience to stupid questions. Thanks guys!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/487/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/487/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/487/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=487&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/08/creating-a-toy-virtual-machine-with-pypy/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>How to build 32-bit Python on Ubuntu 9.10 x86_64</title>
		<link>http://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/</link>
		<comments>http://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:42:25 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=476</guid>
		<description><![CDATA[This might be useful to someone:
$ cd Python-2.6.4
$ CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \
-L`pwd`/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" \
./configure --prefix=/opt/pym32
$ make 
$ sudo make install
Now, to check if the build is correct, try to check the max integer size on your standard 64-bit interpreter and in your fresh 32-bit binary:
$ python -c "import sys; print sys.maxint"
9223372036854775807
$ /opt/pym32/bin/python -c "import sys; print [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=476&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>This might be useful to someone:<br />
<code>$ cd Python-2.6.4<br />
$ CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \<br />
-L`pwd`/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" \<br />
./configure --prefix=/opt/pym32<br />
$ make <br />
$ sudo make install</code></p>
<p>Now, to check if the build is correct, try to check the max integer size on your standard 64-bit interpreter and in your fresh 32-bit binary:</p>
<p><code>$ python -c "import sys; print sys.maxint"<br />
9223372036854775807<br />
$ /opt/pym32/bin/python -c "import sys; print sys.maxint"<br />
2147483647</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/476/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=476&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/02/08/how-to-build-32-bit-python-on-ubuntu-9-10-x86_64/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>No Offline Google Maps on Android</title>
		<link>http://indefinitestudies.org/2010/01/22/no-offline-google-maps-on-android/</link>
		<comments>http://indefinitestudies.org/2010/01/22/no-offline-google-maps-on-android/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 11:31:36 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[trekking]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=464</guid>
		<description><![CDATA[If you ever wondered why you don&#8217;t have mapping applications on Android that let you cache Google maps data (for when you have no Internet connectivity), that&#8217;s because it&#8217;s forbidden in the Android Maps API terms of service:
[...] Under this Section 8, you must not (nor may you permit anyone else to):
8.2.  copy, translate, modify, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=464&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p>If you ever wondered why you don&#8217;t have mapping applications on Android that let you cache Google maps data (for when you have no Internet connectivity), that&#8217;s because it&#8217;s forbidden in the <a href="http://code.google.com/android/maps-api-signup.html">Android Maps API terms of service</a>:</p>
<div id="_mcePaste" style="padding-left:30px;"><em>[...] Under this Section 8, you must not (nor may you permit anyone else to):</em></div>
<div id="_mcePaste" style="padding-left:30px;"><em>8.2.  copy, translate, modify, create a derivative work of, </em><strong><em>pre-fetch, cache</em></strong><em>, or publicly display any Content or any part thereof.</em></div>
<div style="padding-left:30px;"><em><br />
</em></div>
<div>Too bad, there is a number of situations where you can&#8217;t assume that you have connectivity. For instance when you are:</div>
<div>
<ul>
<li>abroad (unless you can afford astronomical roaming charges of course),</li>
<li>hiking in the backcountry</li>
</ul>
<p><strong>UPDATE: </strong>the <a href="http://oruxmaps.x10hosting.com/index_en.html">OruxMaps</a> application on Android can read offline maps created with the <a href="http://oruxmaps.x10hosting.com/TrekBuddy_Atlas_Creator_1.6.1OruxMaps.zip">TrekBuddy</a> desktop application. This app can create maps from a number of different sources, including Google maps topographic data. Let&#8217;s celebrate!</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/464/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=464&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/01/22/no-offline-google-maps-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting Started with Savarin</title>
		<link>http://indefinitestudies.org/2010/01/20/getting-started-with-savarin/</link>
		<comments>http://indefinitestudies.org/2010/01/20/getting-started-with-savarin/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:39:28 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[code analysis]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=456</guid>
		<description><![CDATA[(disclaimer: the author of Savarin, Matthieu Kaczmarek, is a colleague working in the office next door and a friend of mine)
Savarin is a free online binary classification service (you can think of it as automatic diff&#8217;ing against large databases of programs). It is in beta, not fully polished yet, but you can still squeeze some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=456&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><em>(disclaimer: the author of Savarin, Matthieu Kaczmarek, is a colleague working in the office next door and a friend of mine)</em></p>
<p>Savarin is a free online binary classification service (you can think of it as automatic diff&#8217;ing against large databases of programs). It is in beta, not fully polished yet, but you can still squeeze some interesting results out of it. Here is your daily shot of binary analysis, freshly brewed.</p>
<p>You will need:</p>
<ul>
<li>2 different malware samples in the same malware family. We are going to use Sasser.A (already in Savarin&#8217;s database) and an unpacked Sasser.G (md5 <a href="http://www.offensivecomputing.net/?q=ocsearch&amp;ocq=b973853d0863070aca89ce00d4ee0fb9">b973853d0863070aca89ce00d4ee0fb9</a> [offensivecomputing.net])</li>
<li>IDA with IDAPython for the actual diff&#8217;ing (I have IDA 5.5, I don&#8217;t know if this works with the free version)</li>
</ul>
<p>Let&#8217;s go:</p>
<ol>
<li>open <a href="http://savarin.loria.fr">Savarin</a></li>
<li>in <em>&#8220;Classification against custom database&#8221;</em>, choose <strong>SasserA</strong></li>
<li>upload the Sasser.G sample</li>
<li>in the results page, click <em>More </em>to see the similarity with other binaries in the Sasser family</li>
<li>you can see that the sample is 41.95% similar to a sample with md5 <em>edc66a4031f5a41f9ddf08595a1d4c92</em></li>
</ol>
<p>At this point, you have a classification of a sample against a (small) database of programs. You can therefore see the distance between this sample and other samples. If you ask me, it&#8217;s a lot better to see that unknownsample.exe is 80% similar to badguy.exe and 90% similar to badguy2.0.exe than just &#8220;infected&#8221; or &#8220;not infected&#8221;.</p>
<p>For the actual diff&#8217;ing, follow these steps:</p>
<ol>
<li>open the Sasser.G sample in IDA</li>
<li>download the IDAPython analysis report on Savarin&#8217;s analysis page (this report contains all the data needed to visualize the binary differences in IDA)</li>
<li>execute the IDAPython analysis report</li>
<li>right now, the situation is pretty anticlimactic since you should see no change apart from a few lines in the console. Wait until next step for the interesting stuff. Yes, you had nothing to do in this step, so what?</li>
<li>type <strong>SavColor(&#8216;md5.edc66a4031f5a41f9ddf08595a1d4c92&#8242;, 0&#215;0088ff)</strong> in the IDAPython console (it is the md5 value of the Sasser.A sample)</li>
<li>type <strong>SavComment(&#8216;md5.edc66a4031f5a41f9ddf08595a1d4c92&#8242;) </strong>in the IDAPython console</li>
<li>this is it, now you can browse the Sasser.G sample, and the common parts with Sasser.A will be colored. Additionally, for two matching instructions you will see the corresponding address in the Sasser.A sample.</li>
</ol>
<p>The Fine Screenshots:</p>

<a href='http://indefinitestudies.org/2010/01/20/getting-started-with-savarin/screen1/' title='screen1'><img width="150" height="87" src="http://indefinitestudies.files.wordpress.com/2010/01/screen1.png?w=150&#038;h=87" class="attachment-thumbnail" alt="" title="screen1" /></a>
<a href='http://indefinitestudies.org/2010/01/20/getting-started-with-savarin/screen2/' title='screen2'><img width="150" height="87" src="http://indefinitestudies.files.wordpress.com/2010/01/screen2.png?w=150&#038;h=87" class="attachment-thumbnail" alt="" title="screen2" /></a>

<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/456/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/456/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=456&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/01/20/getting-started-with-savarin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
		<item>
		<title>1998 has called and they want their software back</title>
		<link>http://indefinitestudies.org/2010/01/15/1998-has-called-and-they-want-their-software-back/</link>
		<comments>http://indefinitestudies.org/2010/01/15/1998-has-called-and-they-want-their-software-back/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 12:44:28 +0000</pubDate>
		<dc:creator>dan</dc:creator>
				<category><![CDATA[useless]]></category>

		<guid isPermaLink="false">http://indefinitestudies.org/?p=447</guid>
		<description><![CDATA[&#8220;The need to improve current industrial software engineering practice is widely felt. To mention only a few striking examples: too many software projects fail and are canceled before completion or are not delivered on time or exceed their budget the energy spent on testing code is ever increasing and tends to represent more than half [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=447&subd=indefinitestudies&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<p><em>&#8220;The need to improve current industrial software engineering practice is widely felt. To mention only a few striking examples: too many software projects fail and are canceled before completion or are not delivered on time or exceed their budget the energy spent on testing code is ever increasing and tends to represent more than half of the entire development cost, the number of errors found in complex software is ofter rather high, there is almost no software warranty whatsoever, but again and again the world is surprised by Trojan horses and security holes, etc.&#8221;</em></p>
<p>&#8211; <a href="http://books.google.fr/books?id=Am43BAC06L8C&amp;lpg=PP1&amp;dq=abstract%20state%20machines&amp;pg=PP1#v=onepage&amp;q=&amp;f=false">Abstract State Machines</a>, Egon Börger and Robert Stärk, 1998</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/indefinitestudies.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/indefinitestudies.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/indefinitestudies.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/indefinitestudies.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/indefinitestudies.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/indefinitestudies.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/indefinitestudies.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/indefinitestudies.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/indefinitestudies.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/indefinitestudies.wordpress.com/447/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=indefinitestudies.org&blog=4498685&post=447&subd=indefinitestudies&ref=&feed=1" />]]></content:encoded>
			<wfw:commentRss>http://indefinitestudies.org/2010/01/15/1998-has-called-and-they-want-their-software-back/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/49b7644241e997d801ef02349dd2433e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dan</media:title>
		</media:content>
	</item>
	</channel>
</rss>