elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 39
171  Programación / Desarrollo Web / Poner Link en una imágen. en: 12 Febrero 2012, 23:02 pm
Hola a todos, tengo el siguiente problema tengo una página web pre-diseñada que posee una imagen, me gustaría que esa imagen me direccionara por ejemplo a www.google.com (luego lo cambio). El problema es que no se como hacerlo, a ver si me dan alguna ayuda ya que soy un poco nulo en esto:

La imagen se ubica/posee el siguiente nombre: ../images/descargar.png

Intenté con lo que aparece en este link (Tutorial), ya que la idea es que quede como la primera imagen que muestra:
http://bluedogwebservices.com/css-trick-turning-a-background-image-into-a-clickable-link/

*Sospecho de lo que he puesto en rojo en las citas de los archivos.
<---No sé si se nota, pero he hecho mi esfuerzo máximo al no saber html, espero que sea de ayuda lo encontrado por mi. Espero su ayuda, gracias---->

 
CSS:
Citar
body, input {
   color:#190b00;
   background-color: #190b00;
   color:#FFF;
   font-family:Arial, Helvetica, sans-serif;
   font-size: 10px;
   }

a {
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#f8d198;
}

a:hover { text-decoration: none;}
ol, ul { list-style: none; }
.fondo {
   background-image:url(../images/fondo.jpg);
   background-repeat:no-repeat;
   background-position:top;
}

