Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: 43H4FH44H45H4CH49H56H45H en 18 Marzo 2011, 09:07 am



Título: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: 43H4FH44H45H4CH49H56H45H en 18 Marzo 2011, 09:07 am
Operaciones matemáticas básicas en vb6
keygen DocCF - Software de Gestión Escolar

Materiales:   Olly Parcheado 5
Victima :        DocCF - Software de Gestión Escolar  versión 2.2

(http://www.imagengratis.org/images/1gd3gg.jpg)

Luego de instalar e ingresar al registro del programa colocamos un BP en vbaStrcomp cuando estamos en el form de registro y podemos ver que la comparación se realiza con el resultado de algunas operaciones matemáticas tanto del número que ingresamos como del número generado por el programa  y no con los números mismos.

(http://www.imagengratis.org/images/2uh9eu.jpg)

Puesto que son operaciones matemáticas podemos utilizar vbaR8Str para ver de dónde saca los valores de comparación, traceando un poco se puede ver que obtiene los valores de
Código:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Grupo CF Developer\DocCF
y en mi caso los que nos interesan son los siguientes:
Setting1 = 10838093996047972805767
Setting3 = 10061210012438047703422


Seguimos traceando y vemos que utiliza los dos primeros números de Setting3 para sumarles 3 y luego 1 con FADDP los resultados de cada operación podemos verlos en ST0,ST1,ST2,… en Registers FPU
 
(http://www.imagengratis.org/images/3ai2da.jpg)

Seguimos traceando y vemos que la suma de los 2 primeros números de setting3 (10) + 3 + 1 = 14 es utilizado para obtener la siguiente subcadena para leer 3 caracteres a partir de ese número que en mi caso seria 1006121001243 804 7703422 el cual se resta de 999

(http://www.imagengratis.org/images/4ws5mw.jpg)

Código:
FSUBP
ST=804.00000000000028730
ST(1)=999.00000000000057460
--------------------------
195 (Resultado)
y el resultado es dividido entre 3:
Código:
FDIVP
195 / 3
---------
65       // resulta a primera parte de la cadena de comparación

Bueno ya no utilizare imágenes, solo mostrare las operaciones que se realiza en la cadena de setting3.
Luego se suma con FADDP
Código:
4 + 13
-----
17
el cual es utilizado para obtener la siguiente subcadena 1006121001243804 770 3422 luego se multiplica
Código:
FUMLP
3*3 (el multiplicador equivale al número de caracteres que tiene la subcadena, en otros casos puede ser 4)
-----
9
se resta 9 de la subcadena previamente convertida a entero:
Código:
FSUB RESTA
ST=9.0000000000000028730
ST(1)=770.00000000000028730
------------------------
761     //este número luego de convertirse a string se concatena a la primera parte de la cadena de comparación y quedaría  65761
Luego se realiza la suma
Código:
FADDP
13+4
----
17
3+17=20    //que se usa para obtener la ultima subcadena.
1006121001243804770 3422
Luego de pasarlo a entero este se realiza la resta
Código:
FSUBP
3422-5997
----------
2575   y el resultado se divide
FDIV DIVIDE
2575 / 5
--------
515     //obtenemos la ultima parte de la cadena de comparación 65761515
Ya tenemos las operaciones que se realiza a partir de setting3 y que forman la cadena de comparación.

Analizando Setting1
Luego de tracear un poco vemos que ingresa el valor de setting1 que es el número que necesitamos para validar el software en mi caso es Setting1 = 10838093996047972805767 utiliza los 2 primeros números, los pasa a entero, le suma 3 y 1 = 14
1083809399604 797 2805767
Código:
810-797  = 13   /7 = 1,85714285714286  //Esta es la primera parte de la cadena de comparación
Luego de unas sumas se obtiene la siguiente subcadena  1083809399604797 2805 767 se multiplica:
Código:
FUMLP  (4 equivale al número de caracteres que se tomo de la cadena original)
4*9=36    luego se resta:
FSUBP
2805-36 = 2769    //La segunda parte que se concatena a la cadena de comparación.
Luego de unas sumas se obtiene la última subcadena  10838093996047972805 767 la cual se resta:
Código:
FSUBP
4005-767 = 3238     /3 = 1079,33333333333

Y queda UNICODE "1,8571428571428627691079,33333333333" la cual es comparada como vimos al comienzo:
 
(http://www.imagengratis.org/images/2uh9eu.jpg)

Ya sabemos cómo realiza las operaciones ahora solo queda revertirlas, simplemente dividimos la cadena de comparación que en mi caso es 65761515 tomo el primer número 6 5761515 y lo multiplico por 7 y lo resto a 810 con eso ya tengo para sustituir:
Código:
Valor que escribió el programa:  10838093996047972805767
Valor que se modificara:               1083809399604 768 2805767
Tomo los siguientes 4 números (6 5761 515)  y les sumo 36 quedara en 5797 y lo sustituyo
Valor que escribió el programa:  10838093996047972805767
Valor que se modificara:               1083809399604768 5797 767
Tomo los últimos 3 números (65761 515) multiplico por 3 y lo resto de 4005 dando como resultado 2460 cambiamos los últimos valores:
Valor que escribió el programa:  10838093996047972805767
Valor que se modificara:  10838093996047685797 2460
Y ya tenemos nuestra serie armada 108380939960476857972460 lista para probar, así que ya podemos realizar el keygen.

(http://www.imagengratis.org/images/6fs9cf.jpg)

(http://www.imagengratis.org/images/5tz7gt.jpg)

Hay una variable más dependiente de la fecha que hace variar el numero de caracteres que lee para la multiplicación y resta de la 2da parte de las operaciones, como este tutorial está hecho para los que les interesa la Ingeniería Inversa, no lo especifico porque al tracear verán a que me refiero y así evitamos que algunas personas obtengan el serial valido solo copiando el tutorial sin aprender nada.

Para probar el string (en mi caso 65761515) que el programa genera para la comparación hice un pequeño programa en c++ para demostrar  el análisis hecho.

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <windows.h>
  5. int iValor(std::string cad);
  6. std::string sValor(int num);
  7. std::string leerValorREG_SZ(HKEY Registry, const std::string &sClave, const std::string &sValor);
  8. char *cRetorno(const std::string &sSource);
  9. int main()
  10. {
  11. std::string sClaveReg ="Software\\VB and VBA Program Settings\\Grupo CF Developer\\DocCF";
  12. std::string sValorReg ="Setting3";
  13. std::string sInfoRegistro = leerValorREG_SZ(HKEY_CURRENT_USER,sClaveReg,sValorReg);
  14. std::string sResult = "";
  15. std::string sNumeroBuscado = "";
  16. // Asignamos a un entero los primeros 2 numeros
  17. int iInicio = iValor(sInfoRegistro.substr(0,2).c_str())+3;
  18. int iResult = 0;
  19. //Asignamos a un string 3 numeros a partir de iInicio y convertimos en un entero
  20. sResult = sInfoRegistro.substr(iInicio,3);
  21. iResult = (999 - iValor(sResult))/3;
  22.  
  23. //añadimos el valor de la 1ra operacion a el string que contendra el numero buscado
  24. sNumeroBuscado.append(sValor(iResult));
  25.  
  26. //procesamos la siguiente subcadena, asignamos a un string, luego a un entero y realizamos la 2da operacion
  27. //añadimos el valor de la 2da operacion a el string que contendra el numero buscado
  28. iInicio = iInicio + 3;
  29. sResult = sInfoRegistro.substr(iInicio,3);
  30. iResult = iValor(sResult)-9;
  31. sNumeroBuscado.append(sValor(iResult));
  32.  
  33. //procesamos la ultima subcadena, asignamos a un string, luego a un entero y realizamos la 3era operacion
  34. //añadimos el valor de la 3ra operacion a el string que contendra el numero buscado
  35. iInicio = iInicio + 3;
  36. sResult = sInfoRegistro.substr(iInicio,4);
  37. iResult = (5997 - iValor(sResult))/5;
  38. sNumeroBuscado.append(sValor(iResult));
  39.  
  40. //Imprimimos el numero buscado el que debera compararse con el resultado del setting1
  41. std::cout << sNumeroBuscado << std::endl;
  42. std::cin.get();
  43. return EXIT_SUCCESS;
  44. }
  45. int iValor(std::string cad)
  46. {
  47. int temp = atoi(cad.c_str());
  48. return temp;
  49. }
  50. std::string sValor(int num)
  51. {
  52. std::string sTemp;
  53. std::stringstream ssTemp;
  54. ssTemp << num;
  55. sTemp = ssTemp.str();
  56. return sTemp;
  57. }
  58. std::string leerValorREG_SZ(HKEY Registry, const std::string &sClave, const std::string &sValor)
  59. {
  60. unsigned char infoValor [1024];
  61. char infocadena [1024];
  62. std::string sClaveLeida="";
  63. HKEY hKey;
  64. LONG lStatus;
  65.    DWORD dwType;
  66.    DWORD dwSize;
  67.    dwType=REG_SZ;
  68.    dwSize=1023;
  69. int i=0;
  70. lStatus = RegOpenKeyEx(Registry,cRetorno(sClave),0,KEY_READ,&hKey);
  71.    if (lStatus == ERROR_SUCCESS)
  72.    {
  73.         lStatus = RegQueryValueEx(hKey,cRetorno(sValor), 0,&dwType, (LPBYTE)&infoValor, &dwSize);
  74.         if (lStatus == ERROR_SUCCESS)
  75.         {  
  76. for(i=0;infoValor[i]!=0 && infoValor[i]!=204;i++)
  77. {
  78.  infocadena[i]=(char)infoValor[i];
  79. }
  80. infocadena [i]='\0';
  81. sClaveLeida.assign(infocadena);
  82. RegCloseKey(hKey);
  83. return sClaveLeida;
  84.         }  
  85.      }
  86.     RegCloseKey(hKey);
  87.     return "No se puede obtener el valor";
  88. }
  89. char *cRetorno(const std::string &sSource)
  90. {
  91. int iTotal = strlen(sSource.c_str());
  92. char *temp = new char[iTotal+1];
  93. strncpy_s(temp,iTotal+1, sSource.c_str(),iTotal+1);
  94. temp[iTotal]='\0';
  95. return temp;
  96. }

Para que funcione en las propiedades del proyecto debe cambiarse Juego de caracteres = Utilizar juego de caracteres multibyte.
Y bueno ya es tarde por aqui, asi que si se me paso algo o si hay alguna duda favor avisar  ;D
Saluos  :P

PD: Favor de no enviarme pedidos del Keygen por MP o en este tema  :-\ puesto que lo visto ahora es solo de caracter educativo para los que practican la Ingeneria Inversa y no para personas particulares que buscan activar este programa  :-X .


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: hainner en 18 Abril 2011, 06:28 am
Muchas gracias me ha servido de mucho.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: p3p3l3p3w en 18 Abril 2011, 18:58 pm
Hola muchas gracias 43H4FH44H45H4CH49H56H45H por este tuto tan completo, para mi es un reto personal no con fines comerciales.

Para mi PC
setting3: 10677656774538016261512
setting1: 10449162721633910456936
Cadena de comparacion: 66617897

número de activacion: 104491627216376866531314

Pero sigue siendo invalido para registrar, lo siento pero aún no he podido encontrar la comparación del serial para hacer fishing o comprobar los pasos de mi serial con la rutina mostrada.  Muchas gracias por la ayuda


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: 79137913 en 18 Abril 2011, 19:18 pm
HOLA!!!

Mmm... Esto me trae una duda a la mente, ¿por que muchas veces una seguidilla de "3" es una activacion valida (sea Juegos y/o programas de Sierra o el Mismo Office de Windows)?

GRACIAS POR LEER!!!


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: jackgris en 30 Abril 2011, 19:36 pm
Gracias por el tutorial


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: Bucay en 8 Julio 2011, 19:46 pm
Saludos a todos,

Me interesa la ingeniería inversa y en este caso  con materiales Olly Parcheado 5 y de victima a DocCF - Software de Gestión Escolar  versión 2.2,
debo entender el algoritmo descrito en el tema, los comentarios de sus participantes.

Al parecer el carácter numérico de la cadena ubicado en lugar: dado al tomar los dos primeros caracteres convertiros a números y sumarles 3 en el setting3 es el multiplicador cuestionado para hallar la cadena de comparación. Si empieza por 10 es 10+3=13 y observamos en esa posición el número 3; pero si empieza por 09 es 09+3=12 y observamos en esa posición el número 4. Lo anterior es motivo para cambiar la longitud de la cadena de comparación evidentemente.

De manera similar ocurre con el setting1 el cual es evaluado y comparado al iniciar el software para comprobar si está o no registrado; es por eso que debemos cambiarlo a un valor 4 (en el caso del 10+3=13) en el caso de tener una cadena de comparación de longitud 8 ya que de ésta tomados el primer carácter y los tres últimos (8-1-3=4); o convenientemente cambiarlo a un valor 5 (en el caso del 09+3=12) en el caso de tener una cadena de comparación de longitud 9 ya que de ésta tomados el primer carácter y los tres últimos (9-1-3=5). Una vez realizado lo anterior procedemos al algoritmo de modificación del setting1…

Gracias a hainner por su orientación.

Bucay


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: apuromafo CLS en 16 Julio 2011, 10:01 am
genial ver el interes por la aplicacion
a modo de historia felicito por lo escrito y comparto el antiguo tutorial de SEQUEYO  cuando estaba en P-code

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/701-800/790-P-CODE-DocCF%20por%20SEQUEYO.rar

favor confirmar las matematicas ^^ y espero que sirvan ambos tutoriales y el .xls ^^

saludos Apuromafo


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: farma en 16 Julio 2011, 12:33 pm
Genial, a por ello!

Muchas gracias.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: Иōҳ en 17 Julio 2011, 21:00 pm
Imagen no disponible =/.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: .:UND3R:. en 19 Julio 2011, 00:52 am
Imagen no disponible =/.

+1


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: Lobezno_XMen en 19 Julio 2011, 10:56 am
hola me he bajado la version de la web de ellos, es la v.2.3 he probado la hoja de calculo pero no consigo sacar el serial correcto... me podeis ayudar

dejo los datos de regedit

MOD EDIT: Aquí se enseña a pescar. No regalamos pescado.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: hainner en 21 Julio 2011, 22:57 pm
Intenta con:
MOD EDIT: Aquí se enseña a pescar. No regalamos pescado.
 :silbar:

Saludos,


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: apuromafo CLS en 22 Julio 2011, 00:36 am
para las respuestas #1/ #8 y #9

las imagenes del tutorial quedaron en:

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1301-1400/1313-Operaciones%20matem%c3%a1ticas%20b%c3%a1sicas%20en%20vb6.rar



Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: ferna65 en 27 Agosto 2011, 08:52 am
hola tengo la version  v.2.3 he probado la hoja de calculo pero no consigo sacar el serial correcto... me pueden ayudar
dejo los datos de regedit

MOD EDIT: Aquí se enseña a pescar. No regalamos pescado.

http://foro.elhacker.net/ingenieria_inversa/operaciones_matematicas_basicas_en_vb6_keygen_doccf_software_de_gestion-t322174.0.html#ixzz1WDICzEj7


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: hainner en 24 Septiembre 2011, 19:45 pm
Gracias por participar...
Saludos


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: GuzmanDiaz18 en 21 Febrero 2012, 23:12 pm
Espero que puedas re subirlo a otro Gestor de Archivos.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: bartercarl en 27 Marzo 2012, 09:03 am
Creo que este software de gestión para las operaciones matemáticas funcionan bien. Yo siempre trato de encontrar algunas ideas de la nueva escuela de manejo. Por favor, comparta algunas ideas frescas para la gestión escolar.

__________________________
Gestion escolar (http://softaula.net/)


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: fireh en 29 Abril 2013, 05:23 am
Saludos especiales.... hay una nueva version la 2.5 que opinan los gurus respecto a  que en el registro de windows se muestra los setting 1,2,3... ya no con números sino con simbolos como este †R Bê³:7sù‹*5à@ÝJª”% como una especie de encriptacion. Que hacer en ese caso?

Muchas gracias.


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: ea3000 en 23 Noviembre 2014, 16:49 pm
Hoy me encontré con la versión 2.8 de este soft, le metí mano y pude revisarlo con algo de paciencia y me di cuenta de lo siguiente:

Como primera Pista en el Regedit Guarda las Siguientes Lineas:
https://mega.co.nz/#!QgV2EZRQ!6QAkU97AO5jRtfQeRc4ENvYwol4vbJTaLHAGXo8X8es

Cogí el Decompiler para obtener referencia de lo que encontré en el regedit y me encontre estas suculentas lineas: (Una comparativa 2 IF que apuntan a 2 procesos)
En el formulario FrmAbut donde activamos el programa
 
Proc_80_1_8E03B4(Me.txtSerie.Text)
Proc_70_0_8D5F74(Me.txtNA.Text)

https://mega.co.nz/#!hhsX3TJL!ON_qyRhVTyAqr2OXQdUTh1sAy5vs0lX3WmSJt36rybY

Al analizar los procesos no son otra cosa mas que un armado de cadenas a partir de la serie que genera el programa, y la validación que ingresamos nosotros.

Para luego comparar su igualdad luego de encriptarlos

Se me ocurrió con el olly remplazar el llamado a dichos procesos para generar la cadena con el mismo proceso para TXTSerie y TXTNA,
Tenia estos 2 PRocesos para trabajar 8E03B4 y el 8D5F74

https://mega.co.nz/#!tldUXLiB!OSqgWKGfqsCWxdtRxdxijHnmwmVyf5v-PzXLH_ubq4A

Al modificar el llamado y dejar:
8E03B4(Me.txtSerie.Text)
8E03B4(Me.txtNA.Text)

Note que Se activaba el programa pero al cerrarlo perdía la activación, intente ahora lo opuesto.

8D5F74(Me.txtSerie.Text)
8D5F74(Me.txtNA.Text)

https://mega.co.nz/#!t1FGjDwC!5XsN6YECbpSuUWlegQZ_zTsXA4k5xrJFGsNSbAmTmJc

para hacer que el numero generado coincida en ambos casos solo tendría que ingresar en numero de activación el mismo numero que el sistema genera en el campo serie.

https://mega.co.nz/#!0sVDwKDJ!Nk1518Db6S0c2MudkYOF2bwlWdVjLYIFZrEINEfMqWA

Y Listo.

https://mega.co.nz/#!4h0VARIb!I5h2p_4V71YXcOi-uWSc5A1BnidYhyaCSAKMoJ2jfNs

Ahora la tarea es variar los últimos dígitos del numero ingresado en el Numero de Activación, para activarlo como Servidor y como Monopuesto... Se los dejo de tarea a ver si lo encuentran... ;)

Saludos,
EA3000



Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: alfoc en 24 Diciembre 2014, 16:41 pm
Cordial saludo,

Por curiosidad que significa "variar los últimos dígitos del numero ingresado en el Numero de Activación, para activarlo como Servidor y como Monopuesto", es que no entiendo lo de servidor y como Monopuesto.

agradeciendo su atencioón y colaboración a la misma

AlfoC


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: MCKSys Argentina en 26 Diciembre 2014, 00:49 am
Cordial saludo,

Por curiosidad que significa "variar los últimos dígitos del numero ingresado en el Numero de Activación, para activarlo como Servidor y como Monopuesto", es que no entiendo lo de servidor y como Monopuesto.

agradeciendo su atencioón y colaboración a la misma

AlfoC

Significa algo como esto (http://en.wikipedia.org/wiki/Brute-force_search).

Saludos!


Título: Re: Operaciones matemáticas básicas en vb6 - keygen DocCF (Software de Gestión)
Publicado por: ainnecken en 29 Mayo 2015, 17:21 pm
hola tengo la version  v.2.3 he probado la hoja de calculo pero no consigo sacar el serial correcto... me pueden ayudar

dejo los datos de regedit, y muchas gracias

MOD EDIT: Aquí se enseña a pescar. No regalamos pescado.