<?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>Comments on: Evitar que nuestra aplicación sea crackeada</title>
	<atom:link href="http://www.iphonesoftware.es/2009/04/06/evitar-que-nuestra-aplicacion-sea-crackeada/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iphonesoftware.es/2009/04/06/evitar-que-nuestra-aplicacion-sea-crackeada/</link>
	<description>Novedades, noticias, artículos de programación</description>
	<lastBuildDate>Thu, 05 Jan 2012 21:06:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: lisergio</title>
		<link>http://www.iphonesoftware.es/2009/04/06/evitar-que-nuestra-aplicacion-sea-crackeada/comment-page-1/#comment-435</link>
		<dc:creator>lisergio</dc:creator>
		<pubDate>Sun, 13 Dec 2009 10:14:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.iphonesoftware.es/?p=421#comment-435</guid>
		<description>Buenas...

No se si leeran esto...

estoy haciendo una app, y he usado la comprobación que comentais en este tuto, pero he crackeado mi propia app con el info.plist de otra app crackeada, y funciona perfectamente, he añadido una vista... imagino que debería de funcionar ( soy bastante novato, estoy en vias de aprendizaje) lo he dejado asi...

/* Detectar si ha sido crackeada */
 
NSBundle* bundle = [NSBundle mainBundle];
 
NSDictionary* info = [bundle infoDictionary];
 
if( [info objectForKey:@&quot;SignerIdentity&quot;] != nil)
 
{
 [window addSubview:VISTA_PIRATA];
}

¿Deberia de aparecer la VISTA_PIRATA al detectar el pirateo?</description>
		<content:encoded><![CDATA[<p>Buenas&#8230;</p>
<p>No se si leeran esto&#8230;</p>
<p>estoy haciendo una app, y he usado la comprobación que comentais en este tuto, pero he crackeado mi propia app con el info.plist de otra app crackeada, y funciona perfectamente, he añadido una vista&#8230; imagino que debería de funcionar ( soy bastante novato, estoy en vias de aprendizaje) lo he dejado asi&#8230;</p>
<p>/* Detectar si ha sido crackeada */</p>
<p>NSBundle* bundle = [NSBundle mainBundle];</p>
<p>NSDictionary* info = [bundle infoDictionary];</p>
<p>if( [info objectForKey:@"SignerIdentity"] != nil)</p>
<p>{<br />
 [window addSubview:VISTA_PIRATA];<br />
}</p>
<p>¿Deberia de aparecer la VISTA_PIRATA al detectar el pirateo?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Echalotte</title>
		<link>http://www.iphonesoftware.es/2009/04/06/evitar-que-nuestra-aplicacion-sea-crackeada/comment-page-1/#comment-411</link>
		<dc:creator>Echalotte</dc:creator>
		<pubDate>Mon, 13 Jul 2009 03:43:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.iphonesoftware.es/?p=421#comment-411</guid>
		<description>Muy buen aporte Lord, yo agregaria: 
- Validar esta clave varias veces en el programa. Cuanto más veces, mejor.
- No conviene escribir la validacion en una sola funcion llamada ValidateSignerXXX sino repetir las lineas de código en cada caso. En seguridad las buenas practicas de programacion no se apliquen del todo...</description>
		<content:encoded><![CDATA[<p>Muy buen aporte Lord, yo agregaria:<br />
- Validar esta clave varias veces en el programa. Cuanto más veces, mejor.<br />
- No conviene escribir la validacion en una sola funcion llamada ValidateSignerXXX sino repetir las lineas de código en cada caso. En seguridad las buenas practicas de programacion no se apliquen del todo&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LordMoriarty</title>
		<link>http://www.iphonesoftware.es/2009/04/06/evitar-que-nuestra-aplicacion-sea-crackeada/comment-page-1/#comment-358</link>
		<dc:creator>LordMoriarty</dc:creator>
		<pubDate>Tue, 07 Apr 2009 08:48:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.iphonesoftware.es/?p=421#comment-358</guid>
		<description>Buena aportación para proteger un poco más nuestras aplicaciones, pero yo recomendaría además de eso, que no usemos la cadena &#039;SignerIdentity&#039; como texto plano en nuestro código fuente, ya que es una cadena que buscan los &#039;crackers&#039; a nivel hexadecimal y con desensambladores para localizar la zona binaria de nuestro código para poder parchearlo.

Se puede construir esa misma cadena pero a base de alteraciones ASCII internas en nuestro código.

Tampoco es recomendable que usemos ningún tipo de mensaje en la zona de código donde hacemos la comprobación del &#039;SignerIdentity&#039;, ya que también buscan las cadenas de texto de ese mensaje para localizar la misma zona anteriormente citada.

Para más protección es recomendable que no nos limitemos a realizar un chequeo del &#039;SignerIdentity&#039; sino que usemos el resultado de &#039;SignerIdentity&#039; y lo fusionemos con alguna variable totalmente necesaria en nuestra aplicación, de esta forma no es una simple comparación (CMP en ensamblador), que es lo que parchean los &#039;crackers&#039;, sino que es algo más ligado con la filosofía de funcionamiento de nuestro programa. No es infalible pero en nivel del &#039;cracker&#039; ha de ser más alto para que nos fusilen la aplicación.

Saludos.</description>
		<content:encoded><![CDATA[<p>Buena aportación para proteger un poco más nuestras aplicaciones, pero yo recomendaría además de eso, que no usemos la cadena &#8216;SignerIdentity&#8217; como texto plano en nuestro código fuente, ya que es una cadena que buscan los &#8216;crackers&#8217; a nivel hexadecimal y con desensambladores para localizar la zona binaria de nuestro código para poder parchearlo.</p>
<p>Se puede construir esa misma cadena pero a base de alteraciones ASCII internas en nuestro código.</p>
<p>Tampoco es recomendable que usemos ningún tipo de mensaje en la zona de código donde hacemos la comprobación del &#8216;SignerIdentity&#8217;, ya que también buscan las cadenas de texto de ese mensaje para localizar la misma zona anteriormente citada.</p>
<p>Para más protección es recomendable que no nos limitemos a realizar un chequeo del &#8216;SignerIdentity&#8217; sino que usemos el resultado de &#8216;SignerIdentity&#8217; y lo fusionemos con alguna variable totalmente necesaria en nuestra aplicación, de esta forma no es una simple comparación (CMP en ensamblador), que es lo que parchean los &#8216;crackers&#8217;, sino que es algo más ligado con la filosofía de funcionamiento de nuestro programa. No es infalible pero en nivel del &#8216;cracker&#8217; ha de ser más alto para que nos fusilen la aplicación.</p>
<p>Saludos.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