.header {
   background-image:url(../images/header.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 281px;
}

.menu-he {
   background-image:url(../images/menu-he.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 121px;
   
}

.descargar-he {
   background-image:url(../images/fondo-descarga.png);
   background-repeat:no-repeat;
   background-position:top;
   height: 110px;
   margin-top: -25px;
}

.tmp_m_content {  margin-top: 5px; }
.tmp_m_content .tmp_right_title {  height:43px; width: 443px;  font:normal 18px/30px Georgia; color:#FFFFFF;   font-family:Arial, Helvetica, sans-serif; font-style:italic; background-image:url(../images/titulo.png); background-repeat:no-repeat; padding-top: 5px; }
.tmp_m_content .tmp_page_content { font:normal 12px/24px Arial, Helvetica, sans-serif; color:#ffffff; margin:5px; margin-left: }
.tmp_m_content .tmp_right_title_ann { background-color:#fff1dc; height:20px; position:relative; font:bold 15px/20px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif; color:#FFFFFF; padding-left:15px; }
.tmp_m_content .tmp_page_content_ann { font:normal 12px/24px Arial, Helvetica, sans-serif; color:#ffffff; margin:5px; }
.ann_date { font:normal 11px/24px Arial, Helvetica, sans-serif; color:#8f4a0a;
}

.iN_title a{
font-size:14px;
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#fff1dc;
}

.iN_title a:hover{
font-size:14px;
text-decoration: none;
font-family:Arial, Helvetica, sans-serif;
font-style:italic;
color:#f8d198;
}

.iN_date{
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:10px;
color:#8f4a0a;
}
   
.contenido {
   width: 1000px;
   background-image:url(../images/contenido.png);
   background-position:top;
   background-repeat:no-repeat;
   }

#header-mu {
   width: 100%;
   background-image:url(images/medio.jpg);
   background-position:top;
   background-repeat:no-repeat;
   height:264px;
   }

.inicio {
   width: 55px;
   float:left;
   margin-left: 30px;
   margin-top: 25px;
   }
   
.anuncios {
   width: 80px;
   float:left;
   margin-top: 25px;
   margin-left: 25px;
   }

.registro {
   width: 73px;
   float:left;
   margin-top: 25px;
   margin-left: 29px;
   }
   
.rankeado {
   width: 76px;
   float:left;
   margin-top: 25px;
   margin-left: 29px;
   }
   
.descargar {
   width: 213px;
   height: 78px;
   float:left;
   margin-left: 8px;
   }
   
.tienda {
   width: 55px;
   float:left;
   margin-top: 25px;
   margin-left: 6px;
   }
   
.foro {
   width: 43px;
   float:left;
   margin-top: 25px;
   margin-left: 30px;
   }
   
.contacto {
   width: 83px;
   float:left;
   margin-top: 25px;
   margin-left: 35px;
   }
   
.sesion1 {
   width: 63px;
   float:left;
   margin-top: 25px;
   margin-left: 32px;
   }
   
#bg_2 {  height:82px; position:relative; z-index:99; }

.bg_2 a {  overflow:hidden; background-image:url(../images/menu-he2.jpg); display:inline; float:left; text-indent:-9999px; padding:0;  height: 67px; margin-top: 6px;}

.bg_2 .li1 { background-position:0 0; width:105px; height: 67px; margin-left: 7px;  }

.bg_2 .li2 { background-position:-105px 0; width:103px;  }

.bg_2 .li3 { background-position:-208px 0; width:103px; }

.bg_2 .li4 { background-position:-311px 0; width:103px;}

.bg_2 .li5 { background-position:-414px -0px; width:106px; }

.bg_2 .li6 { background-position:-520px 0px; width:107px;  }

.bg_2 .li1:hover { background-position:0 -67px;}

.bg_2 .li2:hover { background-position:-105px -67px;}

.bg_2 .li3:hover { background-position:-208px -67px;}

.bg_2 .li4:hover { background-position:-311px -67px;}

.bg_2 .li5:hover { background-position:-414px -67px;}

.bg_2 .li6:hover { background-position:-520px -67px;}

.login-formulario {
   background-image:url(../images/lo.png);
   background-position:center;
   height: 30px;
   
}
      
.slider {
   
   background-image:url(../images/slider.gif);
   background-position:center;
   background-repeat:no-repeat;
   height:155px;
   width: 487px;
   
   }
   
.rankingtop {
   
   background-image:url(../images/ranking.png);
   background-position:top;
   background-repeat:no-repeat;
   width:229px;
   height:414px;
   
   }
   
.separador {
   
   background-image:url(../images/separador.png);
   background-position:center;
   background-repeat:no-repeat;
   height:1px;
   
   }
   
.titulode {
   text-align: center;
   font-style: italic;
   color: #FFF;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
    font-weight: bold;
   
}

.top5name {
   color: #af7d55;
   font-family: Verdana, Geneva, sans-serif;
   font-size: 10px;
   text-align: center;
}

.sobretop5 {
   text-align: center;
   color: #ff7e00;
   font-size: 10px;
   font-family: Verdana, Geneva, sans-serif;
}
   
.siguenos {
   margin-top:10px;
   margin-left: 4px;
   background-image:url(../images/siguenos.png);
   height: 46px;
   background-repeat:no-repeat;
   background-position:top;
   width: 229px;
}

#bg_siguenos {  height:17px; position:relative; z-index:99;}

.bg_siguenos a {  overflow:hidden; display:inline; float:left; text-indent:-9999px; padding:0; margin:0; height:32px;}

.bg_siguenos .si1 { background-position:0 0; width:31px; ; margin-left: 113px; margin-top: 6px;}
.bg_siguenos .si2 { background-position:-120px 0; width:31px; margin-left: 6px; margin-top: 6px;}
.bg_siguenos .si3 { background-position:-260px 0; width:31px; margin-left: 6px; margin-top: 6px;}

.bg_siguenos .si1:hover { background-position:0 -50px;}
.bg_siguenos .si2:hover { background-position:-120px -50px;}
.bg_siguenos .si3:hover { background-position:-260px -50px;}

.registroimg {
   margin-top:10px;
   margin-left: 12px;
   height: 46px;
   background-repeat:no-repeat;
   background-position:top;
   width: 237px;
}

#bg_registroimg {  height:45px; position:relative; z-index:99;}

.bg_registroimg a {  background:url(../images/registrate.png) no-repeat; overflow:hidden; display:inline; float:left; text-indent:-9999px; padding:0; margin:0; height:45px;}

.bg_registroimg .re1 { background-position:0 0; width:237px; height:45px;}

.bg_registroimg .re1:hover { background-position:0 -45px;}


.contenidooo {
   margin-top:5px;
   margin-left: 15px;
   background-image:url(../images/menu.png);
   height: 333px;
   background-repeat:no-repeat;
   
}

.tmp_left_cabezal { background-image:url(../images/line.png); background-position:bottom; background-repeat:no-repeat; width:263px; height:22px; margin-left: 32px; padding-left: 10px; margin-top:7px; color:#b9955b; font-family: Arial, Helvetica, sans-serif; font-size:14px;}
.tmp_left_menu { background-image:url(../images/list-menu.png);  margin-left: 78px; width: 220px; margin-top: 18px;  }
.tmp_left_menu a { color:#b9955b; font-family: Arial, Helvetica, sans-serif; font-size:12px; text-decoration:none; }
.tmp_left_menu a:hover {color:#af7d55; text-decoration:none; }
.tmp_left_menu ul {   list-style:none;}
.tmp_left_menu li.list_menu {   color:#b9955b;  background: url(../images/bullet.gif) no-repeat 1px ; margin-left:-17px; padding-left: 15px; height: 22px; }

.nuevo_login {
   color: #af7d55;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   text-decoration:none;
}

.nuevo_login a {
   color: #FFF;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 12px;
   text-decoration:none;
}


.footer-he {
   background-image:url(../images/footer.png);
   background-repeat:repeat-y;
   background-position:top;
   height: 58px;
}

.creditos {
   font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
   color:#FFF;
   font-size: 10px;
   margin-left: -400px;
}

.login_field{
   background-color: transparent;
border:1px solid transparent;
height: 20px;
width: 175px;
font-size: 10px;
font-family:Verdana, Geneva, sans-serif;
color: #330000;
text-align:justify;
margin-left: 5px;
padding-left: 5px;
}

.lost {
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #330000;
   text-align:center;
}

.lost a{
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #330000;
   text-align:center;
   text-decoration:none;
}

.lost a:hover{
   font-size: 9px;
   font-family: Verdana, Geneva, sans-serif;
   color: #ffffff;
   text-align:center;
   text-decoration:none;
}

.banner_rotator{
   background-image:url(../images/banner.png);
   width: 560px;
   height: 90px;
   margin-top: 10px;
}

.banner_descarga{
   background-image:url(../images/descargar.png);
   width: 269px;
   height: 95px;
   margin-top: 7px;
   margin-left: 35px;
}

.contenido-he {
   background-image:url(../images/fondo-contenido.png);
   background-repeat:repeat-y;
   background-position:top;
   height: 110px;
}

.horario {
   color: #e2d681;
   font-family: Arial, Helvetica, sans-serif;
   font-size: 9px;
   font-weight: bold;
   width: 87px;
   height: 40px;
   margin-left: 80%;
   margin-top: 222px;
   }

.line-menu { background-image:url(../images/line-menu.jpg); background-position:top; background-repeat:no-repeat; height: 3px; }

fieldset{
background: #1e0f02;
border: 1px solid #8f4c0a;
font: bold 11px Arial, Helvetica, sans-serif;
color:#FFF;
}

legend{
background: #1e0f02;
border: 1px solid #8f4c0a;
font: bold 11px Arial, Helvetica, sans-serif;
margin-left: 5px;
}

ul#menu{
   margin:0;
   padding:0px 0px 0px 85px;
   list-style-type:none;
   width:auto;
   position:relative;
   display:block;
   height:38px;
   text-transform:uppercase;
   font-size:12px;
   font-weight:bold;
   background:transparent url("template/<?=$core['config']['template'] ?>/images/button_bg.jpg") repeat-x top left;
   font-family:Arial, Helvetica, sans-serif;
   
}

ul#menu li{
   display:block;
   float:left;
   margin:0;
   pading:0;
   height:38px;
}


ul#menu li a{
   display:block;
   float:left;
   color:#ffffcc;
   text-decoration:none;
   font-weight:bold;
   padding:10px 16px 0 10px;
   
   background:transparent url("template/<?=$core['config']['template'] ?>/images/sep.jpg") no-repeat top right;
   }


ul#menu li a:hover{
   background:transparent url("template/<?=$core['config']['template'] ?>/images/hover.jpg") no-repeat top right;
   color:#FFF;
   }
.style1 {color: #B53452}

#tmp_main { width:990px; margin:auto; background-color:#0E1819; border:1px #262E30 solid; padding-bottom:5px; }
.tmp_nav { background:url(template/<?=$core['config']['template'] ?>/images/nav_bg.jpg); width:976px; height:34px; margin:auto; margin-top:3px; margin-bottom:10px; }
.tmp_nav ul { margin-left:20px; }
.tmp_nav li { float:left; background:url(template/<?=$core['config']['template'] ?>/images/nav_mark.gif) no-repeat left top; padding-left:15px; padding-right:10px; height:34px; }
.tmp_nav .menu { color:#ddd; font:bold 14px Arial, Helvetica, sans-serif; line-height:34px; }
.tmp_nav .menu a { color:#ddd; font:bold 14px Arial, Helvetica, sans-serif; line-height:34px; text-decoration:none }
.tmp_nav .menu a:hover { color:#FC0; }
.tmp_nav li:hover { background:url(template/<?=$core['config']['template'] ?>/images/nav_hover_bg.gif) no-repeat left; }


.tmp_main_content { width:auto; margin:5px 5px 0 5px; background-color:#2F343A; }

.tmp_left_side { background-color:#1E2628;   padding-bottom:15px; padding-right: 10px; padding-left: 10px; }

.tmp_left_title { background:url(template/<?=$core['config']['template'] ?>/images/left_title_bg.gif); background-repeat:repeat-x; margin-top:5px; font:bold 16px/33px Arial, Helvetica, sans-serif; text-align:center; color:#fff }

.yellow  a{
color:#fc0;
text-decoration:none;
}

.yellow  a:hover{
color:#fffff;
text-decoration:none;
}

.configse  {
color:#ffffff;
text-decoration:none;
font-size:12px;
}

.configse  a{
color:#341d0f;
text-decoration:none;
font-size:12px;
}

.configse  a:hover{
color:#fffff;
text-decoration:none;
font-size:12px;
}

.tmp_advertise { margin-bottom: 20px; width:728px; height:90px; border:2px #6A5151 solid; }

#tmp_nav_header{ text-align:center; height:31px; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_bg.gif) 0 0 repeat-x; font-family:Arial, Helvetica, sans-serif; font-size:11px;}
#tmp_nav_header_menu { width:990px; margin:0 auto; text-align:left; height:28px; padding:1px 0 2px 0; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_bg.gif) 0 0 repeat-x; position:relative;z-index:9999;}



#welcome_stats{float:left; padding-left:5px;  color:#ded1c4; line-height:28px;}
#welcome_stats a {color: #ded1c4; text-decoration: underline;}
#welcome_stats a:hover {color: #ffffff; text-decoration: none;}

#tmp_header_menu{ float:right; padding-right:10px;}
#tmp_header_menu ul li { float:left; height:28px; line-height:28px; padding:0 10px; background:url(template/<?=$core['config']['template'] ?>/images/nav_header_hover.gif) right bottom no-repeat;}
#tmp_header_menu li a { color:#ded1c4; text-decoration: none;}
#tmp_header_menu li a:hover { color:#fff; text-decoration: underline;}   


.where_nav{
margin:4px; padding:2px;
font: 11px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
color: #ffffff;
}


/*
MUCore Css Start
*/
.where_nav a{
color: #ffffff;
text-decoration: underline;
}

.where_nav a:hover{
color: #ffffff;
text-decoration: none;
}

.iN_title{
font-size:17px;
font-weight:bold;

}

.iN_title_mirror{

font-size:17px;
font-weight:bold;
color:#6b533f;
}

.iN_description{
font:11px/14px Arial, Verdana, sans-serif;
color:#6b533f;

}

.iN_download_title{
font:bold 14px/18px arial; color:#af7d55;
}

.iN_download_cat{
font-size:17px;
font-weight:bold;
color:#ac5500;
font-family:Arial, Helvetica, sans-serif;
}

.iN_news_content{
font-family:Arial, Helvetica, sans-serif;
font-size:13px;
color:#af7d55;
margin:0px;
}

.iN_news_content a{
font-family:Georgia, "Times New Roman", Times, serif;
font-size:13px;
margin:0px;
text-decoration: underline;
}

.iN_news_content a:hover{
font-family:Georgia, "Times New Roman", Times, serif;
font-size:13px;
margin:0px;
text-decoration: none;
}

.iN_new_read_more{
color:#ffffff;
font: 10px Arial, Helvetica, sans-serif;
background: #8b0e0e;

padding: 1px;
}

.iN_new_read_more a{
color: #ffffff;
font-size: 10px;
}
.iRg_text{
color:#af7d55; font-family: Arial, Helvetica, sans-serif; font-size:12px;
}


.iRg_inf{
font: 11px fantasy;
color:#ffffff;
}

.iRg_inf a{
font: 11px fantasy;
text-decoration: underline;
}

.iRg_inf a:hover{
font: 11px fantasy;
text-decoration: none;
}

.iRg_gender{
font: 11px Arial, Helvetica, sans-serif;
color:#ffffff;
}

.iRg_input{
font: 11px Arial, Helvetica, sans-serif;
color:#ffffff;
}

.iRg_line{
background:url(template/<?=$core['config']['template']; ?>/images/inner_line.jpg); background-position:bottom; background-repeat:repeat-x;
font: 11px fantasy; color: #af7d55;
padding-bottom: 4px

}

.iRg_line_top{
background:url(../images/inner_line.jpg); background-position:top; background-repeat:repeat-x;
font: 11px fantasy; color: #af7d55;

}

.iR_func_status{
border: 1px solid #8f4c0a;
background: #341d00;
padding-left: 4px;
font-size: 11px;
}

.iR_func_status_lacking{
background: #8f4c0a;
padding: 1px;
padding-left: 3px;
padding-right: 3px;
color: #ffffff;
}


.iR_func_status_free{
background: #00FF00;
padding: 1px;
padding-left: 3px;
padding-right: 3px;
color: #000000;
}

.iR_func_status_free a{
font-size: 11px;
color: #000000;
}
.iRg_input{

background: #2d1700;
border:1px solid #542401;
height: 25px;
width: 126px;
color: #9f6640;
font-size: 10px;
font-family:Arial, Helvetica, sans-serif;
text-align:justify;
margin-left: 15px;
padding-left: 5px;
}



.iRg_terms_agree{
font:  12px Arial, Verdana, sans-serif;
}

.iRg_terms_agree a{
font:  12px Arial, Verdana, sans-serif;
text-decoration: underline;
}

.iR_rank{
background-color: #301a00;
font: bold 11px Arial, Helvetica, sans-serif; color: #af7d55;
}

.iR_stats{
font: 11px Helvetica, serif; color: #ffffff;
background-color: #341d00;
padding: 1px;
}

.iR_stats_2{
font: 11px Helvetica, serif; color: #ffffff;
background-color: #190b00;
border: 1px #8f4c0a solid;
padding: 1px;
color: #af7d55;
}




.iR_stats_bg{
background-color: #996600;

}



.iR_stats_level{
border: 1px solid #90490a;
font: 11px Arial, Helvetica, sans-serif; color: #af7d55;
background: #382000;
padding: 1px;
}

.iR_stats_reset{
border: 1px solid #90490a;
font: 11px Arial, Helvetica, sans-serif; color: #af7d55;
background: #361f00;
padding: 1px;
}



.iR_name{
font: bold 13px Arial, sans-serif; color: #ffffff;
}

.iR_class{
font: 12px Helvetica, sans-serif; color: #af7d55;
}

.iR_status{
font-size: 11px;
}

.iR_task{
font:  11px Georgia, "Times New Roman", Times, serif;
}

.iR_rank_type{
font: bold 16px Arial, sans-serif;
}

.iR_rank_type a{
font: bold 16px Arial, sans-serif;
text-decoration: none;
}

.iR_rank_type a:hover{
font: bold 16px Arial, sans-serif;
text-decoration: none;
color: #6b533f;
}



.iR_rank_type_sub{
font: 10px fantasy;
}

.iR_rank_type_sub a{
font: 10px fantasy;
text-decoration: none;
}

.iR_rank_type_sub a:hover{
font: 10px fantasy; color:#6b533f;
text-decoration: none;
}




.msg_success{
background: #c2ffaf;
border: 1px solid #cccccc;
padding: 4px;
padding-left: 33px;
margin-bottom: 6px;
margin-top: 6px;
background-image:url(template/<?=$core['config']['template'] ?>/images/success.gif);
background-repeat:no-repeat;
background-position: 10px;
font-size: 11px;
font-weight: bold;
color: #444444;
}

.msg_error{
background: #F9F2B9;
border: 1px solid #cccccc;
padding: 4px;

padding-left: 33px;
margin-bottom: 6px;
margin-top: 6px;
background-image:url(template/<?=$core['config']['template'] ?>/images/warning.gif);
background-repeat:no-repeat;
background-position: 10px;
font-size: 11px;
font-weight: bold;
color: #444444;
}


.chat_bg{
border: 1px solid #8f4c0a;
background: #1e0f02;
padding: 4px;
font-size: 11px;
color:#af7d55;
}

.chat_even{
background: #5b3005;
padding: 2px;
}

.chat_odd{
padding: 2px;
}


.warehouse_block{
border: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_block.gif);
}

.warehouse_item_block {
border: 0px;
padding: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_item_block.gif);
}

.warehouse_bg {
border: 0px;
padding: 0px;
text-align: center;
background: url(template/<?=$core['config']['template'] ?>/images/warehouse_bg.gif);
}

.item_name{
font: 12px Arial, sans-serif;
color: #ffffff;
font-weight: bold;
}

.item_dur{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_requirement{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_skill{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.item_options{
font: 11px Arial, sans-serif;
color: #ffffff;
}

.iD_dashed{
border-top: #ffffff dashed 1px;
}

.downloads tr:hover{
background: #ffffff;
}


.curent_step{
background: #331c00; border: 1px solid #90490a;
padding: 2px;
font:bold 11px Arial;
color:#af7d55;
}

.step{
background: #190b00;
border: 1px solid #90490a;
padding: 2px;
font:bold 11px Arial;
color: #D4D4D4;
}

.hidden_password{
border: 1px solid #cccccc;
background: #ECECEC;
padding: 2px;
width: 200px;
color: #ECECEC;
}


.footer_font{
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #ffffff;
}

.footer_font a{
padding-bottom:5px;
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #af7d55;
text-decoration: none;
}

.footer_font a:hover{
font:  normal 11px Tahoma, Calibri, Verdana, Geneva, sans-serif;
color: #6b533f;
text-decoration: none;
}

.table_list{
background: #ffffff;
color: #000000;
border: outset 1px #DEE0E2;
}

.table_list .title{
background: #DFDFFF;
font: bold 11px tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
padding: 2px;
padding-left: 4px;
color: #595959;
border: outset 1px #af7d55;
}

.table_list .even{
background: #ECECFF;
}

.table_list .content{
font: 11px tahoma, verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
padding: 2px;
padding-left: 4px;
}


#rss_feed{
margin-left: 0;
padding-left: 0;
list-style: none;
}

#rss_feed li
{
padding-left: 17px;
background-image: url(template/<?=$core['config']['template'] ?>/images/rss_icon.gif);
background-repeat: no-repeat;
background-position: 0;
}

#rss_feed li a{
text-decoration: none;
}

#rss_feed li a:hover{
text-decoration: underline;
}
.language_select{
margin-top: 4px;
 }

.language_select a{
 font: 11px Arial, Helvetica, sans-serif;
color: #ffffff;
 text-decoration: none;
 }

.language_select a:hover{
font: 11px Arial, Helvetica, sans-serif;
color: #ffffff;
text-decoration: underline;
 }
 
.usercp_module{
font-weight:bold;
background-color:#000000;
color: #ffffff;
padding: 2px;
padding-left: 4px;
width: 140px;
}



.marco_contenido {
   width:90%;
}

index.php:
Citar
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type"a content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="author" content="PHPCore" />
<meta name="generator" content="MUCore 1.0.4" />
<meta name="keywords" content="news" />
<meta name="description" content="Global News" />
<?=build_header_seo(); ?>
<title><?=build_header_title(); ?></title>
<link href="template/<?=$core['config']['template'] ?>/css/estilo.css" rel="stylesheet" type="text/css" />
</head>
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td class="fondo"><table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" style="z-index:1;">
          
          
          <tr>
            <td width="1009" class="header"></td>
          </tr>
          <tr>
            <td valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="menu-he">
              <tr>
                <td width="64%"><div class="bg_2">

    <a href="index.php" class="li1"></a>
    <a href="index.php?page_id=register" class="li2"></a>
    <a href="index.php?page_id=downloads" class="li3"></a>
    <a href="index.php?page_id=rankings" class="li4"></a>
    <a href="http://www.google.com" class="li5"></a>
    <a href="index.php?page_id=contact" class="li6"></a>
  </div></td>
                <td width="36%" valign="top">
                <?
        if($user_login == '1'){
           echo '<div class="tmp_left_login1">
           <ul>';
      $m_uss_row_ = get_sort('engine/cms_data/mods_uss.cms',',');
        $count_m_uss = 0;
      foreach ($m_uss_row_ as $tr){
         explode("¦",$tr);
         $count_m_uss++;
         if($tr[6] == '1'){
            if($tr[3] != ACCOUNTSETTINGS_CMS_USER){
               
            }
            
         }
      }
      echo ' </ul>
       </div>
       <table width="50%" border="0" align="left" style="margin-left: 50px; margin-top:20px;" cellpadding="0" cellspacing="4">
       <tr>
        <td align="left" class="configse"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.USER_CMS_PAGE.'&'.USER_GET_PAGE.'='.ACCOUNTSETTINGS_CMS_USER.'">'.link_account_settings.'</a></td>
        <td align="right" class="configse"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'=logout">'.link_log_out.'</a></td>
       </tr>
       </table>
      
       ';
        }else{
           echo '<form method="post" action="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.LOGIN_CMS_PAGE.'" name="uss_login_form">
                <table width="350" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td width="51" height="12"></td>
                    <td width="195"></td>
                    <td width="11" rowspan="4"></td>
                    <td rowspan="4">
                    <input type="image" src="template/'.$core['config']['template'].'/images/ok.png" onclick="uss_login_form.submit();"></td>
                    </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td class="login-formulario"><input type="text" name="uss_id" maxlength="10" class="login_field" value="NOMBRE DE USUARIO" OnClick="this.value=\'\' "></td>
                    </tr>
                  <tr>
                    <td></td>
                    <td class="login-formulario"><input type="password" name="uss_password" class="login_field" value="CONTRASE&Ntilde;A" maxlength="12" OnClick="this.value=\'\'"><input type="hidden" name="process_login"></td>
                    </tr>
                  <tr>
                    <td>&nbsp;</td>
                    <td class="lost" valign="top"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.LOSTPASSWORD_CMS_PAGE.'" >Recuperar Contrase&ntilde;a</a> - <a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.REGISTER_CMS_PAGE.'">Registrate!</a></td>
                    </tr>
                </table>
                </form>';
        }
        ?>
      
                </td>
              </tr>
              <tr>
                <td><p>&nbsp;</p></td>
                <td>&nbsp;</td>
              </tr>
              </table>
              <table width="100%" border="0" cellpadding="0" cellspacing="0" class="descargar-he">
              <tr>
                <td width="4%" valign="top">&nbsp;</td>
                <td width="60%" valign="top"><div class="banner_rotator"></div></td>
                <td width="36%" valign="top"><div class="banner_descarga"></div></td>
              </tr>
              </table><table width="100%" border="0" cellpadding="0" cellspacing="0" class="contenido-he">
              <tr>
                <td width="4%" valign="top">&nbsp;</td>
                <td width="60%" valign="top"><div class="marco_contenido" align="left"><?
        if(CMS_NAVBAR == '1'){
           if(isset($_GET[LOAD_GET_PAGE])){
                     $l_load = file("engine/cms_data/pag_d.cms");
                     foreach ($l_load as $l_name){
                        $l_name = explode("¦",$l_name);
                        if($l_name[3] == $page_check_id){
                           $primary_l = $l_name[2];
                           break;
                        }

                     }
                  }
                  
                  if(isset($_GET[USER_GET_PAGE])){
                     $ti2_td = xss_clean(safe_input($_GET[USER_GET_PAGE],"_"));
                     $l2_load = file("engine/cms_data/mods_uss.cms");
                     foreach ($l2_load as $l2_name){
                        $l2_name = explode("¦",$l2_name);
                        if($l2_name[3] == $ti2_td){
                           $secondary_l = $l2_name[2];
                           break;
                        }
                     }
                  }
                  
                  if(!isset($_GET[LOAD_GET_PAGE])){
                                        #&gt;
                                        $title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>';
                                    }elseif  (isset($_GET[LOAD_GET_PAGE])){
                                        if(isset($_GET[USER_GET_PAGE])){
                                            $usercp_module_title =  str_replace($modules_text_tile,$modules_text_translate,$secondary_l);
$title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'">'.str_replace($menu_links_title,$menu_links_translated,$primary_l).'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'&panel='.$l2_name[3].'">'.$usercp_module_title.'</a>';
                                        }else{ $title_p =  '<a  href="'.$core['config']['website_url'].'">'.$core['config']['websitetitle'].'</a>  &gt; <a  href="'.$core['config']['website_url'].'/'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$l_name[3].'">'.str_replace($menu_links_title,$menu_links_translated,$primary_l).'</a>';}
                                    }
                  echo '
                  
                  ';
           
        }

if($page_check_id != ANNOUNCEMENTS_CMS_PAGE){
   require('engine/announcement_config.php');
if($core['ANNOUNCEMENT']['ACTIVE'] == '1'){
   $ann_file = array_reverse(file('engine/variables_mods/announcements.tDB'));
   $count_ann = '0';
   foreach ($ann_file as $ann){
      $ann = explode("¦",$ann);
      if($ann[3] > time()){
         $ann_found = '1';
         $ann_title = $ann[1];
         $ann_id = $ann[0];
;         break;
      }
   }
}
   if($ann_found == '1'){
      echo '
      <div class="tmp_m_content">
               <div  class="tmp_right_title">
                    <table width="97%" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                      <td width="1%" >&nbsp;</td>
                      <td width="47"><img src="template/'.$core['config']['template'].'/images/punto.gif"></td>
                      <td>'.text_announcement.'</td>
                    </tr>
                    <tr>
                      <td colspan="3" class="line-menu"></td>
                    </tr>
                    </table>
                  
                </div>
               <div class="tmp_page_content">
                        <table cellpadding="0" cellspacing="0" border="0" width="100%">
                 <tr>
                 <td rowspan="3" align="left" width="60"><img src="template/'.$core['config']['template'].'/images/announcement.gif" width="38" height="38"></td>
                 <td align="left" style="padding-top: 2px; padding-bottom: 2px;"><a href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.ANNOUNCEMENTS_CMS_PAGE.'#announcement-'.$ann_id.'"><div class="iN_news_content">'.$ann_title.'</div></a></td>
                 <td align="right" class="ann_date">'.date('F j, Y ').'</td>
                 </tr>
                 <tr>
                 <td colspan="2"  align="left" style="background-image:url(template/'.$core['config']['template'].'/images/inner_line.jpg); height: 2px;"></td>
                 </tr>
                 
                 ';
      if($core['ANNOUNCEMENT']['AUTHOR'] == '1'){
         echo '<tr>
         <td colspan="2" align="right"><b>'.$core['config']['admin_nick'].'</b> (Administrator)</td>
         </tr>';
         
      }
      echo '</table></div>
</div>
                  ';
   }
}
        
        
   
$load_pages = file('engine/cms_data/pag_d.cms');
foreach ($load_pages as $pages_loaded){
   $pages_loaded = explode("¦",$pages_loaded);
   
   if($pages_loaded[3] == $page_check_id){
      $p_loaded_array = preg_split( "/\ /", $pages_loaded[5]);
      $p_l = '1';
      break;
   }
}
if($p_l == '1'){
$load_mods = file('engine/cms_data/mods.cms');
foreach ($load_mods as $mods_loaded){
   $mods_loaded = explode("¦",$mods_loaded);
   if(in_array($mods_loaded[0],$p_loaded_array)){
      $_c_id_m[] = $mods_loaded[0];
   }else {
      $_c_id_m[] = 'NULL';
   }
}
$co=0;
foreach ($p_loaded_array as $give){
   #echo $give;
   if(in_array($give,$_c_id_m)){
      foreach ($load_mods as $give_me_out){
         $give_me_out = explode("¦",$give_me_out);
         if($give_me_out[0] == $give){
            if($give_me_out[4] == '1'){
               if($_GET[LOAD_GET_PAGE] == USER_CMS_PAGE && isset($_GET[USER_GET_PAGE])){
                  $construct_title = $secondary_l;
               }else{
                  $construct_title = $give_me_out[3];
               }
            
               echo '<div class="tmp_m_content">
                <div  class="tmp_right_title">                    
                                     <table width="97%" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                      <td width="1%" >&nbsp;</td>
                      <td width="47"><img src="template/'.$core['config']['template'].'/images/punto.gif"></td>
                      <td>'.htmlspecialchars(str_replace($modules_text_tile,$modules_text_translate,$give_me_out[3])).'</td>
                    </tr>
                    <tr>
                      <td colspan="3" class="line-menu"></td>
                    </tr>
                    </table>
                </div></div>
               <div class="tmp_page_content">';
               if($give_me_out[1] == '1'){
                  if(is_file("pages_modules/".$give_me_out[2]."")){
                     include('pages_modules/'.$give_me_out[2].'');
                  }else{
                     echo 'Unable to load module file, reason: not found.';
                  }
               }elseif ($give_me_out[1] == '0'){
                  if(is_file('engine/cms_data/cms_co/'.$give_me_out[0].'_cms.cms')){
                     include('engine/cms_data/cms_co/'.$give_me_out[0].'_cms.cms');
                  }else{
                     echo 'Unable to load module content, reason: not found.';
                  }
               }
               echo '</div> </div>';
            }
         }
      }
   }
}
}
?>
                
                  
                 </div> </td>
                <td width="36%" valign="top"><?
        if($user_login == '1'){
           echo '<div class="tmp_left_menu">
           <ul>';
      $m_uss_row_ = get_sort('engine/cms_data/mods_uss.cms','¦');
        $count_m_uss = 0;
      foreach ($m_uss_row_ as $tr){
         explode("¦",$tr);
         $count_m_uss++;
         if($tr[6] == '1'){
            if($tr[3] != ACCOUNTSETTINGS_CMS_USER){
               echo '<li class="list_menu"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.USER_CMS_PAGE.'&'.USER_GET_PAGE.'='.$tr[3].'">'.str_replace($menu_links_title,$menu_links_translated,$tr[2]).'</a></li>';
            }
            
         }
      }
      echo ' </ul>
       </div>
      
       ';
        }else
        ?><div class="tmp_left_cabezal">MuOnline - Modulos</div><div class="tmp_left_menu">
        <ul><?
                 $m_row_ = get_sort('engine/cms_data/pag_d.cms','¦');
               #  echo $test[1][2][3];
                 foreach ($m_row_ as $li){
                #  explode("¦",$li);
                  switch ($li[7]){
                     case '0':
                        if($li[8] == '1'){
                           if($li[6] != '0'){
                              echo '<li class="list_menu"><a  href="'.ROOT_INDEX.'?'.LOAD_GET_PAGE.'='.$li[3].'">'.str_replace($menu_links_title,$menu_links_translated,$li[2]).'</a></li>';
                           }
                     
                        }
                        break;
                     case '1':
                        switch ($li[11]){
                           case '1': $target = "_blank"; break;
                           case '0': $target = "_self"; break;
                        }
                        echo '<li class="list_menu"><a  href="'.$li[10].'"  target="'.$target.'">'.str_replace($menu_links_title,$menu_links_translated,$li[2]).'</a></li>  ';
                     
                     break;
                  }


                    
                 }
                 
        ?>
        </ul>
       </div></td>
              </tr>
              </table><table width="100%" border="0" cellpadding="0" cellspacing="0" class="footer-he">
              <tr>
                <td width="4%" valign="top">&nbsp;</td>
                </tr>
              </table><div align="center" class="creditos"><?=build_footer(),$XX= base64_decode('PGRpdiBhbGlnbj0iY2VudGVyIj48L2Rpdj4=');?></div>
             </td>
          </tr>
        </table></td>
      </tr>
    </table></td>
  </tr>
</table>
</body>

</html>

<script type="text/javascript" SRC="js/js_popup.js"></script>
172  Programación / Programación General / Duda con Installshield en: 10 Febrero 2012, 22:09 pm
Hola a todos, estoy intentando crear un instalador con installshield, pero me surge una duda que me gustaría saber si es posible solucionarla, les cuento:

Durante la instalación Installshield nos da la posibilidad de poder mostrar imágenes, pero aquí el problema, la resolución; Si elijo resoluciones muy altas de imágenes en los netbook se ve solo una parte de ella, por lo que me gustaría saber si existe alguna forma de poder adaptar la resolución de acuerdo a la resolución de la imagen, Saludos
173  Programación / Ingeniería Inversa / Verificar si una dll está cargada en un ejectuable? en: 8 Febrero 2012, 21:24 pm
Hola a todos, bueno poseo una aplicación en la cual hookeo una DLL más o menos de la siguiente manera (seudocodigo):

Push midll.dll
call LoadLibraryA
or eax,eax
je cerrar
jmp entry point
cerrar:
push 0ff
call ExitProcess

Carga muy bien, pero el problema que me surge es de que manera, que API podría llamar o que función podría realizar para que una vez ejecutada la aplicación verifique si está cargada.

La dll es para la detección de cheat's para un juego por lo que si una persona con pequeños conocimientos podría simplemente nopear desde push midll.dll hasta je cerrar y no cargaría la DLL (el proceso funcionaría correctamente, pero sin un "sistema de seguridad").

Mi idea es hacer un injerto que verifique si está cargada en memoria, pero ese es mi duda como y con qué API usarla?

INFO adicional: La DLL se conecta a un servidor para corroborar su integridad a través de CRC por lo que no me preocupa que alguien agregue una DLL con el nombre de midll.dll ya que sería detectada. Por lo que en palabras simples solo me gustaría saber de que manera el proceso puede verificar si la dll está cargada.

el seudocódigo sería así
injertar una función en donde el proceso pase seguidamente.
verificar si hay si la DLL está cargada y retomar normalmente.

Espero su ayuda.

Efectivamente eso es más ASM pero creo que se puede integrar a Ing inversa al ser un tema que involucra la seguridad

(si alguien se ha topado con un programa que haga algo parecido)

PD: Solución simple no compleja jeje


Saludos
174  Programación / PHP / Ayuda con PHP (pequeña página) en: 7 Febrero 2012, 07:59 am
Hola a todos bueno sinceramente desconozco de programación PHP pero necesito hacer algo que se que es muy fácil realizar, se que es algo puntual que me llevaría tener que aprender una gran cantidad de PHP siendo para mi incensario en este momento.

Les comento:

Tengo una página llamada hola.php y me gustaría que mostrara en el php lo que se escribe después de ?n= un ejemplo sería lo que está con rojo:

/hola.php?n=Hola

y que la página mostrara Hola (simple texto, no centrado)

la idea es que lo que se escriba a continuación de n= el .php me lo muestre como un simple texto en la misma página hola.php

(Introduciré solo textos)

Se que será sencilla para ustedes, Muchas gracias por su ayuda
175  Foros Generales / Foro Libre / Masifiquen el siguiente documento en contra de S.O.P.A por las redes sociales en: 18 Enero 2012, 20:20 pm
He creado un grupo es de suma importancia, espero que se unan e inviten a sus amigos:
https://www.facebook.com/events/194180564012664/?context=create

Por un Internet libre y sin censura!
176  Programación / Programación General / Instrucción % en C++? en: 17 Enero 2012, 16:09 pm
Hola estoy siguiendo un libro de ASM pero ha aparecido un ejercicio de interpretación de C++ a ASM (desconozco de C++) pero tengo unas dudas con respecto al planteamiento del ejemplo, creo que hay un error de escritura del libro:

var4 = (var1 * -5) / (-var2 % var3);

Dentro de la conversión a ASM el % es considerado como una división (/) en C++ esto está bien planteado o debería haber un / en vez de %?

Muchas gracias
177  Foros Generales / Sugerencias y dudas sobre el Foro / Mostrar reglas del subforo la primera vez que se ingresa a el en: 10 Enero 2012, 20:34 pm
Al ingresar por primera vez a un subforo que sea redirigido al post de reglas solo la primera vez.

pues eso
178  Programación / Ingeniería Inversa / [Tutorial] Russian Dolls crackme en: 5 Enero 2012, 08:50 am
Tutorial Russian Dolls crackme
Autor: Andrewl
información del crackme:http://crackmes.de
Autor del tutorial:UND3R
Objetivos: Realizar Keygen

Abrimos el crackme directamente, observaremos que nos informa el número de dígitos del serial:


Si introducimos un serial falso nos mostrará el siguiente mensaje:


Abrimos el crackme desde OllyDbg y veremos el siguiente Entry Point:


Buscamos referencias de texto dentro del crackme:


Notaremos la cadena de texto "Congratulations!", hacemos doble clic para dirigirnos hacia la dirección en donde es utilizada:


Vemos una instrucción PUSH, encargada de meter el puntero de la cadena de texto en el stack y luego una instrucción JMP SHORT que permite la utilización de la misma call hacia la API MessageBoxA permitiendo el ahorro de instrucciones:


Si subimos un poco veremos que para que el crackme nos muestre el mensaje de "Congratulations!" se deben cumplir ocho comparaciones. Si alguna de las ocho nos da como resultado cero (Activación de la bandera ZF) nos mostrará el mensaje equivalente al introducir un serial falso. Para obtener el mensaje de un serial correcto se debería cumplir las siguientes afirmaciones:

Citar
00402D78   .  807C24 11 00  CMP BYTE PTR SS:[ESP+11],0
Stack SS:[0012FAC5]=01

00402D7F   .  807C24 14 00  CMP BYTE PTR SS:[ESP+14],0
Stack SS:[0012FAC8]=01

00402D86   .  807C24 13 00  CMP BYTE PTR SS:[ESP+13],0
Stack SS:[0012FAC7]=01

00402D8D   .  807C24 17 00  CMP BYTE PTR SS:[ESP+17],0
Stack SS:[0012FACB]=01

00402D94   .  807C24 16 00  CMP BYTE PTR SS:[ESP+16],0
Stack SS:[0012FACA]=01

00402D9B   .  807C24 15 00  CMP BYTE PTR SS:[ESP+15],0
Stack SS:[0012FAC9]=01

00402DA2   .  807C24 10 00  CMP BYTE PTR SS:[ESP+10],0
Stack SS:[0012FAC4]=01

00402DA9   .  807C24 12 00  CMP BYTE PTR SS:[ESP+12],0
Stack SS:[0012FAC6]=01

* (Otra manera sería invertir los nemónicos de instrucciones JE SHORT por JNE SHORT)

También vemos un CALL ESI llamativo ya que este podría ser el encargado de comprobar si el serial introducido corresponde a un serial válido, coloquemos un BP en él:


Iniciamos el crackme (F9) e introducimos un serial falso:


Notaremos que se ha detenido en nuestro BP:


Entramos al CALL ESI y veremos lo siguiente:


Traceamos algunas instrucciones hasta llegar a la instrucción XOR:


Si pasamos la instrucción XOR (F7), notaremos que han cambiado algunas instrucciones posteriores a JNZ SHORT. Esto se debe a una función de descifrado en donde el contenido de ESI es alterado producto de la operación booleana XOR entre [ESI] y 76, guardando el resultado en el operando de destino (dentro de ESI). Luego de eso es incrementado ESI para apuntar a las siguientes instrucciones y disminuido ECX, este segundo registro es utilizado como contador de bucle ya que luego de SUB ECX,1 hay un nemónico de instrucción de tipo salto condicional en donde salta a la instrucción XOR si el resultado de la instrucción SUB ECX,1 es distinto de cero:


Colocamos un BP a continuación de JNZ SHORT e iniciamos el crackme (F9):


Veremos una serie de instrucciones descifradas:


Quitamos el BP y traceamos (F7), notaremos las siguientes instrucciones encargadas de la validación del serial:
Código:
0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
83F9 6D         CMP ECX,6D                    ; lo compara con 6D (m)

En caso de que la comparación de como resultado la activación de la bandera Cero (ZF), se moverá dentro de EDX el byte 1:
Código:
MOV BYTE PTR DS:[EDX],1



Si miramos el valor de EDX en los registros de propósito general de 32 bits veremos que EDX apunta a una de las ocho direcciones que debe contener 1 byte para que el serial sea considerado como válido:


Si seguimos traceando (F7) notaremos una función encargada de cifrar las instrucciones previamente descifradas:


Seguimos traceando (F7), veremos nuevamente el procedimiento de descifrado:


Colocamos un BP a continuación de la instrucción JNZ SHORT:


Iniciamos nuevamente el crackme (F9) y notaremos que se repiten nuevamente los procedimientos:


 podríamos resumirlo de la siguiente manera:
-descifra las instrucciones a ejecutar
-ejecuta las instrucciones descifradas encargadas de verificar el serial
-cifra las instrucciones previamente ejecutadas


(Lo más probable es que el programa cifre las instrucciones ejecutadas para evitar que al retornar del CALL ESI queden descubiertas todas las instrucciones de comprobación del serial, al igual que luego de introducir un serial si es dumpeado el ejecutable, quedarían expuestas las comprobaciones.)

Si seguimos traceando notaremos que siempre se repiten las mismas funciones:
Código:
0015E028    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E02F    83F9 6D         CMP ECX,6D                    ; lo compara con 6D (m)

0015E069    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E070    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E0AA    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E0B1    83F9 65         CMP ECX,65                    ; lo compara con 65 (e)

0015E0EB    0FB648 07       MOVZX ECX,BYTE PTR DS:[EAX+7] ; mueve el octavo valor del serial a ECX
0015E0F2    83F9 48         CMP ECX,48                    ; lo compara con 48 (H)

0015E12C    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E133    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E16D    0FB648 00       MOVZX ECX,BYTE PTR DS:[EAX]   ; mueve el primer valor del serial a ECX
0015E174    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E1AE    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E1B5    83F9 55         CMP ECX,55                    ; lo compara con 55 (U)

0015E1EF    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E1F6    83F9 64         CMP ECX,64                    ; lo compara con 64 (d)

0015E230    0FB648 04       MOVZX ECX,BYTE PTR DS:[EAX+4] ; mueve el quinto valor del serial a ECX
0015E237    83F9 47         CMP ECX,47                    ; lo compara con 47 (G)

0015E271    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E278    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E2B2    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E2B9    83F9 55         CMP ECX,55                    ; lo compara con 55 (U)

0015E2F3    0FB648 07       MOVZX ECX,BYTE PTR DS:[EAX+7] ; mueve el octavo valor del serial a ECX
0015E2FA    83F9 6F         CMP ECX,6F                    ; lo compara con 6F (o)

0015E334    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E33B    83F9 37         CMP ECX,37                    ; lo compara con 37 (7)

0015E375    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E37C    83F9 36         CMP ECX,36                    ; lo compara con 36 (6)

0015E3B6    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E3BD    83F9 33         CMP ECX,33                    ; lo compara con 33 (3)

0015E3F7    0FB648 04       MOVZX ECX,BYTE PTR DS:[EAX+4] ; mueve el quinto valor del serial a ECX
0015E3FE    83F9 45         CMP ECX,45                    ; lo compara con 45 (E)

0015E438    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E43F    83F9 50         CMP ECX,50                    ; lo compara con 50 (P)

0015E479    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E480    83F9 36         CMP ECX,36                    ; lo compara con 36 (6)

0015E4BA    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E4C1    83F9 39         CMP ECX,39                    ; lo compara con 39 (9)

0015E4FB    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E502    83F9 49         CMP ECX,49                    ; lo compara con 49 (I)

0015E53C    0FB648 00       MOVZX ECX,BYTE PTR DS:[EAX]   ; mueve el primer valor del serial a ECX
0015E543    83F9 35         CMP ECX,35                    ; lo compara con 35 (5)

0015E57D    0FB648 02       MOVZX ECX,BYTE PTR DS:[EAX+2] ; mueve el tercer valor del serial a ECX
0015E584    83F9 7A         CMP ECX,7A                    ; lo compara con 7A (z)

0015E5BE    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E5C5    83F9 6E         CMP ECX,6E                    ; lo compara con 6E (n)

0015E5FF    0FB648 03       MOVZX ECX,BYTE PTR DS:[EAX+3] ; mueve el cuarto valor del serial a ECX
0015E606    83F9 6A         CMP ECX,6A                    ; lo compara con 6A (j)

0015E640    0FB648 01       MOVZX ECX,BYTE PTR DS:[EAX+1] ; mueve el segundo valor del serial a ECX
0015E647    83F9 7A         CMP ECX,7A                    ; lo compara con 7A (z)

0015E681    0FB648 06       MOVZX ECX,BYTE PTR DS:[EAX+6] ; mueve el séptimo valor del serial a ECX
0015E688    83F9 57         CMP ECX,57                    ; lo compara con 57 (W)

0015E6C2    0FB648 05       MOVZX ECX,BYTE PTR DS:[EAX+5] ; mueve el sexto valor del serial a ECX
0015E6C9    83F9 4F         CMP ECX,4F                    ; lo compara con 47 (O)

Por lo que podríamos crear un script de ODbg encargado de almacenar todas las comparaciones que realiza. Al realizar comprobaciones de los datos obtenidos por el script, los serial ingresados eran considerados como incorrectos por lo que por lógica deberían haber más comparaciones que si se cumplen se introduce un byte 0, por lo que encontré funciones muy similares pero con la gran diferencia que si estas se cumplían en vez de poseer la instrucción MOV BYTE PTR DS:[EDX],1 a continuación de JNZ SHORT, contenían la instrucción MOV BYTE PTR DS:[EDX],0, a consecuencia de esto cree un script que en un documento de texto me mostrara la comparación junto con un SI o un NO en donde SI es introducido cuando la instrucción siguiente a JNZ SHORT es MOV BYTE PTR DS:[EDX],1 y un NO cuando la instrucción siguiente a JNZ SHORT es MOV BYTE PTR DS:[EDX],0

Script:
Código
  1. VAR AUX
  2. VAR FSERIAL
  3. VAR SERIAL
  4. WRT "log.txt","Log:"                                                  
  5. INICIO:
  6. TICND  "byte [eip]==75 && byte [eip+1]==0F7"  
  7. BP eip+2
  8. RUN
  9. BC eip
  10. TICND  "byte [eip]==8B && byte [eip+1]==55"
  11. STI
  12. CMP edx,0012FAC5
  13. JE ENCONTRADO
  14. CMP edx,0012FAC8
  15. JE ENCONTRADO
  16. CMP edx,0012FAC7
  17. JE ENCONTRADO
  18. CMP edx,0012FACB
  19. JE ENCONTRADO
  20. CMP edx,0012FACA
  21. JE ENCONTRADO
  22. CMP edx,0012FAC9
  23. JE ENCONTRADO
  24. CMP edx,0012FAC4
  25. JE ENCONTRADO
  26. CMP edx,0012FAC6
  27. JE ENCONTRADO
  28. JMP INICIO
  29. ENCONTRADO:  
  30. MOV FSERIAL,ecx
  31. BUF FSERIAL
  32. STR FSERIAL  
  33. MOV SERIAL,[eip+2],1
  34. BUF SERIAL
  35. STR SERIAL
  36. STI
  37. ADD eip,2
  38. CMP [eip],C6,1
  39. JNE INICIO
  40. CMP [eip+1],02,1
  41. JNE INICIO
  42. CMP [eip+2],01,1
  43. JE SI
  44. NO:
  45. MOV AUX,"NO"
  46. JMP CONTINUAR
  47. SI:
  48. MOV AUX,"SI"
  49. CONTINUAR:
  50. WRTA "log.txt",FSERIAL
  51. WRTA "log.txt","=",""
  52. WRTA "log.txt",SERIAL,""
  53. WRTA "log.txt"," ",""
  54. WRTA "log.txt",AUX,""  
  55. jmp INICIO

El script debe ser ejecutado de la siguiente forma:
1)colocar BP en CALL ESI
2)iniciar el crackme (F9)
3)introducir el serial: 12345678 (ya que nos dará la referencia de la posición del dígito que se está comparando)
4)Se detendrá en el BP se debe quitar y entrar dentro del CALL (001CFFE8    55              PUSH EBP)

El script debe ser detenido una vez que hemos presionado aceptar a la alerta generada por la API MessageBoxA del serial incorrecto.

Una vez terminado el script si abrimos log.txt (documento de texto creado por el script) veremos lo siguiente:

En la primera linea:
el cuarto carácter es comparado con m y si este se cumple mueve dentro de EDX el byte 1.

Ya que el script logea las comparaciones de manera secuencial, la lógica sería buscar desde abajo hacia arriba una comparación con SI y luego buscar hacia abajo la misma comparación con un NO, si se encuentra la comparación el dígito es inválido en caso contrario el dígito es válido, para optimizar la búsqueda utilizaremos Excel, seleccionamos todo el contenido de log.txt y lo pegamos dentro de una nueva hoja de Excel:


Nos dirigimos a Datos->Filtro:


En la ubicación A1 ("Log:") contendrá un botón:


Seleccionamos el botón y nos vamos a Filtros de texto-> Comienza por...:


He introducimos 1:


De esta forma Excel filtrará de manera secuencial todos los datos que comienza con 1, en otras palabras nos mostrará todas las comparaciones realizadas con el primer dígito:


Copiamos el contenido filtrado en un nuevo documento de texto, nos dirigimos hasta el final y comenzamos a buscar "SI" de la siguiente manera:

De manera lógica estamos buscando la última comparación válida del dígito 1

Ya encontrado el "SI" buscamos hacia abajo la igualdad válida para saber si es anulada por un "NO" (En este caso está a la vista, pero en los demás dígitos no son tan visibles las igualdades válidas que más abajo se ven afectadas por un "NO"):


Si no se encuentra la comparación hemos encontrado un dígito válido:

en caso contrario debemos volver al "SI" encontrado y buscar nuevamente "SI" hacia arriba ya encontrado el primer dígito se debe filtrar nuevamente en Excel pero esta vez por los que comienzan en 2 y repetir el procedimiento de búsqueda hasta encontrar los ocho dígitos.

Una vez encontrado los ocho dígitos al introducir el serial, el crackme nos mostrará el siguiente mensaje:


Ya con un serial válido podemos obtener un Keygen:
1)debemos introducir el serial válido.
2)EJ: CAaC5EEs.
3)Si queremos saber todas las posibilidades del primer dígito vamos introduciendo números desde el "0" al "9", luego letras mayúsculas desde la "A" a la "Z" y letras minúsculas desde la "a" a la "z".

Pero el mensaje del serial incorrecto nos es un poco molesto, por lo que podríamos borrarlo, nos dirigimos a la string: "sorry, try harder!":


y llenamos con instrucciones NOP (Not operand) y agregamos un JMP tal como lo muestra la imagen:


Guardamos los cambios y ya podremos obtener los dígitos válidos para cada posición del serial con mayor comodidad.

La lista completa de posibles combinaciones es la siguiente:
Código:
   1ºD   2ºD   3ºD   4ºD   5Dº   6Dº   7ºD   8ºD
VA 1     4     2     8     4     7     1     4
   C     A     a     C     5     E     E     s
         B                 D     F
         C                 J     H
         E                 Ñ     K
         J                 P     L
         K                 U     M
         M                 ñ     N
         Ñ                       Ñ
         O                       Q
         Q                       R
         R                       S
         V                       U
         Z                       V
         a                       W
         g                       X
         i                       Y
         k                       g
         m                       h
         q                       i
         s                       j
         y                       ñ
                                 o
                                 q
                                 t
                                 z

Keygen:
Para el Keygen he tenido que suprimir las letras Ñ y ñ en cuanto a la generación del serial debido a que estoy iniciándome en el lenguaje ASM y estoy utilizando procedimientos pre-diseñados por lo que desconozco como solucionarlo y como trabajar directamente con APIS por lo que el Keygen es muy simple, pero cumple con su finalidad, aquí el código de fuente:

Código
  1. TITLE Keygen Russian Dolls (Keygen-Russian-Dolls.asm)
  2. ; Genera combinaciones de dígitos válidos para el crackme Russian Dolls
  3. ; Autor: UND3R
  4. ; Fecha: Miércoles 4 de enero de 2012
  5. INCLUDE c:\masm32\include\Irvine32.inc
  6. INCLUDELIB c:\masm32\lib\kernel32.lib
  7. INCLUDELIB c:\masm32\lib\Irvine32.lib
  8. INCLUDELIB c:\masm32\lib\User32.lib
  9. .data
  10. ; en el arreglo SegundoDigito se ha omitido la letra Ñ
  11. ; en el arreglo QuintoDigito se ha omitido la letra Ñ y ñ
  12. ; en el arreglo SextoDigito se ha omitido la letra Ñ y ñ
  13. PrimerDigito  BYTE 31h,"C"
  14. SegundoDigito BYTE 34h,"A","B","C","E","J","K","M","O","Q","R","V","Z","a","g","i","k","m","q","s","y"
  15. TercerDigito  BYTE 32h,"a"
  16. CuartoDigito  BYTE 38h,"C"
  17. QuintoDigito  BYTE 34h,35h,"D","J","P","U"
  18. SextoDigito   BYTE 37h,"E","F","H","K","L","M","N","Q","R","S","U","V","W","X","Y","g","h","i","j","o","q","t","z"
  19. SeptimoDigito BYTE 31h,"E"
  20. OctavoDigito  BYTE 34h,"s"
  21. Serial        BYTE 8 DUP(?)
  22. Color         BYTE ?
  23.  
  24. .code
  25. main PROC
  26.    call GetTextColor              ; obtiene el color de texto y fondo de la consola
  27. mov Color,al                   ; mue AL dentro del arreglo Color
  28.    call Randomize                 ; inicializa el valor de la semilla para el procedimiento RandomRange
  29.    call GenerarSerial
  30.    call MostrarSerial
  31. jmp main
  32. main ENDP
  33. GenerarSerial PROC
  34. ; Genera seriales válidos de manera aleatoria
  35. ; RECIBE:   NADA
  36. ; DEVUELVE: Serial válido en el arreglo sin inicializar "Serial"
  37. ;--------------------------------------------------------------------
  38. mov eax,sizeof PrimerDigito    ; mueve a EAX el número de valores del arreglo
  39. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  40. mov dl,[PrimerDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "PrimerDigito"
  41. mov [Serial],dl                ; mueve DL dentro del arreglo "Serial"
  42.  
  43. mov eax,sizeof SegundoDigito   ; mueve a EAX el número de valores del arreglo
  44. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  45. mov dl,[SegundoDigito+eax]     ; mueve a DL un valor aleatorio del arreglo "SegundoDigito"
  46. mov [Serial+1],dl              ; mueve DL dentro del arreglo "Serial"
  47.  
  48.    mov eax,sizeof TercerDigito    ; mueve a EAX el número de valores del arreglo
  49. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  50. mov dl,[TercerDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "TercerDigito"
  51. mov [Serial+2],dl              ; mueve DL dentro del arreglo "Serial"
  52.  
  53. mov eax,sizeof CuartoDigito    ; mueve a EAX el número de valores del arreglo
  54. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  55. mov dl,[CuartoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "CuartoDigito"
  56. mov [Serial+3],dl              ; mueve DL dentro del arreglo "Serial"
  57.  
  58. mov eax,sizeof QuintoDigito    ; mueve a EAX el número de valores del arreglo
  59. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  60. mov dl,[QuintoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "QuintoDigito"
  61. mov [Serial+4],dl              ; mueve DL dentro del arreglo "Serial"
  62.  
  63. mov eax,sizeof SextoDigito     ; mueve a EAX el número de valores del arreglo
  64. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  65. mov dl,[SextoDigito+eax]       ; mueve a DL un valor aleatorio del arreglo "SextoDigito"
  66. mov [Serial+5],dl              ; mueve DL dentro del arreglo "Serial"
  67.  
  68. mov eax,sizeof SeptimoDigito   ; mueve a EAX el número de valores del arreglo
  69. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  70. mov dl,[SeptimoDigito+eax]     ; mueve a DL un valor aleatorio del arreglo "SeptimoDigito"
  71. mov [Serial+6],dl              ; mueve DL dentro del arreglo "Serial"
  72.  
  73. mov eax,sizeof OctavoDigito    ; mueve a EAX el número de valores del arreglo
  74. call RandomRange               ; genera números aleatorios desde 0 hasta EAX - 1
  75. mov dl,[OctavoDigito+eax]      ; mueve a DL un valor aleatorio del arreglo "OctavoDigito"
  76. mov [Serial+7],dl              ; mueve DL dentro del arreglo "Serial"
  77. ret
  78.  
  79. GenerarSerial ENDP
  80. MostrarSerial PROC
  81.    mov ecx,8                      ; establece ECX = 8
  82.    mov esi,0                      ; establece ESI = 0
  83.    L2:
  84.    mov eax,16                     ; establece EAX = 16
  85.    call RandomRange               ; Genera un número aleatorio entre 0 y EAX - 15
  86. cmp eax,0                      ; compara EAX con 0
  87. je L2                          ; si EAX = 0 se dirige a la etiqueta L2 (Evita un texto negro junto con un fondo de igual color)
  88. call SetTextColor              ; Cambia el color de texto y de fondo de la consola, de acuerdo al valor de AL
  89.    L1:
  90. mov al,[Serial+esi]            ; mueve los dígitos del arreglo "Serial" a AL
  91. call WriteChar                 ; escribe un dígito del arreglo "Serial" en la consola
  92. inc esi                        ; aumenta en uno esi
  93. loopd L1                       ; decrementa ECX y si ECX no es cero se dirige a la etiqueta L1
  94. call Crlf                      ; desplaza el cursor abajo, hacia la derecha
  95. mov al,[Color]                 ; mueve el contenido del arreglo Color a AL
  96. call SetTextColor              ; Cambia el color de texto y de fondo de la consola, de acuerdo al valor de AL
  97. call WaitMsg                   ; se espera que el usuario presiona alguna tecla para continuar
  98. call Clrscr                    ; limpia el contenido de la consola
  99. ret
  100.  
  101. MostrarSerial ENDP
  102. END main

En el cada vez que presionemos una tecla nos mostrará seriales distintos:


IMPORTANTE:
Si el serial es copiado directamente y no es introducido de manera manual o ni si quiera un dígito, el crackme lo considera como inválido pudiendo ser este verdadero.

UND3R



Pack de descarga:
-Crackme modificado sin el mensaje de serial incorrecto
-Código de fuente Keygen .asm
-Seriales correctos.txt
-Crackme
-Keygen
-Script
-log.txt

LINK: http://www.mediafire.com/?nxlnml8nx4i8dvb
179  Foros Generales / Dudas Generales / Como quitar datos repetidos de excel considerando mayus y minus? en: 3 Enero 2012, 04:11 am
pues eso ya que trae un botón que dice borrar datos repetidos, pero no considera las mayúsculas y minúsculas

180  Programación / Scripting / [Solucionado][Duda] eliminar doble palabra incluyendo la primera en un texto... en: 2 Enero 2012, 01:22 am
Hola a todos, bueno estoy buscando la forma de poder eliminar las palabras repetidas de un .txt

buscando por Internet encontré el siguiente código que funciona casi a la perfección:
Código
  1. echo off
  2.  
  3. set /a x=1
  4.  
  5. for /f "tokens=1 delims=" %%a in (token4.txt) do (
  6. rem echo %%a
  7. echo %%a > %%a.test
  8. )
  9.  
  10. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  11. echo %%a>>semifinish.txt
  12. )
  13.  
  14. echo  > finish.txt
  15.  
  16. for /f "tokens=1,2 delims=." %%a in (semifinish.txt) do (
  17.  
  18. echo %%a >>finish.txt
  19. rem echo %%b
  20.  
  21. rem echo %%p
  22.  
  23. )
  24.  
  25. for /f "tokens=* delims= " %%a in ('dir /B "*.test"') do (
  26. del "%%a"
  27. )
  28.  
  29. del semifinish.txt

Si en token4.txt tiene:
Código:
1
1
2
3
4
4
5
6

me queda un finish.txt de esta manera:
Código:
1
2
3
4
5
6

Pero me gustaría hacerle una modificación para que borrara los dos números que se repitieron es decir que usando el mismo ejemplo anterior me devolviera:
Código:
2
3
5
6

En palabras simples borrar ambas palabras o números repetidos.

Espero su ayuda, muchas gracias
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 39
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines