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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayudita con un pequeño FOR anidado por favor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayudita con un pequeño FOR anidado por favor  (Leído 1,627 veces)
Fucko

Desconectado Desconectado

Mensajes: 239


Fucko the Clown Rules!!!


Ver Perfil WWW
Ayudita con un pequeño FOR anidado por favor
« en: 4 Abril 2014, 10:09 am »

Buenas, estoy estudiando el comportamiento de un soft, usé el ida pro para decompilarlo y ver que es lo que hace...

voy bastante bien....

solo que ahora, me encuentro con esto, y estoy atorado jejejejeje

probé verlo en assembler, que más o menos lo entiendo para reversing, pero se hace un choclo terrible....


Código:
//----- (00401C6F) --------------------------------------------------------
int __cdecl sub_401C6F(unsigned int a1, const void *a2)
{
  int v3; // eax@16
  int v4; // eax@16
  int v5; // eax@16
  int v6; // eax@16
  int v7; // eax@16
  char v8; // [sp+27h] [bp-51h]@3
  signed int j; // [sp+28h] [bp-50h]@3
  signed int i; // [sp+2Ch] [bp-4Ch]@1
  signed int k; // [sp+2Ch] [bp-4Ch]@10
  signed int l; // [sp+2Ch] [bp-4Ch]@13
  char v13[8]; // [sp+70h] [bp-8h]@6

  memset(byte_4164C0, 0, 0x48u);
  memcpy(byte_4164C0, a2, 8u);
  for ( i = 0; i <= 7; ++i )
  {
    v8 = byte_4164C0[i];
    for ( j = 0; j <= 7; ++j )
    {
      *(&v13[8 * i - 64] + j) = v8 < 0;
      v8 *= 2;
    }
  }

se que se llenan 48 bytes de 0, luego copia desde una dirección de memoria del programa, lo que sería a2, que es B1 C2 52 33 AF 8B 33 49

Y eso lo copia a 4164c0

pero no entiendo que hace en el for, en esta parte

Código:
*(&v13[8 * i - 64] + j) = v8 < 0;
      v8 *= 2;

si alguien me puede orientar, se lo agradezco :)
gracias


En línea

Cree en los que buscan la verdad, duda de los que la han encontrado...
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayudita con un pequeño FOR anidado por favor
« Respuesta #1 en: 4 Abril 2014, 10:21 am »

&v13[8 * i - 64] obtiene un puntero a la posición 8*i-64 del array v13

&v13[8 * i - 64] + j suma "j" a la posición calculada anteriormente

*(&v13[8 * i - 64] + j) = v8 < 0; almacena en la posición calculada en el paso anterior un 1 si v8 es menor que cero y un cero en caso contrario.

v8 *= 2; multiplica por dos el valor almacenado en v8 ( almacenando el resultado en v8, por supuesto)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Un pequeño favor
Diseño Gráfico
™Carlos.® 2 1,720 Último mensaje 30 Noviembre 2005, 17:38 pm
por ™Carlos.®
Una ayudita por favor!
Programación Visual Basic
Makoto 5 3,477 Último mensaje 3 Abril 2006, 16:41 pm
por Cicklow
una ayudita por favor
Diseño Gráfico
pumass 5 2,599 Último mensaje 15 Junio 2006, 19:21 pm
por pumass
Ayuda por favor; duda con pequeño programa de C
Programación C/C++
feuersee 1 1,868 Último mensaje 5 Diciembre 2014, 00:10 am
por Kherom
como se hace un drownlist anidado en c#
.NET (C#, VB.NET, ASP)
Artanist 1 1,838 Último mensaje 15 Junio 2017, 20:04 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines