<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comentarios en: HackIt Nivel 10: reverse engineering</title>
	<atom:link href="http://diariolinux.com/2008/05/15/hackit-nivel-10-reverse-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://diariolinux.com/2008/05/15/hackit-nivel-10-reverse-engineering/</link>
	<description>Software Libre y Open Source cada día</description>
	<lastBuildDate>Fri, 18 May 2012 18:16:24 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Por: Anom</title>
		<link>http://diariolinux.com/2008/05/15/hackit-nivel-10-reverse-engineering/comment-page-1/#comment-3454</link>
		<dc:creator>Anom</dc:creator>
		<pubDate>Thu, 15 May 2008 23:53:41 +0000</pubDate>
		<guid isPermaLink="false">http://diariolinux.com/?p=478#comment-3454</guid>
		<description>Usando objdump se puede saber la dirección de entrada del código:

$ objdump -x go

Se obtiene la dirección de entrada 0x08048f50 (que coindice con la que a Xabier LIDA le da como error)

Ahora se puede establecer en el gdb el primer punto de ruptura en esa dirección:
(gdb) break *0x08048f50</description>
		<content:encoded><![CDATA[<p>Usando objdump se puede saber la dirección de entrada del código:</p>
<p>$ objdump -x go</p>
<p>Se obtiene la dirección de entrada 0x08048f50 (que coindice con la que a Xabier LIDA le da como error)</p>
<p>Ahora se puede establecer en el gdb el primer punto de ruptura en esa dirección:<br />
(gdb) break *0x08048f50</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: xavier Sala</title>
		<link>http://diariolinux.com/2008/05/15/hackit-nivel-10-reverse-engineering/comment-page-1/#comment-3453</link>
		<dc:creator>xavier Sala</dc:creator>
		<pubDate>Thu, 15 May 2008 20:59:51 +0000</pubDate>
		<guid isPermaLink="false">http://diariolinux.com/?p=478#comment-3453</guid>
		<description>Este es otro en el que me he encallado. (con lo fácil que es el nivel 11!). 

LIDA da el error:  ERROR: 08048F50 not found in address range!

He conseguido depurar con ald y rastrearlo pero por ahora sin demasiado éxito 

No sé, quizás habría que abordarlo de otra forma ...</description>
		<content:encoded><![CDATA[<p>Este es otro en el que me he encallado. (con lo fácil que es el nivel 11!). </p>
<p>LIDA da el error:  ERROR: 08048F50 not found in address range!</p>
<p>He conseguido depurar con ald y rastrearlo pero por ahora sin demasiado éxito </p>
<p>No sé, quizás habría que abordarlo de otra forma &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: jong</title>
		<link>http://diariolinux.com/2008/05/15/hackit-nivel-10-reverse-engineering/comment-page-1/#comment-3449</link>
		<dc:creator>jong</dc:creator>
		<pubDate>Thu, 15 May 2008 17:38:07 +0000</pubDate>
		<guid isPermaLink="false">http://diariolinux.com/?p=478#comment-3449</guid>
		<description>Hmm, no es mucha ayuda pero, con un vistazo rapido usando strace, vemos que intenta leer del archivo &quot;license.txt&quot; del mismo directorio:

brk(0)                                  = 0x977a000
brk(0x979b000)                          = 0x979b000
open(&quot;license.txt&quot;, O_RDONLY)           = 3
fstat64(3, {st_mode=S_IFREG&#124;0664, st_size=22, ...}) = 0
mmap2(NULL, 4096, PROT_READ&#124;PROT_WRITE, MAP_PRIVATE&#124;MAP_ANONYMOUS, -1, 0) = 0xb8

Ademas de eso si usamos el comando &quot;strings&quot; podemos mirar los strings en cleartext del ejecutable, entre los resultados curiosos tenemos este output:

error: wrong license number
error: license file not found!
error closing license file!
license.txt
p@Pong
pong
Failed to open display

Asi pues, escribiendo &#039;p@Pong&#039; y &#039;pong&#039; en el archivo license, el ejecutable hace un read() mas que la anterior ocasion en el output de strace:

mmap2(NULL, 4096, PROT_READ&#124;PROT_WRITE, MAP_PRIVATE&#124;MAP_ANONYMOUS, -1, 0) = 0xb8015000
read(3, &quot;p@Pong\npong\n&quot;, 4096)         = 12
read(3, &quot;&quot;, 4096)                       = 0
fstat64(1, {st_mode=S_IFCHR&#124;0620, st_rdev=makedev(136, 1), ...}) = 0

Esto a lo mejor sirve de pista a alguien, si consigo algo mas de tiempo, se puede probar a desensamblar en IDA o algo.</description>
		<content:encoded><![CDATA[<p>Hmm, no es mucha ayuda pero, con un vistazo rapido usando strace, vemos que intenta leer del archivo &#8220;license.txt&#8221; del mismo directorio:</p>
<p>brk(0)                                  = 0x977a000<br />
brk(0x979b000)                          = 0x979b000<br />
open(&#8220;license.txt&#8221;, O_RDONLY)           = 3<br />
fstat64(3, {st_mode=S_IFREG|0664, st_size=22, &#8230;}) = 0<br />
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8</p>
<p>Ademas de eso si usamos el comando &#8220;strings&#8221; podemos mirar los strings en cleartext del ejecutable, entre los resultados curiosos tenemos este output:</p>
<p>error: wrong license number<br />
error: license file not found!<br />
error closing license file!<br />
license.txt<br />
p@Pong<br />
pong<br />
Failed to open display</p>
<p>Asi pues, escribiendo &#8216;p@Pong&#8217; y &#8216;pong&#8217; en el archivo license, el ejecutable hace un read() mas que la anterior ocasion en el output de strace:</p>
<p>mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8015000<br />
read(3, &#8220;p@Pong\npong\n&#8221;, 4096)         = 12<br />
read(3, &#8220;&#8221;, 4096)                       = 0<br />
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), &#8230;}) = 0</p>
<p>Esto a lo mejor sirve de pista a alguien, si consigo algo mas de tiempo, se puede probar a desensamblar en IDA o algo.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

