<?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/"
	>

<channel>
	<title>On the way to perfect computing &#187; internals</title>
	<atom:link href="http://blog.alexzender.com/category/internals/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alexzender.com</link>
	<description>Just another bunch of coding thoughts by Alexander Vushkan</description>
	<lastBuildDate>Tue, 02 Jun 2009 13:26:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Interview with Matt Knox &#8211; an Adware Author</title>
		<link>http://blog.alexzender.com/2009/02/06/interview-with-matt-knox-an-adware-author/</link>
		<comments>http://blog.alexzender.com/2009/02/06/interview-with-matt-knox-an-adware-author/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 11:47:24 +0000</pubDate>
		<dc:creator>Alexander Vushkan</dc:creator>
				<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://blog.alexzender.com/?p=76</guid>
		<description><![CDATA[Almost everyone knows those passionate people driving our industry and technologies forward. But some of them are not that famous. Many of them do not have blogs and don&#8217;t attend conferences. But they definitely have something to share. Matt Knox has very interesting past &#8211; he wrote adware. This is one of that interesting tasks [...]]]></description>
			<content:encoded><![CDATA[<p>Almost everyone knows those passionate people driving our industry and technologies forward. But some of them are not that famous. Many of them do not have blogs and don&#8217;t attend conferences. But they definitely have something to share.</p>
<p>Matt Knox has very interesting past &#8211; he wrote adware. This is one of that interesting tasks when you have to understand OS deeply in order to write piece of code that will transparently turn millions of machines into zombies staying undetected.</p>
<p>So, amusing story to read &#8211; <a href="http://philosecurity.org/2009/01/12/interview-with-an-adware-author">Interview with an Adware Author </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexzender.com/2009/02/06/interview-with-matt-knox-an-adware-author/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inside MySQL</title>
		<link>http://blog.alexzender.com/2008/02/24/inside-mysql/</link>
		<comments>http://blog.alexzender.com/2008/02/24/inside-mysql/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 22:18:13 +0000</pubDate>
		<dc:creator>Alexander Vushkan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://blog.alexzender.com/?p=23</guid>
		<description><![CDATA[Majority of us knows that databases are read-optimized products and most of them are not optimized for writes. In this post I would like to describe what&#8217;s going on under the hood of mysql that can help us to find origins of some well-known rules. So, let&#8217;s start with MySQL MyIsam table: - MyIsam tables [...]]]></description>
			<content:encoded><![CDATA[<p>Majority of us knows that databases are read-optimized products and most of them are not optimized for writes.</p>
<p>In this post I would like to describe what&#8217;s going on under the hood of mysql that can help us to find origins of some well-known rules.</p>
<p>So, let&#8217;s start with MySQL MyIsam table:</p>
<p>- MyIsam tables caches only key data structures in memory and let OS caching mechanism to cope with data. Truly, particularly Linux is good at it at some point(Also MyIsam has read-ahead buffer for data). So, if insert/update query updates key data structure, MyIsam will flush key data on the disk. It slows down a whole process. To avoid this you can tweak mysql&#8217;s configuration to delay key writes.</p>
<p>- MyIsam comes with a very simple locking mechanism &#8211; it&#8217;s its table-level locking. So, when user writes data, another one won&#8217;t be able to read any row till the end of transaction. Okay, you can say, if insert time is relatively short, we can wait. So, let us see how MyIsam inserts record into a table: Firstly, it scans a table area and tries to find previously deleted row and re-use its room. If no deleted row was found, it appends data to the end of the table. So, if the space is not as important as execution time, you can speed it up telling database to append data to the end of table immediately and disable scans.</p>
<p>For the bulk data management, it&#8217;s good to create a table without indices first and import data. Once the import process is finished you can create indices. If you need to append large amount of data to production machine, you can do hot replacement:  prepare such table and send signal to application to use another table instead of old one(the type of signal depends on your application architecture: IPC, record in database with polling on application side,etc)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexzender.com/2008/02/24/inside-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Machine Architecture: Things Your Programming Language Never Told You (by Herb Sutter)</title>
		<link>http://blog.alexzender.com/2008/02/12/machine-architecture-things-your-programming-language-never-told-you-by-herb-sutter/</link>
		<comments>http://blog.alexzender.com/2008/02/12/machine-architecture-things-your-programming-language-never-told-you-by-herb-sutter/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 11:23:13 +0000</pubDate>
		<dc:creator>Alexander Vushkan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://blog.alexzender.com/?p=20</guid>
		<description><![CDATA[On September 19, 2007 Heb Sutter did a presentation on a subject at MS. Snippet from description: High-level languages insulate the programmer from the machine. That’s a wonderful thing &#8212; except when it obscures the answers to the fundamental questions of “What does the program do?” and “How much does it cost?” The C++/C#/Java programmer [...]]]></description>
			<content:encoded><![CDATA[<p>On September 19, 2007 Heb Sutter did a presentation on a subject at MS.</p>
<p>Snippet from description:</p>
<blockquote><p>High-level languages insulate the programmer from the machine. That’s a wonderful thing &#8212; except when it obscures the answers to the fundamental questions of “What does the program do?” and “How much does it cost?”</p>
<p>The C++/C#/Java programmer is less insulated than most, and still we find that programmers are consistently surprised at what simple code actually does and how expensive it can be &#8212; not because of any complexity of a language, but because of being unaware of the complexity of the machine on which the program actually runs.</p>
<p>This talk examines the “real meanings” and “true costs” of the code we write&#8230;</p></blockquote>
<p>Video of the presentation at <a href="http://video.google.com/videoplay?docid=-4714369049736584770">google video</a>:</p>
<p><embed src="http://video.google.com/googleplayer.swf?docId=-4714369049736584770&amp;hl=en" style="width: 400px; height: 326px" id="VideoPlayback" type="application/x-shockwave-flash"></embed>You can <a href="http://www.nwcpp.org/Downloads/2007/Machine_Architecture_-_NWCPP.pdf">download presentation here</a></p>
<blockquote>
<blockquote></blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexzender.com/2008/02/12/machine-architecture-things-your-programming-language-never-told-you-by-herb-sutter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype Protection Levels &#8211; Do you know about them?</title>
		<link>http://blog.alexzender.com/2008/02/12/skype-protection-levels-do-you-know-about-them/</link>
		<comments>http://blog.alexzender.com/2008/02/12/skype-protection-levels-do-you-know-about-them/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 09:52:11 +0000</pubDate>
		<dc:creator>Alexander Vushkan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://blog.alexzender.com/?p=5</guid>
		<description><![CDATA[Skype is not just a VoIP tool, it&#8217;s a black box with the multiple protection layers. In addition Skype&#8217;s an interesting look at software architecture in general. Look &#8211; you know, everyone is acquainted with classic client-server architecture, it&#8217;s easy to implement and maintain. But usually it&#8217;s accompanied with the expensive hosting infrastructure(do you know [...]]]></description>
			<content:encoded><![CDATA[<p>Skype is not just a VoIP tool, it&#8217;s a black box with the multiple protection layers.</p>
<p>In addition Skype&#8217;s an interesting look at software architecture in general.</p>
<p>Look &#8211; you know, everyone is acquainted with  classic client-server architecture, it&#8217;s easy to implement and maintain. But usually it&#8217;s accompanied with the expensive hosting infrastructure(do you know the numbers youtube spends on hosting?!).</p>
<p>But Skype developers (and original developers of Kazaa  as well)  implemented distributed self-organized peer-to-peer network, P2P. So, everyone might be a host.</p>
<p>Okey, let&#8217;s go on.</p>
<p>Skype&#8217;s executable is encrypted and it dynamically decrypts itself as it load into memory. The dump flush and analysis is difficult since startup code is cleanded after execution and we get executable that cannot be launched. Integrity checks are executed in random order, basically upon incoming call event.  Basically there are no static calls and most important functions are called using dynamically calculated and obfuscated pointer.</p>
<p>Interesting, isn&#8217;t it? What do they hide from us?</p>
<p>You can find more information and detailed description by Kris Kasperski <a href="http://www.xakep.ru/magazine/xa/100/064/1.asp">here</a></p>
<p>More links:</p>
<ul>
<li> <a href="http://www1.cs.columbia.edu/~salman/skype/">General Skype Analysis</a></li>
<li><a href="http://www.csnc.ch/static/download/misc/2006_skype_trojaner_v1.1.pdf">Skype Trojan &#8211; how to use skype network to distribute viruses</a></li>
<li><a href="http://gcasiez.perso.orange.fr/skypeandsoftice.html">How to use Skype with Softice?</a></li>
<li><a href="http://www.pagetable.com/?p=27">Skype Reads Your BIOS and Motherboard Serial Number</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexzender.com/2008/02/12/skype-protection-levels-do-you-know-about-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UDP hole punching. How Skype works</title>
		<link>http://blog.alexzender.com/2008/02/12/udp-hole-punching-how-skype-works/</link>
		<comments>http://blog.alexzender.com/2008/02/12/udp-hole-punching-how-skype-works/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 09:19:18 +0000</pubDate>
		<dc:creator>Alexander Vushkan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[internals]]></category>

		<guid isPermaLink="false">http://blog.alexzender.com/?p=3</guid>
		<description><![CDATA[The following article contains interesting thoughts on skype internal routines. http://www.heise-security.co.uk/articles/82481/0 &#160; References STUN &#8211; Simple Traversal of User Datagram Protocol (UDP). Through Network Address Translators (NATs) &#8211; http://www.ietf.org/rfc/rfc3489.txt Traversal Using Relay NAT (TURN) &#8211; http://www.jdrosen.net/midcom_turn.html]]></description>
			<content:encoded><![CDATA[<p class="first">The following article contains interesting thoughts on skype internal routines.<br />
<span class="nobr"><a href="http://www.heise-security.co.uk/articles/82481/0" target="_blank">http://www.heise-security.co.uk/articles/82481/0</a></span></p>
<p class="paragraph">&nbsp;</p>
<p><strong class="bold">References</strong></p>
<ol>
<li>STUN &#8211; Simple Traversal of User Datagram Protocol (UDP). Through Network Address Translators (NATs) &#8211;  <span class="nobr"><a href="http://www.ietf.org/rfc/rfc3489.txt" target="_blank">http://www.ietf.org/rfc/rfc3489.txt</a></span></li>
<li>Traversal Using Relay NAT (TURN) &#8211; <span class="nobr"><a href="http://www.jdrosen.net/midcom_turn.html" target="_blank">http://www.jdrosen.net/midcom_turn.html</a></span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.alexzender.com/2008/02/12/udp-hole-punching-how-skype-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
