<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Security Ripcord &#187; atlas</title>
	<atom:link href="http://www.cutawaysecurity.com/blog/archives/category/atlas/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cutawaysecurity.com/blog</link>
	<description>Cutaway's Observations, Opinions, Rants, Raves, Tantrums, and Tirades</description>
	<lastBuildDate>Tue, 01 Jun 2010 15:17:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>DefCon 16 CTF &#8211; Pointers to Other Write-ups</title>
		<link>http://www.cutawaysecurity.com/blog/archives/268</link>
		<comments>http://www.cutawaysecurity.com/blog/archives/268#comments</comments>
		<pubDate>Fri, 15 Aug 2008 05:32:07 +0000</pubDate>
		<dc:creator>cutaway</dc:creator>
				<category><![CDATA[DefCon]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[atlas]]></category>
		<category><![CDATA[@tlas]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[Daily Dave]]></category>
		<category><![CDATA[invisigoth]]></category>
		<category><![CDATA[Kenshoto]]></category>
		<category><![CDATA[l@stplace]]></category>
		<category><![CDATA[Mezzendo]]></category>
		<category><![CDATA[NOPSRUS]]></category>
		<category><![CDATA[Sk3wl0fr00t]]></category>

		<guid isPermaLink="false">http://www.cutawaysecurity.com/blog/?p=268</guid>
		<description><![CDATA[Well, I think it is pretty well known now that l@stplace is now being affectionately referred to as 3@stplace after this year&#8217;s DefCon Capture The Flag (CTF) competition.  I will not have a detailed write-up like I did last year as most of my time was spent banging my head on LosT&#8217;s challenges.  If you [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I think it is pretty well known now that l@stplace is now being affectionately referred to as 3@stplace after this year&#8217;s DefCon Capture The Flag (CTF) competition.  I will not have a <a title="DefCon 15 CTF - WarGamez" href="http://www.cutawaysecurity.com/blog/wp-admin/post.php?action=edit&amp;post=176" target="_blank">detailed write-up like I did last year</a> as most of my time was spent banging my head on <a title="MBC" href="http://www.mysterychallenge.org/" target="_blank">LosT&#8217;s challenges</a>.  If you want to know more about what happened you should check out <a title="3@stplace sk3wl3d" href="http://atlas.r4780y.com/cgi-bin/atlas/2008/08/12#080808-sk3wl3d">@tlas&#8217; recap</a>, swing over to the <a title="Daily Dave's Archive" href="http://lists.immunitysec.com/pipermail/dailydave/2008-August/thread.html" target="_blank">Daily Dave Archives for input</a> from several team members, or check out the <a title="DefCon CTF 2008" href="http://nopsr.us/ctf2008/" target="_blank">write-up at NOSRUS</a>.  These sources say it better than I ever could.</p>
<p>Some interesting CTF stuff that did happen to me, however, is that I got to speak with <a title="This is as good a place as any to point you to for Invisigoth" href="http://www.kenshoto.com/" target="_blank">Invisigoth</a> again, @tlas for the first time in person, and I actually met Mezzendo on the shuttle ride to the Riv.  Getting to speak with these guys is like somebody from the deep South having a conversation with a NASCAR driver or WWE wrestler.  I try not to get all geeked out by other people because, after all, they are just other people.  But it was great to get to interact with them in person rather than virtually.  They were all very personable and seem glad to talk to me.  Unfortunately, although DefCon is a great place to met these guys, their extra time is definitely limited.  Maybe next year I&#8217;ll get into a few of the parties and have a better chance to interact with them.</p>
<p>So, congratulations to Sk3wl0fr00t for their domination of so many outstanding teams.  Of course, from reading @tlas&#8217; recap it looks like they have lit the fire under l@stplace and I&#8217;m willing to bet that we have not heard the l@st of them.  I do think, however, that this just means that the competetion is going to become stiffer each year that passes.  This will also put pressure on <a title="Kenshoto" href="http://www.kenshoto.com/" target="_blank">Kenshoto</a> to keep coming up with outstanding and ground-breaking scenarios for these competitions.</p>
<p>One thing that did catch my eye while I was walking around DefCon was a flier for a $100,000 CTF in South Korea.  For some reason I cannot find the flier now but I guess it is similar to the <a title="$100,000 CTF" href="http://www.thedarkvisitor.com/2008/03/chinese-hackers-interested-in-south-korean-hacking-competition-code-gate-2008/" target="_blank">April competition that was written up on The Dark Visitor</a> back in March.  I have a feeling that we are going to see this turn into big competitions like we have seen with console gaming.  Imagine a circuit where you just do CTF for a living.  It seems like a good way to quickly base and build up your skills.  And, when all is said and done, back to the corporate world for damn fine consulting fees.  Well, we can all dream, right?!!!!</p>
<p>Go forth and do good things,</p>
<p>Don C. Weber</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cutawaysecurity.com/blog/archives/268/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Price of Disassembly</title>
		<link>http://www.cutawaysecurity.com/blog/archives/248</link>
		<comments>http://www.cutawaysecurity.com/blog/archives/248#comments</comments>
		<pubDate>Sun, 11 May 2008 19:02:39 +0000</pubDate>
		<dc:creator>cutaway</dc:creator>
				<category><![CDATA[Disassembly]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[atlas]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Don C. Weber]]></category>
		<category><![CDATA[Learn Security Online]]></category>
		<category><![CDATA[LSO]]></category>
		<category><![CDATA[Security Ripcord]]></category>

		<guid isPermaLink="false">http://www.cutawaysecurity.com/blog/?p=248</guid>
		<description><![CDATA[I was checking prices for a few books that atlas mentioned in his interview on Learn Security Online.  I was not expecting to pay this much for any of the books.  I think I&#8217;ll wait.  Those of you who are done with your versions might think about becoming a reseller.  Or, [...]]]></description>
			<content:encoded><![CDATA[<p>I was checking prices for a few books that <a href="Hacker Disassembling Uncovered" target="_blank">atlas</a> mentioned in his interview on <a title="Interview with Atlas" href="http://www.learnsecurityonline.com/index.php?option=com_content&amp;task=view&amp;id=237&amp;Itemid=1" target="_blank">Learn Security Online</a>.  I was not expecting to pay this much for any of the books.  I think I&#8217;ll wait.  Those of you who are done with your versions might think about becoming a reseller.  Or, you can contact me if you are willing to make a donation.</p>
<p><a href="http://www.cutawaysecurity.com/blog/wp-content/uploads/2008/05/hacker_disass_book.png"><img class="aligncenter size-medium wp-image-246" title="hacker_disass_book" src="http://www.cutawaysecurity.com/blog/wp-content/uploads/2008/05/hacker_disass_book.png" alt="Hacker Disassembling Uncovered" /></a></p>
<p><a href="http://www.cutawaysecurity.com/blog/wp-content/uploads/2008/05/hacker_disass_book1.png"><img class="aligncenter size-medium wp-image-247" title="hacker_disass_book1" src="http://www.cutawaysecurity.com/blog/wp-content/uploads/2008/05/hacker_disass_book1.png" alt="Hacker Disassembling Uncovered Prices" /></a></p>
<p>Go forth and do good things,</p>
<p>Don C. Weber</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cutawaysecurity.com/blog/archives/248/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hello World Assembly Compiling</title>
		<link>http://www.cutawaysecurity.com/blog/archives/240</link>
		<comments>http://www.cutawaysecurity.com/blog/archives/240#comments</comments>
		<pubDate>Sun, 27 Apr 2008 06:55:14 +0000</pubDate>
		<dc:creator>cutaway</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[atlas]]></category>

		<guid isPermaLink="false">http://www.cutawaysecurity.com/blog/archives/240</guid>
		<description><![CDATA[I have moved on from C code to Assembly.  Certainly I broke down the C into Assembly earlier, but this time I wanted to write and compile from an Assembly file.  This proved more difficult than I expected.  This is not because doing so is hard, it is because of the differences [...]]]></description>
			<content:encoded><![CDATA[<p>I have moved on from C code to Assembly.  Certainly I broke down the C into Assembly earlier, but this time I wanted to write and compile from an Assembly file.  This proved more difficult than I expected.  This is not because doing so is hard, it is because of the differences between the INTEL and AT&amp;T syntaxs.  I didn&#8217;t realize that this was going to be a problem until I tried to use NASM to compile the hello.s file.  NASM expects INTEL syntax while GCC output a file in AT&amp;T syntax.  The following is an example of the error messages I received.</p>
<blockquote><p><font color="red">bt</font> <font color="blue">hello</font> # nasm -f elf hello.s<br />
hello.s:1: error: attempt to define a local label before any non-local labels<br />
hello.s:1: error: parser: instruction expected<br />
hello.s:2: error: attempt to define a local label before any non-local labels<br />
hello.s:2: error: parser: instruction expected<br />
hello.s:3: error: attempt to define a local label before any non-local labels<br />
hello.s:4: error: attempt to define a local label before any non-local labels<br />
hello.s:4: error: parser: instruction expected<br />
hello.s:5: error: attempt to define a local label before any non-local labels<br />
hello.s:6: error: attempt to define a local label before any non-local labels<br />
hello.s:6: error: parser: instruction expected<br />
hello.s:7: error: attempt to define a local label before any non-local labels<br />
hello.s:7: error: parser: instruction expected<br />
hello.s:9: error: parser: instruction expected<br />
hello.s:10: error: parser: instruction expected<br />
hello.s:11: error: parser: instruction expected<br />
hello.s:12: error: parser: instruction expected<br />
hello.s:13: error: symbol `movl&#8217; redefined<br />
hello.s:13: error: parser: instruction expected<br />
hello.s:14: error: parser: instruction expected<br />
hello.s:15: error: symbol `addl&#8217; redefined<br />
hello.s:15: error: parser: instruction expected<br />
hello.s:16: error: parser: instruction expected<br />
hello.s:17: error: parser: instruction expected<br />
hello.s:18: error: symbol `subl&#8217; redefined<br />
hello.s:18: error: parser: instruction expected<br />
hello.s:19: error: symbol `subl&#8217; redefined<br />
hello.s:19: error: parser: instruction expected<br />
hello.s:20: error: symbol `pushl&#8217; redefined<br />
hello.s:20: error: parser: instruction expected<br />
hello.s:22: error: symbol `addl&#8217; redefined<br />
hello.s:22: error: parser: instruction expected<br />
hello.s:23: error: symbol `movl&#8217; redefined<br />
hello.s:23: error: parser: instruction expected<br />
hello.s:26: error: parser: instruction expected<br />
hello.s:27: error: parser: instruction expected<br />
hello.s:28: error: parser: instruction expected<br />
<font color="red">bt</font> <font color="blue">hello</font> #</p></blockquote>
<p>It wasn&#8217;t after a lot of reading that I realized that the two syntaxes are completely different.  This explained why my attempts at correcting these errors did not work at all.  Of course, hunting for the problem lead me to some very useful resources.</p>
<ul>
<li> <a href="http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24592.pdf" target="_blank">AMD64 Architecture Programmer&#8217;s Manual Volume 1: Application Programming</a></li>
<li><a href="http://asm.sourceforge.net/articles/linasm.html" target="_blank">Using Assembly Language in Linux.</a></li>
<li><a href="http://members.save-net.com/jko@save-net.com/asm/h_code_tut.htm" target="_blank">Linux Assembly Tutorial: Step-by-Step Guide</a></li>
<li><a href="http://home.comcast.net/~fbkotler/nasmdoc0.html" target="_blank">The Netwide Assembler: NASM</a></li>
<li><a href="http://sig9.com/articles/att-syntax" target="_blank">AT&amp;T Assembly Syntax</a></li>
</ul>
<p>From these resources I determined there were three ways to compile and run the Hello World assembly code program.  For the AT&amp;T syntax a developer could use the GCC command or a combination of the AS and LD commands (yes, as I am working on Linux, case sensitivity does matter, but I am using caps for emphasis).  The INTEL syntax requires the use of NASM and LD.  The following output shows the compilation performed in each case.  Note the size of the executable generated by the GCC command (ouch!!).</p>
<blockquote><p><strong>NASM Command</strong></p>
<p><font color="red">bt</font> <font color="blue">nasm</font> # nasm -f elf hello.asm<br />
<font color="red">bt</font> <font color="blue">nasm</font> # ld -s -o hello_nasm.exe hello.o<br />
<font color="red">bt</font> <font color="blue">nasm</font> # ./hello_nasm.exe<br />
Hello World<br />
<font color="red">bt</font> <font color="blue">nasm</font> # ls -al<br />
total 20<br />
drwxr-xr-x 2 root root 4096 Apr 26 23:46 ./<br />
drwxr-xr-x 3 root root 4096 Apr 26 23:39 ../<br />
-rw-r&#8211;r&#8211; 1 root root  685 Apr 26 23:46 hello.asm<br />
-rw-r&#8211;r&#8211; 1 root root  720 Apr 26 23:46 hello.o<br />
-rwxr-xr-x 1 root root  <strong>536</strong> Apr 26 23:46 <strong>hello_nasm.exe*</strong><br />
<font color="red">bt</font> <font color="blue">nasm</font> #</p>
<p><strong>AS Command</strong></p>
<p><font color="red">bt</font> <font color="blue">as</font> # as -o hello_as.o hello_as.s<br />
<font color="red">bt</font> <font color="blue">as</font> # ld -s -o hello_hello_as.o<br />
<font color="red">bt</font> <font color="blue">as</font> # ./hello_as.exe<br />
Hello World</p>
<p><font color="red">bt</font> <font color="blue">as</font> # ls -al<br />
total 20<br />
drwxr-xr-x 2 root root 4096 Apr 27 00:00 ./<br />
drwxr-xr-x 4 root root 4096 Apr 26 23:55 ../<br />
-rwxr-xr-x 1 root root  <strong>444</strong> Apr 27 00:00 <strong>hello_as.exe*</strong>    <em><strong>&lt;-NOTE: Size Winner Is AS</strong></em><br />
-rw-r&#8211;r&#8211; 1 root root  620 Apr 27 00:00 hello_as.o<br />
-rw-r&#8211;r&#8211; 1 root root  770 Apr 27 00:00 hello_as.s<br />
<font color="red">bt</font> <font color="blue">as</font> #</p>
<p><strong>GCC Command</strong></p>
<p><font color="red">bt</font> <font color="blue">hello</font> # gcc -o hello.exe hello.s<br />
<font color="red">bt</font> <font color="blue">hello</font> # gcc -s -o hello_stripped.exe hello.s<br />
<font color="red">bt</font> <font color="blue">hello</font> # ls -al<br />
total 32<br />
drwxr-xr-x  4 root root 4096 Apr 27 00:48 ./<br />
drwxr-xr-x 12 root root 4096 Apr 23 20:19 ../<br />
drwxr-xr-x  2 root root 4096 Apr 27 00:00 as/<br />
-rwxr-xr-x  1 root root <strong>7932</strong> Apr 27 00:48 <strong>hello.exe*</strong><br />
-rw-r&#8211;r&#8211;  1 root root  766 Apr 26 22:59 hello.s<br />
-rwxr-xr-x  1 root root <strong>2808</strong> Apr 27 00:48 <strong>hello_stripped.exe*</strong>    <em><strong>&lt;-NOTE: Even stripped GCC is bigger</strong></em><br />
drwxr-xr-x  2 root root 4096 Apr 26 23:54 nasm/<br />
<font color="red">bt</font> <font color="blue">hello</font> # ./hello.exe<br />
Hello World</p>
<p><font color="red">bt</font> <font color="blue">hello</font> # ./hello_stripped.exe<br />
Hello World</p>
<p><font color="red">bt</font> <font color="blue">hello</font> #</p></blockquote>
<p>It is very easy to see that how you compile the assembly code leads directly to the size of the executable and, perhaps, the speed and stability as well.  Of course I cannot prove either of these theories, but I will take this guess because of the additional systems calls that go into the GCC version.</p>
<p>What I can do, in the meantime, is show you how these programs appear after they have been run through a disassembler.  The versions compiled via AS and NASM are amazingly similar.  The version compiled through GCC, however, is not even close.  It&#8217;s output really shows how the additional libraries play a roll in the overall size of this executable.  To disassemble these programs I will use the latest version of atlas&#8217; <a href="http://atlas.r4780y.com/resources/disass-3.0-080424.tgz" target="_blank">Disass-3.0</a>.  I&#8217;ll leave the download and installation of this tool up to you.</p>
<blockquote><p><strong>NASM</strong></p>
<p><font color="red">bt</font> <font color="blue">nasm</font> # disass-cli hello_nasm.exe<br />
VirtualMemory:init:section:  .text<br />
BEGIN Processing Sub: ELF Start, .text (8048080)   &#8230;..END Processing Sub: ELF Start, .text (8048080)<br />
disass v3.00 Enhanced Disassembler<br />
ELF HEADER OBJECT:hello_nasm.exe<br />
= Intimate Details:<br />
==Magic:                                ELF<br />
==Type:                                 Executable file<br />
==Machine Arch:                         Intel 80386<br />
==Version:                              1<br />
==Entry:                                0&#215;08048080<br />
==Program Headers(offset):              52 (0&#215;34) bytes<br />
==Section Headers(offset):              256 (0&#215;100) bytes<br />
==Flags:                                0L<br />
==Elf Header Size:                      52 (0&#215;34 bytes)<br />
==Program Header Size:                  32 (0&#215;20 bytes)<br />
==Program Header Count:                 2 (0&#215;2)<br />
==Section Header Size:                  40 (0&#215;28 bytes)<br />
==Section Header Count:                 7 (0&#215;7)<br />
==Section Header String Index           6 (0&#215;6 bytes)</p>
<p>= Sections:<br />
Elf Section: [                    ] VMA: 0&#215;00000000  offset:        0  ent/size:        0/       0  align:        0<br />
Elf Section: [               .text] VMA: 0&#215;08048080  offset:      128  ent/size:        0/      35  align:       16<br />
Elf Section: [            .got.plt] VMA: 0&#215;080490a4  offset:      176  ent/size:        0/       0  align:        1<br />
Elf Section: [               .data] VMA: 0&#215;080490a4  offset:      164  ent/size:        0/      12  align:        4<br />
Elf Section: [                .bss] VMA: 0&#215;080490b0  offset:      176  ent/size:        0/       0  align:        1<br />
Elf Section: [            .comment] VMA: 0&#215;00000000  offset:      176  ent/size:        0/      31  align:        1<br />
Elf Section: [           .shstrtab] VMA: 0&#215;00000000  offset:      207  ent/size:        0/      46  align:        1</p>
<p>= Program Headers:<br />
[           Loadable program segment] VMA: 0&#215;08048000  offset:        0  memsize:      163  align:     4096  (filesz:      163)  flags: 5<br />
[           Loadable program segment] VMA: 0&#215;080490a4  offset:      164  memsize:       12  align:     4096  (filesz:       12)  flags: 6<br />
Dynamics:</p>
<p>Virtual Memory: hello_nasm.exe,          start: 8048080,         flags: 0</p>
<p><strong>====== Section Header:       .text ======<br />
======  Starting Address:       0&#215;08048080      Length:         0&#215;0023<br />
======  File Offset:            0&#215;0080          Size in File:   0&#215;0023<br />
======  Size in Memory:         0&#215;0000<br />
==================</strong></p>
<p>Subroutine: ELF Start, .text (8048080)   9 lines         0&#215;23 bytes<br />
Starting address: 8048080               Ending address: 80480a2</p>
<p>;       ELF Start, .text<br />
<strong> 8048080:                   \xb8\x04\x00\x00\x00        mov           $0&#215;4, %eax<br />
8048085:                   \xbb\x01\x00\x00\x00        mov           $0&#215;1, %ebx<br />
804808a:                   \xb9\xa4\x90\x04\x08        mov           $0&#215;80490a4, %ecx             ;  .got.plt, .data, &#8216;Hello World<br />
&#8216; (.data)<br />
804808f:                   \xba\x0c\x00\x00\x00        mov           $0xc, %edx<br />
8048094:                               \xcd\x80        int           $0&#215;80<br />
8048096:                   \xb8\x01\x00\x00\x00        mov           $0&#215;1, %eax<br />
804809b:                   \xbb\x00\x00\x00\x00        mov           $0&#215;0, %ebx<br />
80480a0:                               \xcd\x80        int           $0&#215;80<br />
80480a2:                                   \xc3        ret</strong><br />
End Subroutine: ELF Start, .text (8048080)       9 lines         0&#215;23 bytes<br />
8048080: ELF Start, .text<br />
80490a4: .got.plt, .data, &#8216;Hello World<br />
&#8216; (.data)<br />
80490b0: .bss</p>
<p><font color="red">bt</font> <font color="blue">nasm</font> #</p>
<p><strong>AS</strong></p>
<p><font color="red">bt</font> <font color="blue">as</font> # disass-cli hello_as.exe<br />
VirtualMemory:init:section:  .text<br />
BEGIN Processing Sub: ELF Start, .text (8048074)   &#8230;..END Processing Sub: ELF Start, .text (8048074)<br />
disass v3.00 Enhanced Disassembler<br />
ELF HEADER OBJECT:hello_as.exe<br />
= Intimate Details:<br />
==Magic:                                ELF<br />
==Type:                                 Executable file<br />
==Machine Arch:                         Intel 80386<br />
==Version:                              1<br />
==Entry:                                0&#215;08048074<br />
==Program Headers(offset):              52 (0&#215;34) bytes<br />
==Section Headers(offset):              204 (0xcc) bytes<br />
==Flags:                                0L<br />
==Elf Header Size:                      52 (0&#215;34 bytes)<br />
==Program Header Size:                  32 (0&#215;20 bytes)<br />
==Program Header Count:                 2 (0&#215;2)<br />
==Section Header Size:                  40 (0&#215;28 bytes)<br />
==Section Header Count:                 6 (0&#215;6)<br />
==Section Header String Index           5 (0&#215;5 bytes)</p>
<p>= Sections:<br />
Elf Section: [                    ] VMA: 0&#215;00000000  offset:        0  ent/size:        0/       0  align:        0<br />
Elf Section: [               .text] VMA: 0&#215;08048074  offset:      116  ent/size:        0/      35  align:        4<br />
Elf Section: [            .got.plt] VMA: 0&#215;08049098  offset:      167  ent/size:        0/       0  align:        1<br />
Elf Section: [               .data] VMA: 0&#215;08049098  offset:      152  ent/size:        0/      15  align:        4<br />
Elf Section: [                .bss] VMA: 0&#215;080490a8  offset:      167  ent/size:        0/       0  align:        4<br />
Elf Section: [           .shstrtab] VMA: 0&#215;00000000  offset:      167  ent/size:        0/      37  align:        1</p>
<p>= Program Headers:<br />
[           Loadable program segment] VMA: 0&#215;08048000  offset:        0  memsize:      151  align:     4096  (filesz:      151)  flags: 5<br />
[           Loadable program segment] VMA: 0&#215;08049098  offset:      152  memsize:       16  align:     4096  (filesz:       15)  flags: 6<br />
Dynamics:</p>
<p>Virtual Memory: hello_as.exe,    start: 8048074,         flags: 0</p>
<p><strong>====== Section Header:       .text ======<br />
======  Starting Address:       0&#215;08048074      Length:         0&#215;0023<br />
======  File Offset:            0&#215;0074          Size in File:   0&#215;0023<br />
======  Size in Memory:         0&#215;0000<br />
==================</strong></p>
<p>Subroutine: ELF Start, .text (8048074)   9 lines         0&#215;23 bytes<br />
Starting address: 8048074               Ending address: 8048096</p>
<p>;       ELF Start, .text<br />
<strong> 8048074:                   \xb8\x04\x00\x00\x00        mov           $0&#215;4, %eax<br />
8048079:                   \xbb\x01\x00\x00\x00        mov           $0&#215;1, %ebx<br />
804807e:                   \xb9\x98\x90\x04\x08        mov           $0&#215;8049098, %ecx             ;  .got.plt, .data, &#8216;Hello World<br />
&#8216; (.data)<br />
8048083:                   \xba\xa5\x90\x04\x08        mov           $0&#215;80490a5, %edx             ;  &#8216;\x0c&#8217; (.data)<br />
8048088:                               \xcd\x80        int           $0&#215;80<br />
804808a:                   \xb8\x01\x00\x00\x00        mov           $0&#215;1, %eax<br />
804808f:                   \xbb\x00\x00\x00\x00        mov           $0&#215;0, %ebx<br />
8048094:                               \xcd\x80        int           $0&#215;80<br />
8048096:                                   \xc3        ret</strong><br />
End Subroutine: ELF Start, .text (8048074)       9 lines         0&#215;23 bytes<br />
8048074: ELF Start, .text<br />
8049098: .got.plt, .data, &#8216;Hello World<br />
&#8216; (.data)<br />
80490a5: &#8216;\x0c&#8217; (.data)<br />
80490a8: .bss</p>
<p><font color="red">bt</font> <font color="blue">as</font> #</p>
<p><strong>GCC</strong></p>
<p><font color="red">bt</font> hello # disass-cli hello.exe<br />
VirtualMemory:init:section:  .init<br />
BEGIN Processing Sub: .init, (), _init(), , _init (8048260)   &#8230;..END Processing Sub: .init, (), _init(), , _init (8048260)<br />
VirtualMemory:init:section:  .plt<br />
BEGIN Processing Sub: .plt, (),  (8048278)   &#8230;..END Processing Sub: .plt, (),  (8048278)<br />
BEGIN Processing Sub: __libc_start_main()  (PLT) (8048288)   &#8230;..END Processing Sub: __libc_start_main()  (PLT) (8048288)<br />
VirtualMemory:init:section:  .text<br />
BEGIN Processing Sub: ELF Start, .text, (), _start(), , _start (80482a0)   &#8230;..END Processing Sub: ELF Start, .text, (), _start(), , _start (80482a0)<br />
BEGIN Processing Sub: __libc_csu_fini(), __libc_csu_fini (8048400)   &#8230;..END Processing Sub: __libc_csu_fini(), __libc_csu_fini (8048400)<br />
BEGIN Processing Sub: __libc_csu_init(), __libc_csu_init (80483a0)   &#8230;..END Processing Sub: __libc_csu_init(), __libc_csu_init (80483a0)<br />
BEGIN Processing Sub: __do_global_ctors_aux(), __do_global_ctors_aux (8048450)   &#8230;..END Processing Sub: __do_global_ctors_aux(), __do_global_ctors_aux (8048450)<br />
BEGIN Processing Sub: frame_dummy(), frame_dummy (8048340)   &#8230;..END Processing Sub: frame_dummy(), frame_dummy (8048340)<br />
BEGIN Processing Sub: call_gmon_start(), call_gmon_start (80482d0)   &#8230;..END Processing Sub: call_gmon_start(), call_gmon_start (80482d0)<br />
BEGIN Processing Sub: __do_global_dtors_aux(), __do_global_dtors_aux (8048300)   &#8230;..END Processing Sub: __do_global_dtors_aux(), __do_global_dtors_aux (8048300)<br />
VirtualMemory:init:section:  .fini<br />
BEGIN Processing Sub: .fini, (), _fini(), , _fini (8048480)   &#8230;..END Processing Sub: .fini, (), _fini(), , _fini (8048480)<br />
disass v3.00 Enhanced Disassembler<br />
ELF HEADER OBJECT:hello.exe<br />
= Intimate Details:<br />
==Magic:                                ELF<br />
==Type:                                 Executable file<br />
==Machine Arch:                         Intel 80386<br />
==Version:                              1<br />
==Entry:                                0&#215;080482a0<br />
==Program Headers(offset):              52 (0&#215;34) bytes<br />
==Section Headers(offset):              3484 (0xd9c) bytes<br />
==Flags:                                0L<br />
==Elf Header Size:                      52 (0&#215;34 bytes)<br />
==Program Header Size:                  32 (0&#215;20 bytes)<br />
==Program Header Count:                 7 (0&#215;7)<br />
==Section Header Size:                  40 (0&#215;28 bytes)<br />
==Section Header Count:                 34 (0&#215;22)<br />
==Section Header String Index           31 (0&#215;1f bytes)</p>
<p>= Sections:<br />
Elf Section: [                    ] VMA: 0&#215;00000000  offset:        0  ent/size:        0/       0  align:        0<br />
Elf Section: [             .interp] VMA: 0&#215;08048114  offset:      276  ent/size:        0/      19  align:        1<br />
Elf Section: [       .note.ABI-tag] VMA: 0&#215;08048128  offset:      296  ent/size:        0/      32  align:        4<br />
Elf Section: [               .hash] VMA: 0&#215;08048148  offset:      328  ent/size:        4/      40  align:        4<br />
Elf Section: [             .dynsym] VMA: 0&#215;08048170  offset:      368  ent/size:       16/      80  align:        4<br />
Elf Section: [             .dynstr] VMA: 0&#215;080481c0  offset:      448  ent/size:        0/      89  align:        1<br />
Elf Section: [        .gnu.version] VMA: 0&#215;0804821a  offset:      538  ent/size:        2/      10  align:        2<br />
Elf Section: [      .gnu.version_r] VMA: 0&#215;08048224  offset:      548  ent/size:        0/      32  align:        4<br />
Elf Section: [            .rel.dyn] VMA: 0&#215;08048244  offset:      580  ent/size:        8/       8  align:        4<br />
Elf Section: [            .rel.plt] VMA: 0&#215;0804824c  offset:      588  ent/size:        8/       8  align:        4<br />
Elf Section: [               .init] VMA: 0&#215;08048260  offset:      608  ent/size:        0/      23  align:       16<br />
Elf Section: [                .plt] VMA: 0&#215;08048278  offset:      632  ent/size:        4/      32  align:        4<br />
Elf Section: [               .text] VMA: 0&#215;080482a0  offset:      672  ent/size:        0/     480  align:       16<br />
Elf Section: [               .fini] VMA: 0&#215;08048480  offset:     1152  ent/size:        0/      27  align:       16<br />
Elf Section: [             .rodata] VMA: 0&#215;0804849c  offset:     1180  ent/size:        0/       8  align:        4<br />
Elf Section: [           .eh_frame] VMA: 0&#215;080484a4  offset:     1188  ent/size:        0/       4  align:        4<br />
Elf Section: [              .ctors] VMA: 0&#215;080494a8  offset:     1192  ent/size:        0/       8  align:        4<br />
Elf Section: [              .dtors] VMA: 0&#215;080494b0  offset:     1200  ent/size:        0/       8  align:        4<br />
Elf Section: [                .jcr] VMA: 0&#215;080494b8  offset:     1208  ent/size:        0/       4  align:        4<br />
Elf Section: [            .dynamic] VMA: 0&#215;080494bc  offset:     1212  ent/size:        8/     200  align:        4<br />
Elf Section: [                .got] VMA: 0&#215;08049584  offset:     1412  ent/size:        4/       4  align:        4<br />
Elf Section: [            .got.plt] VMA: 0&#215;08049588  offset:     1416  ent/size:        4/      16  align:        4<br />
Elf Section: [               .data] VMA: 0&#215;08049598  offset:     1432  ent/size:        0/      28  align:        4<br />
Elf Section: [                .bss] VMA: 0&#215;080495b4  offset:     1460  ent/size:        0/       4  align:        4<br />
Elf Section: [            .comment] VMA: 0&#215;00000000  offset:     1460  ent/size:        0/     108  align:        1<br />
Elf Section: [      .debug_aranges] VMA: 0&#215;00000000  offset:     1568  ent/size:        0/     136  align:        8<br />
Elf Section: [     .debug_pubnames] VMA: 0&#215;00000000  offset:     1704  ent/size:        0/      37  align:        1<br />
Elf Section: [         .debug_info] VMA: 0&#215;00000000  offset:     1741  ent/size:        0/     642  align:        1<br />
Elf Section: [       .debug_abbrev] VMA: 0&#215;00000000  offset:     2383  ent/size:        0/     118  align:        1<br />
Elf Section: [         .debug_line] VMA: 0&#215;00000000  offset:     2501  ent/size:        0/     511  align:        1<br />
Elf Section: [          .debug_str] VMA: 0&#215;00000000  offset:     3012  ent/size:        1/     174  align:        1<br />
Elf Section: [           .shstrtab] VMA: 0&#215;00000000  offset:     3186  ent/size:        0/     295  align:        1<br />
Elf Section: [             .symtab] VMA: 0&#215;00000000  offset:     4844  ent/size:       16/    1984  align:        4<br />
Elf Section: [             .strtab] VMA: 0&#215;00000000  offset:     6828  ent/size:        0/    1104  align:        1</p>
<p>= Program Headers:<br />
[      Entry for header table itself] VMA: 0&#215;08048034  offset:       52  memsize:      224  align:        4  (filesz:      224)  flags: 5<br />
[                Program interpreter] VMA: 0&#215;08048114  offset:      276  memsize:       19  align:        1  (filesz:       19)  flags: 4<br />
[           Loadable program segment] VMA: 0&#215;08048000  offset:        0  memsize:     1192  align:     4096  (filesz:     1192)  flags: 5<br />
[           Loadable program segment] VMA: 0&#215;080494a8  offset:     1192  memsize:      272  align:     4096  (filesz:      268)  flags: 6<br />
[        Dynamic linking information] VMA: 0&#215;080494bc  offset:     1212  memsize:      200  align:        4  (filesz:      200)  flags: 6<br />
[              Auxiliary information] VMA: 0&#215;08048128  offset:      296  memsize:       32  align:        4  (filesz:       32)  flags: 4<br />
[      Indicates stack executability] VMA: 0&#215;00000000  offset:        0  memsize:        0  align:        4  (filesz:        0)  flags: 7<br />
Dynamics:<br />
libc.so.6 Name of needed library<br />
0&#215;8048260L Address of init function<br />
0&#215;8048480L Address of termination function<br />
0&#215;8048148L Address of symbol hash table<br />
0&#215;80481C0L Address of string table<br />
0&#215;8048170L Address of symbol table<br />
0&#215;59L Size of string table<br />
0&#215;10L Size of one symbol table entry<br />
0&#215;0L For debugging; unspecified<br />
0&#215;8049588L Processor defined value<br />
0&#215;8L Size in bytes of PLT relocs<br />
0&#215;11L Type of reloc in PLT<br />
0&#215;804824CL Address of PLT relocs<br />
0&#215;8048244L Address of Rel relocs<br />
0&#215;8L Total size of Rel relocs<br />
0&#215;8L Size of one Rel reloc<br />
0&#215;8048224L Unknown: 0&#215;6FFFFFFEL<br />
0&#215;1L Unknown: 0&#215;6FFFFFFFL<br />
0&#215;804821AL Unknown: 0&#215;6FFFFFF0L<br />
0&#215;0L Marks end of dynamic section</p>
<p>Virtual Memory: hello.exe,       start: 80482a0,         flags: 0</p>
<p>====== Section Header:       .init ======<br />
======  Starting Address:       0&#215;08048260      Length:         0&#215;0017<br />
======  File Offset:            0&#215;0260          Size in File:   0&#215;0017<br />
======  Size in Memory:         0&#215;0000<br />
==================</p>
<p>Subroutine: .init, (), _init(), , _init (8048260)        8 lines         0&#215;17 bytes<br />
Starting address: 8048260               Ending address: 8048276</p>
<p>;       .init, (), _init(), , _init<br />
Called from: __libc_csu_init(), __libc_csu_init (80483a0)   at 80483b6<br />
8048260:                                   \x55        push          %ebp<br />
8048261:                               \x89\xe5        mov           %esp, %ebp<br />
8048263:                           \x83\xec\x08        sub           $0&#215;8, %esp<br />
8048266:                   \xe8\x65\x00\x00\x00        call          0&#215;80482d0                         ;  call_gmon_start(), call_gmon_start<br />
804826b:                   \xe8\xd0\x00\x00\x00        call          0&#215;8048340                         ;  frame_dummy(), frame_dummy<br />
8048270:                   \xe8\xdb\x01\x00\x00        call          0&#215;8048450                         ;  __do_global_ctors_aux(), __do_global_ctors_aux<br />
8048275:                                   \xc9        leave<br />
8048276:                                   \xc3        ret<br />
End Subroutine: .init, (), _init(), , _init (8048260)    8 lines         0&#215;17 bytes</p>
<p>====== Section Header:       .plt ======<br />
======  Starting Address:       0&#215;08048278      Length:         0&#215;0020<br />
======  File Offset:            0&#215;0278          Size in File:   0&#215;0020<br />
======  Size in Memory:         0&#215;0004<br />
==================</p>
<p>Subroutine: .plt, (),  (8048278)         4 lines         0&#215;10 bytes</p>
<p>;       .plt, (),<br />
JMPed from: __libc_start_main()  (PLT) (8048288)   at 8048293<br />
8048278:               \xff\x35\x8c\x95\x04\x08        pushl         0&#215;804958c                         ;  &#8216;\x00\x00\x00\x00\x00&#8242;&#8230; (.got.plt+0&#215;4)<br />
804827e:               \xff\x25\x90\x95\x04\x08        jmpl          *0&#215;8049590                        ;  &#8216;\x00\x00\x00\x00\x8e\x82\x04\x08&#8242;&#8230; (.got.plt+0&#215;8)<br />
8048284:                               \x00\x00        add           %al, (%eax)<br />
8048286:                               \x00\x00        add           %al, (%eax)<br />
End Subroutine: .plt, (),  (8048278)     4 lines         0&#215;10 bytes</p>
<p>Subroutine: __libc_start_main()  (PLT) (8048288)         3 lines         0&#215;10 bytes</p>
<p>;       __libc_start_main()  (PLT)<br />
Called from: ELF Start, .text, (), _start(), , _start (80482a0)   at 80482bc<br />
8048288:               \xff\x25\x94\x95\x04\x08        jmpl          *0&#215;8049594                        ;  __libc_start_main()<br />
804828e:                   \x68\x00\x00\x00\x00        push          $0&#215;0<br />
8048293:                   \xe9\xe0\xff\xff\xff        jmp           0&#215;8048278                         ; jmp .plt, (),  (8048278)  :-1b:<br />
End Subroutine: __libc_start_main()  (PLT) (8048288)     3 lines         0&#215;10 bytes</p>
<p><strong>====== Section Header:       .text ======<br />
======  Starting Address:       0&#215;080482a0      Length:         0&#215;01e0<br />
======  File Offset:            0&#215;02a0          Size in File:   0&#215;01e0<br />
======  Size in Memory:         0&#215;0000<br />
==================</strong></p>
<p>Subroutine: ELF Start, .text, (), _start(), , _start (80482a0)   28 lines        0&#215;30 bytes<br />
Starting address: 80482a0               Ending address: 80482cf</p>
<p>;       ELF Start, .text, (), _start(), , _start<br />
<strong> 80482a0:                               \x31\xed        xor           %ebp, %ebp<br />
80482a2:                                   \x5e        pop           %esi<br />
80482a3:                               \x89\xe1        mov           %esp, %ecx<br />
80482a5:                           \x83\xe4\xf0        and           $0xf0, %esp<br />
80482a8:                                   \x50        push          %eax<br />
80482a9:                                   \x54        push          %esp<br />
80482aa:                                   \x52        push          %edx<br />
80482ab:                   \x68\x00\x84\x04\x08        push          $0&#215;8048400                        ; push __libc_csu_fini(), __libc_csu_fini (8048400)  :+155:<br />
80482b0:                   \x68\xa0\x83\x04\x08        push          $0&#215;80483a0                        ; push __libc_csu_init(), __libc_csu_init (80483a0)  :+f0:<br />
80482b5:                                   \x51        push          %ecx<br />
80482b6:                                   \x56        push          %esi<br />
80482b7:                   \x68\x74\x83\x04\x08        push          $0&#215;8048374                        ; push frame_dummy(), frame_dummy (8048340) (+0&#215;34)  :+bd:<br />
80482bc:                   \xe8\xc7\xff\xff\xff        call          0&#215;8048288                         ; call __libc_start_main()  (PLT) (8048288)  :-34:<br />
80482c1:                                   \xf4        hlt</strong><br />
80482c2:                                   \x90        nop<br />
80482c3:                                   \x90        nop<br />
80482c4:                                   \x90        nop<br />
80482c5:                                   \x90        nop<br />
80482c6:                                   \x90        nop<br />
80482c7:                                   \x90        nop<br />
80482c8:                                   \x90        nop<br />
80482c9:                                   \x90        nop<br />
80482ca:                                   \x90        nop<br />
80482cb:                                   \x90        nop<br />
80482cc:                                   \x90        nop<br />
80482cd:                                   \x90        nop<br />
80482ce:                                   \x90        nop<br />
80482cf:                                   \x90        nop<br />
End Subroutine: ELF Start, .text, (), _start(), , _start (80482a0)       28 lines        0&#215;30 bytes</p>
<p>Subroutine: call_gmon_start(), call_gmon_start (80482d0)         26 lines        0&#215;30 bytes<br />
Starting address: 80482d0               Ending address: 80482ff</p>
<p>;       call_gmon_start(), call_gmon_start<br />
80482d0:                                   \x55        push          %ebp<br />
80482d1:                               \x89\xe5        mov           %esp, %ebp<br />
80482d3:                                   \x53        push          %ebx<br />
80482d4:                           \x83\xec\x04        sub           $0&#215;4, %esp<br />
80482d7:                   \xe8\x16\x00\x00\x00        call          0&#215;80482f2                         ; call (local)  :+1b:<br />
80482dc:               \x81\xc3\xac\x12\x00\x00        add           $0&#215;12ac, %ebx<br />
80482e2:               \x8b\x83\xfc\xff\xff\xff        mov           0xfffffffc(%ebx), %eax<br />
80482e8:                               \x85\xc0        test          %eax, %eax<br />
80482ea:                               \x74\x02        jz            0&#215;80482ee                         ; jz  (local)  :+4:<br />
80482ec:                               \xff\xd0        call          *%eax</p>
<p>Referenced by: (local)   at 80482ea<br />
80482ee:                                   \x58        pop           %eax<br />
80482ef:                                   \x5b        pop           %ebx<br />
80482f0:                                   \x5d        pop           %ebp<br />
80482f1:                                   \xc3        ret</p>
<p>;       __i686.get_pc_thunk.bx(), __i686.get_pc_thunk.bx<br />
Called from: __libc_csu_fini(), __libc_csu_fini (8048400)   at 8048409<br />
Called from: __libc_csu_init(), __libc_csu_init (80483a0)   at 80483ab<br />
Called from: (local)   at 80482d7<br />
Called from: .fini, (), _fini(), , _fini (8048480)   at 8048487<br />
80482f2:                           \x8b\x1c\x24        mov           (%esp), %ebx<br />
80482f5:                                   \xc3        ret<br />
80482f6:                                   \x90        nop<br />
80482f7:                                   \x90        nop<br />
80482f8:                                   \x90        nop<br />
80482f9:                                   \x90        nop<br />
80482fa:                                   \x90        nop<br />
80482fb:                                   \x90        nop<br />
80482fc:                                   \x90        nop<br />
80482fd:                                   \x90        nop<br />
80482fe:                                   \x90        nop<br />
80482ff:                                   \x90        nop<br />
End Subroutine: call_gmon_start(), call_gmon_start (80482d0)     26 lines        0&#215;30 bytes</p>
<p>Subroutine: __do_global_dtors_aux(), __do_global_dtors_aux (8048300)     31 lines        0&#215;40 bytes<br />
Starting address: 8048300               Ending address: 804833f</p>
<p>;       __do_global_dtors_aux(), __do_global_dtors_aux<br />
Called from: .fini, (), _fini(), , _fini (8048480)   at 8048492<br />
8048300:                                   \x55        push          %ebp<br />
8048301:                               \x89\xe5        mov           %esp, %ebp<br />
8048303:                           \x83\xec\x08        sub           $0&#215;8, %esp<br />
8048306:           \x80\x3d\xb4\x95\x04\x08\x00        cmpb          $0&#215;0, 0&#215;80495b4                   ;  .bss, (), completed.1(), __bss_start(), _edata(), , completed.1, __bss_start, _edata<br />
804830d:                               \x74\x1b        jz            0&#215;804832a                         ; jz  (local)  :+1d:<br />
804830f:                               \xeb\x2b        jmp           0&#215;804833c                         ; jmp (local)  :+2d:<br />
8048311:                               \xeb\x0d        jmp           0&#215;8048320                         ; jmp (local)  :+f:<br />
8048313:                                   \x90        nop<br />
8048314:                                   \x90        nop<br />
8048315:                                   \x90        nop<br />
8048316:                                   \x90        nop<br />
8048317:                                   \x90        nop<br />
8048318:                                   \x90        nop<br />
8048319:                                   \x90        nop<br />
804831a:                                   \x90        nop<br />
804831b:                                   \x90        nop<br />
804831c:                                   \x90        nop<br />
804831d:                                   \x90        nop<br />
804831e:                                   \x90        nop<br />
804831f:                                   \x90        nop</p>
<p>Referenced by: (local)   at 8048333<br />
JMPed from: (local)   at 8048311<br />
8048320:                           \x83\xc0\x04        add           $0&#215;4, %eax<br />
8048323:                   \xa3\xa0\x95\x04\x08        mov           %eax, 0&#215;80495a0<br />
8048328:                               \xff\xd2        call          *%edx</p>
<p>Referenced by: (local)   at 804830d<br />
804832a:                   \xa1\xa0\x95\x04\x08        mov           0&#215;80495a0, %eax<br />
804832f:                               \x8b\x10        mov           (%eax), %edx<br />
8048331:                               \x85\xd2        test          %edx, %edx<br />
8048333:                               \x75\xeb        jnz           0&#215;8048320                         ; jnz (local)  :-13:<br />
8048335:           \xc6\x05\xb4\x95\x04\x08\x01        movb          $0&#215;1, 0&#215;80495b4                   ;  .bss, (), completed.1(), __bss_start(), _edata(), , completed.1, __bss_start, _edata</p>
<p>JMPed from: (local)   at 804830f<br />
804833c:                                   \xc9        leave<br />
804833d:                                   \xc3        ret<br />
804833e:                               \x89\xf6        mov           %esi, %esi<br />
End Subroutine: __do_global_dtors_aux(), __do_global_dtors_aux (8048300)         31 lines        0&#215;40 bytes</p>
<p>Subroutine: frame_dummy(), frame_dummy (8048340)         37 lines        0&#215;60 bytes<br />
Starting address: 8048340               Ending address: 804839f</p>
<p>;       frame_dummy(), frame_dummy<br />
8048340:                                   \x55        push          %ebp<br />
8048341:                               \x89\xe5        mov           %esp, %ebp<br />
8048343:                           \x83\xec\x08        sub           $0&#215;8, %esp<br />
8048346:                   \xa1\xb8\x94\x04\x08        mov           0&#215;80494b8, %eax<br />
804834b:                               \x85\xc0        test          %eax, %eax<br />
804834d:                               \x74\x21        jz            0&#215;8048370                         ; jz  (local)  :+23:<br />
804834f:                   \xb8\x00\x00\x00\x00        mov           $0&#215;0, %eax<br />
8048354:                               \x85\xc0        test          %eax, %eax<br />
8048356:                               \x74\x18        jz            0&#215;8048370                         ; jz  (local)  :+1a:<br />
8048358:                           \x83\xec\x0c        sub           $0xc, %esp<br />
804835b:                   \x68\xb8\x94\x04\x08        push          $0&#215;80494b8                        ;  .jcr, (), __JCR_LIST__(), __JCR_END__(), , __JCR_LIST__, __JCR_END__<br />
8048360:                   \xe8\x9b\x7c\xfb\xf7        call          0&#215;0<br />
8048365:                           \x83\xc4\x10        add           $0&#215;10, %esp<br />
8048368:                                   \x90        nop<br />
8048369:           \x8d\xb4\x26\x00\x00\x00\x00        lea           0&#215;0(%esi), %esi</p>
<p>Referenced by: (local)   at 804834d<br />
Referenced by: (local)   at 8048356<br />
8048370:                                   \xc9        leave<br />
8048371:                                   \xc3        ret<br />
8048372:                                   \x90        nop<br />
8048373:                                   \x90        nop</p>
<p>;       main(), main<br />
Referenced by: ELF Start, .text, (), _start(), , _start (80482a0)   at 80482b7<br />
8048374:                   \xb8\x04\x00\x00\x00        mov           $0&#215;4, %eax<br />
8048379:                   \xbb\x01\x00\x00\x00        mov           $0&#215;1, %ebx<br />
804837e:                   \xb9\xa4\x95\x04\x08        mov           $0&#215;80495a4, %ecx                  ;  hello(), hello<br />
8048383:                   \xba\xb1\x95\x04\x08        mov           $0&#215;80495b1, %edx                  ;  &#8216;\x0c&#8217; (.data) , hlen(), hlen<br />
8048388:                               \xcd\x80        int           $0&#215;80<br />
804838a:                   \xb8\x01\x00\x00\x00        mov           $0&#215;1, %eax<br />
804838f:                   \xbb\x00\x00\x00\x00        mov           $0&#215;0, %ebx<br />
8048394:                               \xcd\x80        int           $0&#215;80<br />
8048396:                                   \xc3        ret<br />
8048397:                                   \x90        nop<br />
8048398:                                   \x90        nop<br />
8048399:                                   \x90        nop<br />
804839a:                                   \x90        nop<br />
804839b:                                   \x90        nop<br />
804839c:                                   \x90        nop<br />
804839d:                                   \x90        nop<br />
804839e:                                   \x90        nop<br />
804839f:                                   \x90        nop<br />
End Subroutine: frame_dummy(), frame_dummy (8048340)     37 lines        0&#215;60 bytes</p>
<p>Subroutine: __libc_csu_init(), __libc_csu_init (80483a0)         35 lines        0&#215;60 bytes<br />
Variables:<br />
fffffff0 (   10) _____________________________________________________<br />
Starting address: 80483a0               Ending address: 80483ff</p>
<p>;       __libc_csu_init(), __libc_csu_init<br />
Referenced by: ELF Start, .text, (), _start(), , _start (80482a0)   at 80482b0<br />
80483a0:                                   \x55        push          %ebp<br />
80483a1:                               \x89\xe5        mov           %esp, %ebp<br />
80483a3:                                   \x57        push          %edi<br />
80483a4:                                   \x56        push          %esi<br />
80483a5:                               \x31\xf6        xor           %esi, %esi<br />
80483a7:                                   \x53        push          %ebx<br />
80483a8:                           \x83\xec\x0c        sub           $0xc, %esp<br />
80483ab:                   \xe8\x42\xff\xff\xff        call          0&#215;80482f2                         ; call call_gmon_start(), call_gmon_start (80482d0) (+0&#215;22)  :-b9:<br />
80483b0:               \x81\xc3\xd8\x11\x00\x00        add           $0&#215;11d8, %ebx<br />
80483b6:                   \xe8\xa5\xfe\xff\xff        call          0&#215;8048260                         ; call .init, (), _init(), , _init (8048260)  :-156:<br />
80483bb:               \x8d\x83\x20\xff\xff\xff        lea           0xffffff20(%ebx), %eax<br />
80483c1:               \x8d\x93\x20\xff\xff\xff        lea           0xffffff20(%ebx), %edx<br />
80483c7:                           \x89\x45\xf0        mov           %eax, 0xfffffff0(%ebp)<br />
80483ca:                               \x29\xd0        sub           %edx, %eax<br />
80483cc:                           \xc1\xf8\x02        sar           $0&#215;2, %eax<br />
80483cf:                               \x39\xc6        cmp           %eax, %esi<br />
80483d1:                               \x73\x1f        jnc           0&#215;80483f2                         ; jnc (local)  :+21:<br />
80483d3:                               \x89\xd7        mov           %edx, %edi<br />
80483d5:                       \x8d\x74\x26\x00        lea           0&#215;0(%esi), %esi<br />
80483d9:           \x8d\xbc\x27\x00\x00\x00\x00        lea           0&#215;0(%edi), %edi</p>
<p>Referenced by: (local)   at 80483f0<br />
80483e0:                           \xff\x14\xb2        calll         *(%edx, %esi, 4)<br />
80483e3:                           \x8b\x4d\xf0        mov           0xfffffff0(%ebp), %ecx<br />
80483e6:                                   \x46        inc           %esi<br />
80483e7:                               \x89\xfa        mov           %edi, %edx<br />
80483e9:                               \x29\xf9        sub           %edi, %ecx<br />
80483eb:                           \xc1\xf9\x02        sar           $0&#215;2, %ecx<br />
80483ee:                               \x39\xce        cmp           %ecx, %esi<br />
80483f0:                               \x72\xee        jc            0&#215;80483e0                         ; jc  (local)  :-10:</p>
<p>Referenced by: (local)   at 80483d1<br />
80483f2:                           \x83\xc4\x0c        add           $0xc, %esp<br />
80483f5:                                   \x5b        pop           %ebx<br />
80483f6:                                   \x5e        pop           %esi<br />
80483f7:                                   \x5f        pop           %edi<br />
80483f8:                                   \x5d        pop           %ebp<br />
80483f9:                                   \xc3        ret<br />
80483fa:               \x8d\xb6\x00\x00\x00\x00        lea           0&#215;0(%esi), %esi<br />
End Subroutine: __libc_csu_init(), __libc_csu_init (80483a0)     35 lines        0&#215;60 bytes</p>
<p>Subroutine: __libc_csu_fini(), __libc_csu_fini (8048400)         30 lines        0&#215;50 bytes<br />
Variables:<br />
fffffffc (    4) _____________________________________________________<br />
fffffff8 (    4) _____________________________________________________<br />
fffffff4 (    4) _____________________________________________________<br />
Starting address: 8048400               Ending address: 804844f</p>
<p>;       __libc_csu_fini(), __libc_csu_fini<br />
Referenced by: ELF Start, .text, (), _start(), , _start (80482a0)   at 80482ab<br />
8048400:                                   \x55        push          %ebp<br />
8048401:                               \x89\xe5        mov           %esp, %ebp<br />
8048403:                           \x83\xec\x18        sub           $0&#215;18, %esp<br />
8048406:                           \x89\x5d\xf4        mov           %ebx, 0xfffffff4(%ebp)<br />
8048409:                   \xe8\xe4\xfe\xff\xff        call          0&#215;80482f2                         ; call call_gmon_start(), call_gmon_start (80482d0) (+0&#215;22)  :-117:<br />
804840e:               \x81\xc3\x7a\x11\x00\x00        add           $0&#215;117a, %ebx<br />
8048414:                           \x89\x7d\xfc        mov           %edi, 0xfffffffc(%ebp)<br />
8048417:               \x8d\x83\x20\xff\xff\xff        lea           0xffffff20(%ebx), %eax<br />
804841d:               \x8d\xbb\x20\xff\xff\xff        lea           0xffffff20(%ebx), %edi<br />
8048423:                           \x89\x75\xf8        mov           %esi, 0xfffffff8(%ebp)<br />
8048426:                               \x29\xf8        sub           %edi, %eax<br />
8048428:                           \xc1\xf8\x02        sar           $0&#215;2, %eax<br />
804842b:                           \x8d\x70\xff        lea           0xffffffff(%eax), %esi<br />
804842e:                               \xeb\x04        jmp           0&#215;8048434                         ; jmp (local)  :+6:</p>
<p>Referenced by: (local)   at 8048437<br />
8048430:                           \xff\x14\xb7        calll         *(%edi, %esi, 4)<br />
8048433:                                   \x4e        dec           %esi</p>
<p>JMPed from: (local)   at 804842e<br />
8048434:                           \x83\xfe\xff        cmp           $0xffffffff, %esi<br />
8048437:                               \x75\xf7        jnz           0&#215;8048430                         ; jnz (local)  :-7:<br />
8048439:                   \xe8\x42\x00\x00\x00        call          0&#215;8048480                         ;  .fini, (), _fini(), , _fini<br />
804843e:                           \x8b\x5d\xf4        mov           0xfffffff4(%ebp), %ebx<br />
8048441:                           \x8b\x75\xf8        mov           0xfffffff8(%ebp), %esi<br />
8048444:                           \x8b\x7d\xfc        mov           0xfffffffc(%ebp), %edi<br />
8048447:                               \x89\xec        mov           %ebp, %esp<br />
8048449:                                   \x5d        pop           %ebp<br />
804844a:                                   \xc3        ret<br />
804844b:                                   \x90        nop<br />
804844c:                                   \x90        nop<br />
804844d:                                   \x90        nop<br />
804844e:                                   \x90        nop<br />
804844f:                                   \x90        nop<br />
End Subroutine: __libc_csu_fini(), __libc_csu_fini (8048400)     30 lines        0&#215;50 bytes</p>
<p>Subroutine: __do_global_ctors_aux(), __do_global_ctors_aux (8048450)     30 lines        0&#215;30 bytes<br />
Starting address: 8048450               Ending address: 804847f</p>
<p>;       __do_global_ctors_aux(), __do_global_ctors_aux<br />
8048450:                                   \x55        push          %ebp<br />
8048451:                               \x89\xe5        mov           %esp, %ebp<br />
8048453:                                   \x53        push          %ebx<br />
8048454:                                   \x52        push          %edx<br />
8048455:                   \xbb\xa8\x94\x04\x08        mov           $0&#215;80494a8, %ebx                  ;  .ctors, &#8216;\xff\xff\xff\xff&#8217; (.ctors) , (), __CTOR_LIST__(), __fini_array_end(), __fini_array_start(), __init_array_end(), __init_array_start(), , __CTOR_LIST__, __fini_array_end, __fini_array_start, __init_array_end, __init_array_start<br />
804845a:                   \xa1\xa8\x94\x04\x08        mov           0&#215;80494a8, %eax<br />
804845f:                               \xeb\x16        jmp           0&#215;8048477                         ; jmp (local)  :+18:<br />
8048461:                               \xeb\x0d        jmp           0&#215;8048470                         ; jmp (local)  :+f:<br />
8048463:                                   \x90        nop<br />
8048464:                                   \x90        nop<br />
8048465:                                   \x90        nop<br />
8048466:                                   \x90        nop<br />
8048467:                                   \x90        nop<br />
8048468:                                   \x90        nop<br />
8048469:                                   \x90        nop<br />
804846a:                                   \x90        nop<br />
804846b:                                   \x90        nop<br />
804846c:                                   \x90        nop<br />
804846d:                                   \x90        nop<br />
804846e:                                   \x90        nop<br />
804846f:                                   \x90        nop</p>
<p>Referenced by: (local)   at 804847a<br />
JMPed from: (local)   at 8048461<br />
8048470:                           \x83\xeb\x04        sub           $0&#215;4, %ebx<br />
8048473:                               \xff\xd0        call          *%eax<br />
8048475:                               \x8b\x03        mov           (%ebx), %eax</p>
<p>JMPed from: (local)   at 804845f<br />
8048477:                           \x83\xf8\xff        cmp           $0xffffffff, %eax<br />
804847a:                               \x75\xf4        jnz           0&#215;8048470                         ; jnz (local)  :-a:<br />
804847c:                                   \x58        pop           %eax<br />
804847d:                                   \x5b        pop           %ebx<br />
804847e:                                   \x5d        pop           %ebp<br />
804847f:                                   \xc3        ret<br />
End Subroutine: __do_global_ctors_aux(), __do_global_ctors_aux (8048450)         30 lines        0&#215;30 bytes</p>
<p>====== Section Header:       .fini ======<br />
======  Starting Address:       0&#215;08048480      Length:         0&#215;001b<br />
======  File Offset:            0&#215;0480          Size in File:   0&#215;001b<br />
======  Size in Memory:         0&#215;0000<br />
==================</p>
<p>Subroutine: .fini, (), _fini(), , _fini (8048480)        11 lines        0&#215;1b bytes<br />
Starting address: 8048480               Ending address: 804849a</p>
<p>;       .fini, (), _fini(), , _fini<br />
8048480:                                   \x55        push          %ebp<br />
8048481:                               \x89\xe5        mov           %esp, %ebp<br />
8048483:                                   \x53        push          %ebx<br />
8048484:                           \x83\xec\x04        sub           $0&#215;4, %esp<br />
8048487:                   \xe8\x66\xfe\xff\xff        call          0&#215;80482f2                         ; call call_gmon_start(), call_gmon_start (80482d0) (+0&#215;22)  :-195:<br />
804848c:               \x81\xc3\xfc\x10\x00\x00        add           $0&#215;10fc, %ebx<br />
8048492:                   \xe8\x69\xfe\xff\xff        call          0&#215;8048300                         ; call __do_global_dtors_aux(), __do_global_dtors_aux (8048300)  :-192:<br />
8048497:                                   \x5a        pop           %edx<br />
8048498:                                   \x5b        pop           %ebx<br />
8048499:                                   \x5d        pop           %ebp<br />
804849a:                                   \xc3        ret<br />
End Subroutine: .fini, (), _fini(), , _fini (8048480)    11 lines        0&#215;1b bytes<br />
0: (), (), (), (), (), (), (), (), (), (), (), <command>(), ./../include/libc-symbols.h(), ./../include/libc-symbols.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/config.h(), ./../include/libc-symbols.h(), <command>(), <built-in>(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/csu//(), abi-note.S(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/abi-tag.h(), abi-note.S(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/config.h(), abi-note.S(), <command>(), ./../include/libc-symbols.h(), ./../include/libc-symbols.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/config.h(), ./../include/libc-symbols.h(), <command>(), <built-in>(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/csu//(), abi-note.S(), init.c(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crti.S(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/defs.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/defs.h(), initfini.c(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crti.S(), <command>(), ./../include/libc-symbols.h(), ./../include/libc-symbols.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/config.h(), ./../include/libc-symbols.h(), <command>(), <built-in>(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crti.S(), crtstuff.c(), crtstuff.c(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crtn.S(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/defs.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/defs.h(), initfini.c(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crtn.S(), <command>(), ./../include/libc-symbols.h(), ./../include/libc-symbols.h(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/config.h(), ./../include/libc-symbols.h(), <command>(), <built-in>(), /glibc-tmp-91a3c13f482c0e54fcb31801829d957b/glibc-2.3.6/build-glibc-2.3.6/csu/crtn.S(), __libc_start_main@@GLIBC_2.0(), _Jv_RegisterClasses(), __gmon_start__(), (), __libc_start_main(), _Jv_RegisterClasses(), __gmon_start__()<br />
8048114: .interp, &#8216;/lib/ld-linux.so.2&#8242; (.interp) , (),<br />
8048128: .note.ABI-tag, &#8216;\x04&#8242; (.note.ABI-tag) , (),<br />
804812c: &#8216;\x10&#8242; (.note.ABI-tag)<br />
8048130: &#8216;\x01&#8242; (.note.ABI-tag)<br />
8048134: &#8216;GNU&#8217; (.note.ABI-tag)<br />
804813c: &#8216;\x02&#8242; (.note.ABI-tag)<br />
8048140: &#8216;\x04&#8242; (.note.ABI-tag)<br />
8048144: &#8216;\x01&#8242; (.note.ABI-tag)<br />
8048148: .hash, &#8216;\x03&#8242; (.hash) , (),<br />
804814c: &#8216;\x05&#8242; (.hash)<br />
8048150: &#8216;\x04&#8242; (.hash)<br />
8048154: &#8216;\x01&#8242; (.hash)<br />
8048158: &#8216;\x02&#8242; (.hash)<br />
804816c: &#8216;\x03&#8242; (.hash)<br />
8048170: .dynsym, (),<br />
8048180: &#8216;=&#8217; (.dynsym)<br />
8048188: &#8216;\xde&#8217; (.dynsym)<br />
804818c: &#8216;\x12&#8242; (.dynsym)<br />
8048190: &#8216;.&#8217; (.dynsym)<br />
8048194: &#8216;\xa0\x84\x04\x08\x04&#8242; (.dynsym)<br />
804819c: &#8216;\x11&#8242; (.dynsym)<br />
804819e: &#8216;\x0e&#8217; (.dynsym)<br />
80481a0: &#8216;\x01&#8242; (.dynsym)<br />
80481ac: &#8216; &#8216; (.dynsym)<br />
80481b0: &#8216;\x15&#8242; (.dynsym)<br />
80481bc: &#8216; &#8216; (.dynsym)<br />
80481c0: .dynstr, (),<br />
80481c1: &#8216;_Jv_RegisterClasses&#8217; (.dynstr)<br />
80481d5: &#8216;__gmon_start__&#8217; (.dynstr)<br />
80481e4: &#8216;libc.so.6&#8242; (.dynstr)<br />
80481ee: &#8216;_IO_stdin_used&#8217; (.dynstr)<br />
80481fd: &#8216;__libc_start_main&#8217; (.dynstr)<br />
804820f: &#8216;GLIBC_2.0&#8242; (.dynstr)<br />
804821a: .gnu.version, (),<br />
804821c: &#8216;\x02&#8242; (.gnu.version)<br />
804821e: &#8216;\x01&#8242; (.gnu.version)<br />
8048224: .gnu.version_r, &#8216;\x01&#8242; (.gnu.version_r) , (),<br />
8048226: &#8216;\x01&#8242; (.gnu.version_r)<br />
8048228: &#8216;$&#8217; (.gnu.version_r)<br />
804822c: &#8216;\x10&#8242; (.gnu.version_r)<br />
&#8216; (.gnu.version_r)<br />
804823a: &#8216;\x02&#8242; (.gnu.version_r)<br />
804823c: &#8216;O&#8217; (.gnu.version_r)<br />
8048244: .rel.dyn, &#8216;\x84\x95\x04\x08\x06\x04&#8242; (.rel.dyn) , (),<br />
804824c: .rel.plt, &#8216;\x94\x95\x04\x08\x07\x01&#8242; (.rel.plt) , (),<br />
8048260: .init, (), _init(), , _init<br />
8048278: .plt, (),<br />
8048288: __libc_start_main()  (PLT)<br />
80482a0: ELF Start, .text, (), _start(), , _start<br />
80482d0: call_gmon_start(), call_gmon_start<br />
80482f2: __i686.get_pc_thunk.bx(), __i686.get_pc_thunk.bx<br />
8048300: __do_global_dtors_aux(), __do_global_dtors_aux<br />
8048340: frame_dummy(), frame_dummy<br />
8048374: main(), main<br />
80483a0: __libc_csu_init(), __libc_csu_init<br />
8048400: __libc_csu_fini(), __libc_csu_fini<br />
8048450: __do_global_ctors_aux(), __do_global_ctors_aux<br />
8048480: .fini, (), _fini(), , _fini<br />
804849c: .rodata, &#8216;\x03&#8242; (.rodata) , (), _fp_hw(), , _fp_hw<br />
80484a0: &#8216;\x01&#8242; (.rodata) , _IO_stdin_used(), _IO_stdin_used(), _IO_stdin_used<br />
80484a2: &#8216;\x02&#8242; (.rodata)<br />
80484a4: .eh_frame, (), __FRAME_END__(), , __FRAME_END__<br />
80494a8: .ctors, &#8216;\xff\xff\xff\xff&#8217; (.ctors) , (), __CTOR_LIST__(), __fini_array_end(), __fini_array_start(), __init_array_end(), __init_array_start(), , __CTOR_LIST__, __fini_array_end, __fini_array_start, __init_array_end, __init_array_start<br />
80494ac: __CTOR_END__(), __CTOR_END__<br />
80494b0: .dtors, &#8216;\xff\xff\xff\xff&#8217; (.dtors) , (), __DTOR_LIST__(), , __DTOR_LIST__<br />
80494b4: __DTOR_END__(), __DTOR_END__<br />
80494b8: .jcr, (), __JCR_LIST__(), __JCR_END__(), , __JCR_LIST__, __JCR_END__<br />
80494bc: .dynamic, &#8216;\x01&#8242; (.dynamic) , (), _DYNAMIC(), , _DYNAMIC<br />
80494c0: &#8216;$&#8217; (.dynamic)<br />
80494c4: &#8216;\x0c&#8217; (.dynamic)<br />
80494c8: &#8216;\x60\x82\x04\x08\x0d&#8217; (.dynamic)<br />
80494d0: &#8216;\x80\x84\x04\x08\x04&#8242; (.dynamic)<br />
80494d8: &#8216;\x48\x81\x04\x08\x05&#8242; (.dynamic)<br />
80494e0: &#8216;\xc0\x81\x04\x08\x06&#8242; (.dynamic)<br />
80494e8: &#8216;\x70\x81\x04\x08\x0a&#8217; (.dynamic)<br />
80494f0: &#8216;Y&#8217; (.dynamic)<br />
80494f4: &#8216;\x0b&#8217; (.dynamic)<br />
80494f8: &#8216;\x10&#8242; (.dynamic)<br />
80494fc: &#8216;\x15&#8242; (.dynamic)<br />
8049504: &#8216;\x03&#8242; (.dynamic)<br />
8049508: &#8216;\x88\x95\x04\x08\x02&#8242; (.dynamic)<br />
8049510: &#8216;\x08&#8242; (.dynamic)<br />
8049514: &#8216;\x14&#8242; (.dynamic)<br />
8049518: &#8216;\x11&#8242; (.dynamic)<br />
804951c: &#8216;\x17&#8242; (.dynamic)<br />
8049520: &#8216;\x4c\x82\x04\x08\x11&#8242; (.dynamic)<br />
8049528: &#8216;\x44\x82\x04\x08\x12&#8242; (.dynamic)<br />
8049530: &#8216;\x08&#8242; (.dynamic)<br />
8049534: &#8216;\x13&#8242; (.dynamic)<br />
8049538: &#8216;\x08&#8242; (.dynamic)<br />
804953c: &#8216;\xfe\xff\xff\x6f\x24\x82\x04\x08\xff\xff\xff\x6f\x01&#8242; (.dynamic)<br />
804954c: &#8216;\xf0\xff\xff\x6f\x1a\x82\x04\x08&#8242; (.dynamic)<br />
8049584: .got, __gmon_start__(), (),<br />
8049588: .got.plt, (), _GLOBAL_OFFSET_TABLE_(), , _GLOBAL_OFFSET_TABLE_<br />
804958c: &#8216;\x00\x00\x00\x00\x00&#8242;&#8230; (.got.plt+0&#215;4)<br />
8049590: &#8216;\x00\x00\x00\x00\x8e\x82\x04\x08&#8242;&#8230; (.got.plt+0&#215;8)<br />
8049594: __libc_start_main()<br />
8049598: .data, (), data_start(), __data_start(), , data_start, __data_start<br />
804959c: __dso_handle(), __dso_handle<br />
80495a0: &#8216;Hello World<br />
&#8216; (.data) , p.0(), p.0<br />
80495a4: hello(), hello<br />
80495b1: &#8216;\x0c&#8217; (.data) , hlen(), hlen<br />
80495b4: .bss, (), completed.1(), __bss_start(), _edata(), , completed.1, __bss_start, _edata<br />
80495b5: &#8216;GCC&#8217; (.bss)<br />
80495b8: _end(), _end</built-in></command></command></built-in></command></command></built-in></command></command></built-in></command></command></p>
<p><font color="red">bt</font> <font color="blue">hello #</font></p></blockquote>
<p>Dang, the GCC output is so big and convoluted, I couldn&#8217;t keep up with it.</p>
<p>Now that we have seen the output of these files, you are probably asking yourself, &#8220;Why are disassemblers important?&#8221; Well, they analyze the executable for us so that we do not have to open the file in a hex editor and then begin decrypting the system calls and opcodes.  It also provides us with the locations of various interesting instructions and data within the virtual memory.  I am certain that <a href="http://atlas.r4780y.com/cgi-bin/atlas" target="_blank">atlas</a> has programmed in more features that I have not implemented here and I&#8217;m willing to place a bet that he has something very interesting in the works for future versions of <a href="http://atlas.r4780y.com/resources/disass-3.0-080424.tgz" target="_blank">Disass-3</a>.  For now we are just going to have to wait.</p>
<p>Of course I know that none of this is very exciting.  Just so you know, I did try to think of something that would liven it up a little bit.  Alas, it did not happen.  But at least I did learn a thing or two about Assembly.  Hopefully you did as well.</p>
<p>Go forth and do good things,</p>
<p>Don C. Weber</p>
<span class="ttag"><img src="http://www.cutawaysecurity.com/blog/wp-content/plugins/technobubble.gif" alt="Technorati Tags" /> <a href="http://www.technorati.com/tag/assembly" rel="tag">assembly</a>, <a href="http://www.technorati.com/tag/programming" rel="tag">programming</a>, <a href="http://www.technorati.com/tag/gcc" rel="tag">gcc</a>, <a href="http://www.technorati.com/tag/c" rel="tag">c</a>, <a href="http://www.technorati.com/tag/nasm" rel="tag">nasm</a>, <a href="http://www.technorati.com/tag/ld" rel="tag">ld</a>, <a href="http://www.technorati.com/tag/Disass-3.0" rel="tag">Disass-3.0</a>, <a href="http://www.technorati.com/tag/Security+Ripcord" rel="tag">Security Ripcord</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.cutawaysecurity.com/blog/archives/240/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>atlas &#8211; an Email Interview</title>
		<link>http://www.cutawaysecurity.com/blog/archives/229</link>
		<comments>http://www.cutawaysecurity.com/blog/archives/229#comments</comments>
		<pubDate>Wed, 26 Mar 2008 04:06:36 +0000</pubDate>
		<dc:creator>cutaway</dc:creator>
				<category><![CDATA[CISecurity]]></category>
		<category><![CDATA[DefCon]]></category>
		<category><![CDATA[Exploits]]></category>
		<category><![CDATA[InGuardians]]></category>
		<category><![CDATA[Interviews]]></category>
		<category><![CDATA[atlas]]></category>

		<guid isPermaLink="false">http://www.cutawaysecurity.com/blog/archives/229</guid>
		<description><![CDATA[Although I have never met atlas personally, I was originally made aware of him at RSA 2007 while speaking with Ed Skoudis.  I was talking to Ed about my interest in the DefCon CTF and he mentioned that his company InGuardians was working with altas on several projects because, among other reasons, of his [...]]]></description>
			<content:encoded><![CDATA[<p>Although I have never met <a href="http://www.flickr.com/photos/veruus/1043907281/in/set-72157601280791450/" title="atlas speaks" target="_blank"><em>atlas</em></a> personally, I was originally made aware of him at RSA 2007 while speaking with <a href="http://www.intelguardians.com/info.html" title="Ed Skoudis Bio" target="_blank">Ed Skoudis</a>.  I was talking to Ed about my interest in the DefCon CTF and he mentioned that his company <a href="http://www.intelguardians.com" title="InGuardians" target="_blank">InGuardians</a> was working with <em>altas</em> on several projects because, among other reasons, of his outstanding performances at DefCon.  The next time I heard about <em>atlas</em> was during last year&#8217;s <a href="http://nopsr.us/ctf2007/overview.html" title="DefCon CTF 2007 Overview" target="_blank">DefCon CTF 2007</a> when <em>invisigoth</em> mention how impressed he was with <em>altas&#8217;</em> leadership qualities during the intense competition as he lead his team, <a href="http://nopsr.us/ctf2007/" title="DefCon CTF 2007" target="_blank"><em>l@stplace</em></a>, to a second, consecutive, victory.  All of this peeked my interested and I was very keen on getting an interview to augment my post on last years DefCon CTF, <a href="http://www.cutawaysecurity.com/blog/archives/176" title="DefCon 15 CTF - WarGamez" target="_blank">DefCon 15 CTF &#8211; WarGamez</a>, but time quickly passed and I went ahead with the post without the interview as I was not aware at the time of <em>altas</em>&#8216; blog, <a href="http://atlas.r4780y.com/cgi-bin/atlas" title="-atlas wandering-" target="_blank">atlas wandering</a>.  After the post I mentioned my disappointment to my good friend Lara and she said, &#8220;Oh, he&#8217;s a great guy.  I&#8217;ll drop him a note tomorrow.&#8221;  For those of you who know Lara, she always comes through.</p>
<p>Sure enough <em>altas</em> emailed me several days later.  We quickly agreed to an interview but because of constant battles with SPAM filtering, multiple projects on both sides, and several <a href="http://atlas.r4780y.com/myimages/VulnCatcher-slides.pdf" title="Vulncatcher at POC" target="_blank">conference</a> <a href="http://www.shmoocon.org/speakers.html" title="Vulncatcher: Fun with VTRACE and Programmatic Debugging" target="_blank">presentations</a> by <em>atlas</em>, we just did not get it completed until a few days ago.   During one of the emails I asked <em>atlas</em> to mention some of the things that he was working on to help me write some pointed questions directed towards his interests.  He mentioned a few:</p>
<blockquote><p>I have been doing some fun stuff with 16-bit real mode, kernel module play in<br />
Linux, BIOS hacking, and of course disassembly and programmatic debugging.</p></blockquote>
<p>My first thought was &#8220;Uh, oh.&#8221;  Sure, I have heard of all of this but if you followed my failings with writing exploits for a <a href="http://www.cutawaysecurity.com/blog/archives/136" title="Testing Shellcode For Functionality" target="_blank">simple</a> <a href="http://www.cutawaysecurity.com/blog/archives/134" title="More Exploit Writing Failures" target="_blank">buffer</a> <a href="http://www.cutawaysecurity.com/blog/archives/131" title="Exploiting Programs - Pointers and Problems" target="_blank">overflow</a> you know that I am not going to be able to dig very deeply into these topics.   I did some quick research on the topics.  Then I reviewed his latest posts on his toolkit, <a href="http://atlas.r4780y.com/resources/atlasutils-2.2.5.tgz" title="atlasutils 2.2.25" target="_blank">atlasutils</a> and reviewed his presentation on <a href="http://atlas.r4780y.com/myimages/VulnCatcher-paper.pdf" title="Vulncatcher Whitepaper" target="_blank">Vulncatcher</a>.  I started to get a little frustrated.  After all, I did not want to waste the excellent opportunity just because I do not have a grasp of the integrate details of complex software and hardware relationships.  Ahhh, bingo.  I hit the nail on the head.  Looking over everything that I can find on <em>altas</em> I realized that he has one of those special eyes for detail.  He can see the integrate relationships within complex systems and understand how to research them.  Or, at least, he understands it enough to try and manipulate the relationship.  Hacking at its finest, its very core.  Excellent.  I might not be able to delve deeply into his research, but I can at least find out his opinions on this complexity.</p>
<p>First, a little Bio on <em>altas</em> stolen from his <a href="http://www.shmoocon.org/speakers.html" title="Look for it" target="_blank">ShmooCon 2008 introduction</a>.</p>
<blockquote><p>atlas is an average joe who spends his time learning new ways to make computer systems dance. When he&#8217;s not slicing and dicing windows and unix binaries, he&#8217;s writing tools to make vulnerability research simpler and more enjoyable. His hobbies include deadlisting (opcode disassembly), vulnerability research, and lately he&#8217;s been working on processor emulation and kernel-mode internals. atlas leads the capture-the-flag team, 1@stplace, who recently won back-to-back victories at defcon, which he blames on his teammates. &#8220;I surround myself with brilliant people,&#8221; he quips.</p></blockquote>
<p>So, without further ado, <em>atlas</em>.</p>
<hr align="center" color="#ff0000" size="2" width="80%" />
<blockquote><p><strong> DefCon CTF</strong></p>
<p><strong>1.  You have lead your team to two straight victories in the DefCon CTF. </strong><br />
<strong> Has this part of your life run its course or is it still challenging enough</strong><br />
<strong> to give it another run?</strong></p>
<p>Wow&#8230; it&#8217;s still challenging!  Each year we have been extremely challenged by<br />
amazing talent.  There is still immense question of how well we will place<br />
this year, with the outstanding talent the Naval Postgrad School puts forth<br />
each year, Vigna&#8217;s team has provided some serious domination in the past, we<br />
have several international teams which are doing very well, and other talent<br />
not yet &#8220;displayed&#8221; at defcon.  We have to go in each year focused on doing<br />
our best, regardless of who and what challenges we face.  How many more years<br />
I have left to give is another question.  It&#8217;s a very consuming weekend, and<br />
quals weekend, even though we don&#8217;t currently have to qualify, is challenging<br />
as well.</p>
<p><strong>2.  Your team is obviously very skilled but the types of personalities I</strong><br />
<strong> imagine that are involved are use to individual performance and behavior.</strong><br />
<strong> Was it a challenge to lead them and keep them focused on goals that</strong><br />
<strong> benefitted the group as a whole?  I.E. tracking down a problem that might</strong><br />
<strong> be too difficult for the competition or not worth the effort.</strong></p>
<p>If I&#8217;ve done anything really well in CTF it is selecting amazing people.  They<br />
have always been an honor to lead, and have actually helped me lead them in<br />
more ways than I can count.</p>
<p><strong>3.  Have you or your team members seen benefits develop from the amount of</strong><br />
<strong> time and effort you have placed in getting ready for DefCon CTF?</strong></p>
<p>Oh totally.  A few of my guys, myself included, have changed career paths<br />
based largely on how well they&#8217;ve proven themselves at ctf.  I can&#8217;t speak<br />
for the others, but I&#8217;m quite happy with the results.  I think we&#8217;ve all seen<br />
improvements in our daily tasks and our abilities to achieve our goals.<br />
We&#8217;ve built strong friendships within the team which has been very good.<br />
Management also responds well to our wins, as they are more likely to think<br />
we know what the heck we&#8217;re talking about.</p>
<p><strong>4.  Are you personally going to give it another run?  Will l@stplace return</strong><br />
<strong> as the same team or will you select different members to keep the blood</strong><br />
<strong> fresh and challenge high?</strong></p>
<p>We&#8217;ll return the same team we left.  I&#8217;ve been fortunate to find such amazing<br />
guys, hand-selected them based on their talent, skill and personality, and<br />
formed lasting friendships that transcend defcon.  I&#8217;m confident from our<br />
talks offline that we will all be returning this year, Lord willing.</p>
<p><strong>5.  Do you believe that there are real world teams, criminal or govenment,</strong><br />
<strong> performing detailed and near real-time application analysis to penetrate</strong><br />
<strong> businesses and government systems, much in the same manner that the teams</strong><br />
<strong> in the last DefCon CTF were doing?</strong></p>
<p>Certainly.  Absolutely.  No Comment.</p>
<p><strong>Program Research and Exploit Writing</strong></p>
<p><strong>6.  What was your background before you started really moving into program</strong><br />
<strong> and architecture research?</strong></p>
<p>I had been a coder since I was young, but got a career in sys-admin work, then<br />
moved into data-telecom where I was responsible for many security-related<br />
services, then got drafted into security.</p>
<p><strong>7.  To me some of the concepts are difficult to grasp and implement when</strong><br />
<strong> there are resources.  What did you do to help you get over the hump and</strong><br />
<strong> begin to fully understand the intricacies of low level programming and</strong><br />
<strong> analysis?</strong></p>
<p>Gave up.  Then I redoubled back.  I was freaked out at the possibility I&#8217;d<br />
fail.  So I decided that I couldn&#8217;t do it.  Once I had finished freaking out<br />
I decided to work it and grow.  Some people could and were doing this stuff,<br />
what&#8217;s the cost of throwing myself into the learning curve and seeing where<br />
it lead?</p>
<p><strong>8.  Your toolset, atlasutils, is a combination of python programs and</strong><br />
<strong> script that include a disassembler and other tools that help located and</strong><br />
<strong> provide information to exploit vulnerabilities.  I have noticed that Dave</strong><br />
<strong> Aitel likes to talk about writing his own debuggers as well.  Is this</strong><br />
<strong> because the tools that are out there are not useful, you have different</strong><br />
<strong> ideas that did not go into the usual debugger, or that you just need</strong><br />
<strong> something to help fit a specific niche?  Or, it is just fun to write your</strong><br />
<strong> down debugger? <img src='http://www.cutawaysecurity.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>To quote a very good friend of mine, I write code because I&#8217;m lazy.  <img src='http://www.cutawaysecurity.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Truth<br />
is, using others&#8217; tools is tiring, since I have to learn to think like<br />
them&#8230;  Writing my own forces to me to learn how to think about the things<br />
I&#8217;m trying to do, then write tools that help me next time I have to do them.<br />
I hope people find my tools useful, but they&#8217;re really for my benefit.  I<br />
often write my own tools because I&#8217;m forced to learn the details better&#8230;<br />
and then I can add my own whizbang fun new stuff on from there.  For<br />
instance, I&#8217;m rewriting disass, because there was an upper-limit in binary<br />
size, above which it simply took forever to process because of inefficient<br />
use of memory.  It was also very &#8220;dogmatic&#8221;, and not agile.  Some code I want<br />
to disassemble is packed/encrypted and wrapped with an unpacker/decryptor.<br />
That means the data/code actually changes post-loading.  Disassemblers have<br />
to account for that, which means they have to be &#8220;agile&#8221;, or able to adjust<br />
how they view the memory setup of a binary.  I&#8217;m also working parts of the<br />
remake of disass into an emulator (no, not complete emulation) which will<br />
allow me to better address certain laborious tasks.</p>
<p><strong>9.  When you are developing these tools, how do you pick a program to</strong><br />
<strong> analyze? Do you generate your own vulnerable code or find something with</strong><br />
<strong> known vulnerabilities to analyze?</strong></p>
<p>When developing tools I try to use them on anything I want to analyze, just to<br />
see them break (and wow they break).  Sometimes it&#8217;s code I&#8217;ve snagged from<br />
ctf, sometimes it&#8217;s my own code, sometimes it&#8217;s POSIX code or Win32 code, or<br />
&lt;insert-your-fav-commercial-app&gt; code.</p>
<p><strong>10.  As I look at the types of research you are performing I start to</strong><br />
<strong> wonder if computers are just too complex.  Or if the higher level</strong><br />
<strong> programming languages that we have just cannot securely support all of the</strong><br />
<strong> low level functionality.  Then I start thinking about the interactions and</strong><br />
<strong> complexity added by software and hardware interaction, BIOS, and firmware</strong><br />
<strong> and my head really starts to spin.  What are your thoughts on this</strong><br />
<strong> complexity and how it is affecting the security of technology as a whole?</strong></p>
<p>Well, you&#8217;ve really nailed it.  Computers have become very complex indeed&#8230;<br />
and continue to do so.  In many layers of &#8220;synthesis&#8221; the computer industry<br />
has striven to group low-level functions into simple-to-use functionality;<br />
for the developers and ultimately the end users.<br />
Each iteration of simplification masks many details from the users/developers,<br />
and with the disappearance of those details comes many assumptions.<br />
Assumptions are inevitable in our industry because you can&#8217;t teach *every*<br />
administrator and developer *every* detail about the computer.  Some in the<br />
security field have attained a great deal of understanding those details&#8230;<br />
and we tend to hail them as deities.<br />
False assumptions and the state of mind induced by details-overload work<br />
together to provide vulnerabilities for attackers to leverage.  Sometimes<br />
those vulnerabilities highlight a loss of communication, laziness, lack of<br />
understanding, or simply mistakes.</p>
<p>This dilemma is not going away.  We continue to see layered-development and a<br />
push for ease-of-use at every level.  Ease-of-use tends to be directly<br />
counter to security, in that we enable users and developers to do mighty<br />
things without realizing the truth of what they are doing.  For example,<br />
without proper education and focus on security, thousands of SQL-Servers were<br />
put on the Internet with a blank SA password (the default).</p>
<p>Security must become a baked-in part of the development culture.  Developers<br />
need to be screened for how seriously they take security, and continually<br />
trained and updated on new security problems, such as format-string bugs and<br />
buffer overflows in the 90s.  When the next new common programming flaw is<br />
identified, those mistakes must be put in front of developers to warn them<br />
and instruct what the computer is actually doing, or how attackers are<br />
leveraging the flaws to do evil things.  Each development team needs to have<br />
someone who understands how to think like an evil d00d.  I venture to say<br />
that every developer should become that person.</p>
<p>This complexity provides plenty of playground for attackers, but hackers are<br />
rising to the occasion, finding enjoyment in understanding systems better<br />
sometimes than their creators.  We insert stop-gap protections like ASLR and<br />
anti-corruption techniques and hackers find ways around them.  Worse than the<br />
time lost in the creation and adoption of those protections is the<br />
complacency they allow developers, who wrongfully think they are protected.<br />
With all the complexity of just learning someone else&#8217;s API and interacting<br />
with third-party products, as well as designing corporate-wide API&#8217;s that<br />
hundreds of developers may use, they are happy to think on the good sides to<br />
such protections, without being able to understand the details or<br />
limitations.  Even if they have the base-knowledge to understand, they simply<br />
are seldom given the time.</p>
<p><strong>11.  With this complexity, how can developers fix it?  I mean, programmers</strong><br />
<strong> just do not have the time and resources to think of every little piece of</strong><br />
<strong> the puzzle.  We cannot expect them to.  So, how do developers protect their</strong><br />
<strong> projects?  Do we just need to realize that we are in a constant state of</strong><br />
<strong> possible exploitation and accept that very expensive systems will get</strong><br />
<strong> exploited and we better have a good incident response team?</strong></p>
<p>See above&#8230; Good incident handling teams are invaluable for an organization.<br />
Teams who understand proactive security and the patching process are equally<br />
important.  Consider them &#8220;stoppers&#8221; and &#8220;sweepers&#8221; if you like futbol.</p>
<p>In the end, the ball is the developer&#8217;s court.  Each person who writes code<br />
needs to learn the details of what they are doing, and accept responsibility<br />
for the security of their work.  If format-string bugs seem impossible to<br />
exploit, that developer needs training (SANS SEC504 is generally very good<br />
for that).  If XSS doesn&#8217;t seem to be a big deal, training is necessary.<br />
Aside from great training, that SANS course will likely provide networking<br />
opportunities with people who think evil all day every day.  BlackHat and<br />
defcon are also good venues, but likely less substantive.  We need to stop<br />
training our developers only about how to enable things&#8230; because that only<br />
enables exploits.</p>
<p><strong>12.  Along the lines of complexity, most of the technologies that are put</strong><br />
<strong> out there, operating systems and applications, automatically have these</strong><br />
<strong> complexities built into them as features.  The Center of Internet Security</strong><br />
<strong> has long benchmarks to help guide administrators through steps that help</strong><br />
<strong> them limit their exposure to some of these complexities, but with each new</strong><br />
<strong> release of a product the administrator has to be worried about what is new</strong><br />
<strong> or what was modified that exposes the environment to additional risk.  What</strong><br />
<strong> recommendations can you make to these administrators as they are taking</strong><br />
<strong> these complexities into consideration?</strong></p>
<p>Good luck?  The truth is that CIS spits out some outstanding documents to help<br />
us get a certain level of security with the least outlay of effort.  It&#8217;s a<br />
bang-for-your-buck arrangement.  Unfortunately no benchmark or security guide<br />
is going to take the place of a solid understanding of the technologies one<br />
is using.  Best case, CIS guides serve as a litmus test and a guide to<br />
someone who already has a great understanding and the curiosity to know their<br />
playground well.  Someone who knows enough to know how much they don&#8217;t know<br />
so they welcome the help, but someone who plays with their tech and groks<br />
it&#8230; because they want to.  This is the part where I get to piss a lot of<br />
people off&#8230; if you don&#8217;t love security or IT or IS&#8230; get out.  There are<br />
many professions where you may be happier and more successful.  Computers<br />
have become the next &#8220;Doctor&#8221; or &#8220;Lawyer&#8221; profession, where people flood<br />
Computer college programs in hopes of a mighty paycheck.  Those people<br />
everyone views as gods in this industry are people who would tinker anyway,<br />
even if they were janitors during the day.  And if you *do* tinker and wind<br />
up in the industry&#8230; get yourself some security understanding.  Learn to<br />
think as your opponent&#8230; think about how someone who hates your guts and<br />
your programs would mess with them.  Get the training, from an organization<br />
or a friend if you cannot afford formalized training.<br />
And remember, patching is a vital, ongoing process organization-wide.</p>
<p>@</p></blockquote>
<hr align="center" color="#ff0000" size="2" width="80%" /> Of course you have to love any question that ends in &#8220;No Comment.&#8221;  The Mission Impossible music always seems to kick in at those moments.<br />
I hope all of you enjoyed this as much I as did.  Thank you to <em>altas</em> for being so patient and generous with his time.<br />
Of course, thank you to Lara who always pulls through for me and my family.</p>
<p>Go forth and do good things,<br />Don C. Weber</p>
<span class="ttag"><img src="http://www.cutawaysecurity.com/blog/wp-content/plugins/technobubble.gif" alt="Technorati Tags" /> <a href="http://www.technorati.com/tag/atlas" rel="tag">atlas</a>, <a href="http://www.technorati.com/tag/exploits" rel="tag">exploits</a>, <a href="http://www.technorati.com/tag/vulnerabilities" rel="tag">vulnerabilities</a>, <a href="http://www.technorati.com/tag/defcon" rel="tag">defcon</a>, <a href="http://www.technorati.com/tag/ctf" rel="tag">ctf</a>, <a href="http://www.technorati.com/tag/atlasutils" rel="tag">atlasutils</a>, <a href="http://www.technorati.com/tag/vulncatcher" rel="tag">vulncatcher</a>, <a href="http://www.technorati.com/tag/InGuardians" rel="tag">InGuardians</a>, <a href="http://www.technorati.com/tag/skoudis" rel="tag">skoudis</a>, <a href="http://www.technorati.com/tag/Security+Ripcord" rel="tag">Security Ripcord</a>, <a href="http://www.technorati.com/tag/atlas+wandering" rel="tag">atlas wandering</a>, <a href="http://www.technorati.com/tag/l@astplace" rel="tag">l@astplace</a></span>]]></content:encoded>
			<wfw:commentRss>http://www.cutawaysecurity.com/blog/archives/229/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
