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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / Ingeniería Inversa / Re: Desensamblando Visual Basic 6.0 en: 15 Febrero 2020, 08:48
Cito unas referencias que dejó MCKSys Argentina (gracias) en otro post por ahí, y que me han sido de utilidad

Citar
Disassembling 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  Programación / Ingeniería Inversa / Re: [Reto] Crackme Loki-Mouse Flamer en: 10 Noviembre 2019, 05:01
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
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <string>
  5. #include <random>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. int randomnumber()
  11. {
  12.    int Min = 33;
  13.    int Max = 126;
  14.  
  15.    int Number = std::rand() % (Max + 1 - Min) + Min;
  16.  
  17.  
  18.    return Number;
  19.  
  20. }
  21.  
  22. int main()
  23. {
  24.  
  25. std::srand(std::time(nullptr)); //seed
  26.  
  27.    string key = "1234567899";
  28.  
  29.    bool finish = true;
  30.  
  31.    while(finish)
  32.    {
  33.        unsigned char a = randomnumber();
  34.        unsigned char b = randomnumber();
  35.        unsigned char c = randomnumber();
  36.        unsigned char d = randomnumber();
  37.        unsigned char e = randomnumber();
  38.        unsigned char f = randomnumber();
  39.        unsigned char g = randomnumber();
  40.        unsigned char h = randomnumber();
  41.        unsigned char i = randomnumber();
  42.        unsigned char j = randomnumber();
  43.  
  44.        key[0] = a;
  45.        key[1] = b;
  46.        key[2] = c;
  47.        key[3] = d;
  48.        key[4] = e;
  49.        key[5] = f;
  50.        key[6] = g;
  51.        key[7] = h;
  52.        key[8] = i;
  53.        key[9] = j;
  54.  
  55.  
  56.        signed int caux;
  57.  
  58.        if(a+f>104)
  59.        {
  60.            finish = false;
  61.        }
  62.  
  63.        caux = (signed char) e;
  64.        caux = caux - 0x30;
  65.  
  66.        a += b;
  67.  
  68.        f += a;
  69.  
  70.        f = f - 0x90;
  71.  
  72.        int eax, edx;
  73.        edx = 0x66666667;
  74.        eax = f;
  75.        long long result = (long long) eax * (long long) edx;
  76.        eax = result & 0xffffffff;
  77.        edx = result >> 32;
  78.  
  79.        edx = edx >> 2;
  80.  
  81.        eax = f;
  82.  
  83.        eax = eax >> 0x1F;
  84.        edx -= eax;
  85.  
  86.        eax = edx;
  87.  
  88.        eax = eax << 2;
  89.        eax += edx;
  90.        eax += eax;
  91.  
  92.        f -= eax;
  93.  
  94.        if(f != caux)
  95.        {
  96.            finish = true;
  97.        }
  98.  
  99.        if(c > 0x32)
  100.        {
  101.            finish = true;
  102.        }
  103.        if(d <= 0x35)
  104.        {
  105.            finish = true;
  106.        }
  107.  
  108.  
  109.    }
  110.  
  111.    cout << key << endl;
  112.  
  113.    return 0;
  114.  
  115.  
  116. }
  117.  


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.
Páginas: [1]
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines