Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Acronys

#1
Cito unas referencias que dejó MCKSys Argentina (gracias) en otro post por ahí, y que me han sido de utilidad

CitarDisassembling Visual Basic Applications por Sanchit Karve
Visual Basic Image Internal Structure Format por Alex Ionescu
Visual Basic Reversed - A decompiling approach por AndreaGeddon
Teorías sobre VB de la web de Ricardo Narvaja (www.ricardonarvaja)
    Teoría 011-Olly y Visual Basic por COCO
    Teoría 012-Olly y Visual Basic 2 por COCO
    Teoría 061-Olly y Visual Basic 3 por COCO
    Teoría 190-Olly y Visual Basic 4 por COCO
    Teoría 235-Punto Magico VB6 por ARAPUMK
    Teoría 236-Punto MagicoII VB6 por ARAPUMK
    Teoría 242-OEP en VB por ARAPUMK
Script IDC para IDA® de Reginal Wong

Y anexo una página útil que tiene recopilado bastante info respecto al reversing de vb6

http://sandsprite.com/vb-reversing/
#2
Que mejor explicación que la de karmany

Dejo mi key porsia:

y=2\4Vvs+B

Dejo mi código fuente ya que en mi caso lo hice con la tabla de caracteres ASCII.

Y bueno, llego un poco tarde pero lo hice. También atareado con otras cosas pero que he querido dedicarle a esto mas tiempo.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <random>


using namespace std;

int randomnumber()
{
   int Min = 33;
   int Max = 126;

   int Number = std::rand() % (Max + 1 - Min) + Min;


   return Number;

}

int main()
{

std::srand(std::time(nullptr)); //seed

   string key = "1234567899";

   bool finish = true;

   while(finish)
   {
       unsigned char a = randomnumber();
       unsigned char b = randomnumber();
       unsigned char c = randomnumber();
       unsigned char d = randomnumber();
       unsigned char e = randomnumber();
       unsigned char f = randomnumber();
       unsigned char g = randomnumber();
       unsigned char h = randomnumber();
       unsigned char i = randomnumber();
       unsigned char j = randomnumber();

       key[0] = a;
       key[1] = b;
       key[2] = c;
       key[3] = d;
       key[4] = e;
       key[5] = f;
       key[6] = g;
       key[7] = h;
       key[8] = i;
       key[9] = j;


       signed int caux;

       if(a+f>104)
       {
           finish = false;
       }

       caux = (signed char) e;
       caux = caux - 0x30;

       a += b;

       f += a;

       f = f - 0x90;

       int eax, edx;
       edx = 0x66666667;
       eax = f;
       long long result = (long long) eax * (long long) edx;
       eax = result & 0xffffffff;
       edx = result >> 32;

       edx = edx >> 2;

       eax = f;

       eax = eax >> 0x1F;
       edx -= eax;

       eax = edx;

       eax = eax << 2;
       eax += edx;
       eax += eax;

       f -= eax;

       if(f != caux)
       {
           finish = true;
       }

       if(c > 0x32)
       {
           finish = true;
       }
       if(d <= 0x35)
       {
           finish = true;
       }


   }

   cout << key << endl;

   return 0;


}



Edit: Ah, una cosa que me pareció interesante que no me acordaba era que podía utilizar las instrucciones en asm mas directo que lo que hice yo. Gracias Karmany jeje

Gracias por el reto Flamer.