Autor Tema: Compilar proyectos vbp sin abrirlos en el IDE  (Leído 15140 veces)

0 Usuarios y 1 Visitante están viendo este tema.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #15 en: Agosto 16, 2014, 09:05:42 pm »
como lo estas probando? donde estas generando el bat ?
Prueba con el flag /outdir

queda así
Código: [Seleccionar]
@echo off
start "" "C:\Archivos de programa\Microsoft Visual Studio\VB98\vb6" /m "c:\missofts\soft1\myProyecto.vbp" /outdir "C:\Prueba\"
« última modificación: Agosto 16, 2014, 11:36:45 pm por raul338 »

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #16 en: Agosto 16, 2014, 11:05:39 pm »
o bien poner un "cd C:\Prueba\" y recien ahi ejecutar.
PD raul, ponele comillas al path del VB6 ya que tiene espacios!
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #17 en: Agosto 20, 2014, 05:20:36 pm »
Muy interesante este post, se me habia pasado, no lo habia visto.

Bazooka como lo resolviste?

Muy buena la idea de Albertomi:
Citar
Me explico, en tú archivo .EXE declara una constante del tipo String y asígnale un valor este valor será el número de dispositivo USB (encriptado y con longitud fija) luego con un editor binario identifica en que posición se ubica el valor y reemplaza o editas dichos bits con el valor que corresponda
No sabia eso, quiere decir que si tengo una constante tipo string en mi exe, abro el exe y veo el string tal cual?
Si lo reemplazo, reemplazando exactamente los mismos bytes, al alterar el archivo Exe, no se corrompe el exe? se ejecutara sin problemas?

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #18 en: Agosto 20, 2014, 06:40:47 pm »

Estimado Waldo




El archivo no se corrompe, siempre y cuando no toques más bit de los que se debe.


Adjunto imagen en donde se observa el valor asignado a la constante en el IDE de VB y donde se ubica dentro del editor Hexadecimal.


Hay que tener presente que el valor de la constante se almacena como Unicode, por eso las H están separadas por un punto.




Imagen:
  https://onedrive.live.com/redir?resid=28C2A6606AE1B6DF!340&authkey=!AKavGHsEXRZ8eCs&v=3&ithint=photo%2cpng




Otra técnica que se puede aplicar es la usada por los compresores de ejecutables, pero es un poco más compleja pues hay que recalcular los puntos de entra.
 


Saludos, desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #19 en: Agosto 20, 2014, 07:38:32 pm »
Una pregunta Albertomi, para ofuscar la constante funcionaria bien si esta se le "parte", Digamos mi variable string se llama Clave y contiene "Mipassword23" y hago algo como esto:

R = "23"
codigo...
O = "pa"
codigo..
M = "wo"
codigo..
J = "rd"
codigo...
I = "pass"
codigo...
L = "Mi"

Y luego:
If L & I & M & J & R = Text1.Text Then Pasa Else NoPasa

Se que es un poco burdo pero siempre me dio esa inquietud, no lo se comprobar pero usando ese visor hexadecimal se puede saber que contiene la concatenación: L & I & M & J & R
?

Gracias
Me encuentras en YAcosta.com

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #20 en: Agosto 21, 2014, 01:36:52 am »
Estimado YAcosta
 
 
Veamos este sería tú código escrito de forma normal:
 
Código: [Seleccionar]
Dim strClave As String
 
strClave = "Mipassword23"
 
If strClave = Text1.Text Then Pasa Else NoPasa

Y examinandolo con el editor hexadecimal la variable strClave se ve así:
 

 
 

Ahora una forma simple de ofuscar es haciendo uso de la funcion Chr como siguiente:
Código: [Seleccionar]
Dim strClave As String
 
strClave = Chr(77) & Chr(105) & Chr(112) & Chr(97) & Chr(115) & Chr(115) & Chr(119) & Chr(111) & Chr(114) & Chr(100) & Chr(50) & Chr(51)
 
If strClave = Text1.Text Then Pasa Else NoPasa

 
Y examinándolo con el editor hexadecimal la variable strClave ofuscada se ve así
 


Saludos, desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #21 en: Agosto 21, 2014, 11:33:17 am »
Muchas gracias Alberto!

Viendo tus capturas de lo que le comentas a YAcosta, haber si entendi...
si yo guardo una variable como:

strClave = Chr(77) & Chr(105) & Chr(112) & Chr(97) & Chr(115) & Chr(115) & Chr(119) & Chr(111) & Chr(114) & Chr(100) & Chr(50) & Chr(51)

entonces no hay forma de que me puedan ver el valor del string con un editor
 


YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #22 en: Agosto 21, 2014, 11:39:51 am »
Albertomi:
mmm, no me quedo claro doc, cierto que ambos casos me dan lo mismo, o sea si lo ofusco o no igual vere M.i.p.a.s.w.o.r.d.2.3. que alguien con conocimiento puede deducir que si quita la constante de los puntos tiene la clave, pero ese ofuscamiento es usando Chr, y yo me refería a partirlo y ponerlo en diferentes variables no continuas en el código y que luego las concateno.
Presumo que me quieres decir que es lo mismo, que si concateno el resultado final es que igual se vera la clave pero no estoy del todo seguro porque estoy deduciendo la respuesta. En todo caso quise buscar en la carpeta de VB el programa editor para comprobar pero creo que no lo tengo, si pudieras proporcionarme un enlace para descargarlo te agradecería.

Saludos

EDITO: Mientras escriba, Waldo contesto y ahora me confundí mas jeje. Porque yo si veo que SI hay forma de que puedan ver el valor (en mi caso) de los strings con el editor y solo tendrian que obviar los puntos que aparecen, lo que no se es como llegan a esa parte de todo el codigo hex para inducir que ese es el valor del(los) string(s).
« última modificación: Agosto 21, 2014, 12:21:53 pm por YAcosta »
Me encuentras en YAcosta.com

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #23 en: Agosto 21, 2014, 11:47:17 am »
Esperemos al maestro Alberto a ver que nos dice  :D

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #24 en: Agosto 21, 2014, 02:02:12 pm »
Estimados
 
Me parece que no lo deje muy claro, en el screenshot del lado izquierdo muestro el valor de la variable con el valor de la cadena asignada de forma normal (strClave = "Mipassword23") y del lado derecho la misma variable con la misma cadena pero "ofuscada" (existen otras formas) haciendo uso d la funcion Chr  (strClave = Chr(77) & Chr(105) & Chr(112) & Chr(97) & Chr(115) & Chr(115) & Chr(119) & Chr(111) & Chr(114) & Chr(100) & Chr(50) & Chr(51))
 

 
A simple vista se observa en el lado derecho que en no hay forma de ver el valor de la variable con un editor Hexadecimal.
 
YAcosta, tú idea de partir la clave en varias variables es valida, ya que va hacer un poco más difícil darse cuenta a simple vista con un editor hexadecimal cual es el valor y más si esa variables contienen un solo carácter. Pero, aun así, seria bueno que dichos valores los "ofusques" haciendo uso de la funcion Chr.
 
Entonces tú ejemplo "ofuscando" los valores asignado a las variables quedaría así:
 
R = CHR(50) & CHR(51)
código...
O = CHR(112) & CHR(97)
código..
M = CHR(119) & CHR(111)
código..
J = CHR(114) & CHR(100)
código...
I = CHR(112) & CHR(97) & CHR(115) & CHR(115)
código...
L = CHR(77) & CHR(105)
 
 
 
Saludos, desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #25 en: Agosto 21, 2014, 02:42:30 pm »
Tal vez me exprese mal yo tambien, hice un EXE en MI PC y lo abri con un editor, en mi editor veo los nombres de las variables, no en la captura de Alberto.

Probé de hacer un pequeño exe, guardando una constante string, y una variable string, cargandola con los CHR y efectivamente es como decis.
Otra cosa que vi mirando el editor hex, es que aparecen los nombres de las variables, asi que no deberiamos llamar a una variable como UserPass, o algo similar.
Otra cosa, si declaro una variable, pero no la uso en el codigo, se ve que el compilador se da cuenta y directamente no la compila, porque no se ve dentro del exe.

Me dio intriga y abir el EXE con un VB Decompiler.
Es increible como puede leer la informacion del exe.

Por ej el proyecto:
Código: (VB) [Seleccionar]
VERSION 5.00
Begin VB.Form Form1
  Caption = "Form1"
  ScaleMode = 1
  AutoRedraw = False
  FontTransparent = True
  'Icon = n/a
  LinkTopic = "Form1"
  ClientLeft = 120
  ClientTop = 450
  ClientWidth = 4560
  ClientHeight = 3030
  StartUpPosition = 3 'Windows Default
End

Attribute VB_Name = "Form1"

El Diseño del Form:
Código: (VB) [Seleccionar]
VERSION 5.00
Begin VB.Form Form1
  Caption = "Form1"
  ScaleMode = 1
  AutoRedraw = False
  FontTransparent = True
  'Icon = n/a
  LinkTopic = "Form1"
  ClientLeft = 120
  ClientTop = 450
  ClientWidth = 4560
  ClientHeight = 3030
  StartUpPosition = 3 'Windows Default
End

Attribute VB_Name = "Form1"

Lo bueno es que el codigo no lo pudo restaurar, se ve en assembler

Código: (VB) [Seleccionar]
Private Sub Form_Load() '401A00
  loc_00401A00: push ebp
  loc_00401A01: mov ebp, esp
  loc_00401A03: sub esp, 0000000Ch
  loc_00401A06: push 004010B6h ; __vbaExceptHandler
  loc_00401A0B: mov eax, fs:[00h]
  loc_00401A11: push eax
  loc_00401A12: mov fs:[00000000h], esp
  loc_00401A19: sub esp, 00000134h
  loc_00401A1F: push ebx
  loc_00401A20: push esi
  loc_00401A21: push edi
  loc_00401A22: mov var_C, esp
  loc_00401A25: mov var_8, 004010A0h
  loc_00401A2C: mov eax, Me
  loc_00401A2F: mov ecx, eax
  loc_00401A31: and ecx, 00000001h

« última modificación: Agosto 21, 2014, 03:00:55 pm por Waldo »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #26 en: Agosto 21, 2014, 02:57:44 pm »
Creo que ya entendí lo que me confundió.

Citando y corrigiendo (para "mis adentros" jeje) al amigo Waldo: No es que no se pueda ver, si se puede ver, lo que no se puede es identificar como tal, o en todo caso esta un poco rejodido identificar que lo que está en 4D (no se que cosa es eso, creo que un apuntador de memoria no se) contiene un valor que pueda ser significante en el hackeo, tendrían que peinarse todo y hacer pruebas y de alli que es mejor usar los Chr que indica Albertomi.

Concuerdo que no es conveniente usar nombres de variables inductivos para los temas de seguridad o de restricción, es mas, en lo personal ni siquiera lo hago con las tablas y campos de mis BDs ya que uso una nemotecnia personal.

Y para seguir con la confusion, es que ya he visto la imagen capturada varias veces y no entiendo donde ves amigo Waldo el nombre de la variable. Te cito:

"...Otra cosa que vi mirando el editor hex, es que aparecen los nombres de las variables..."

En todo caso eso no se ve en la captura de Albertomi, cierto que se ve el nombre de los objetos (Form1, Proyecto1, etc) pero no el nombre de la variable (strClave), en todo caso voy a buscar ese soft Hex Editor para probar con lo mio.

s.e. u o.

Saludos
Me encuentras en YAcosta.com

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #27 en: Agosto 21, 2014, 03:01:27 pm »
Edite mas arriba mi msg anterior

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #28 en: Agosto 21, 2014, 03:10:55 pm »
Si probe el VB Decompiler antes, y probando con un exe hecho con VB6 si se ve los nombres de los objetos pero no el codigo fuente a diferencia de un exe hecho con .Net, alli si el VB Decompiler te da las fuentes incluso hasta los comentarios, y eso es asi por el tema de que la plataforma .Net es libre (no el ide VS.Net ese si es de pago salvo los express con sus restricciones conocidas)

Luego la parte del código que muestras con el push, mov, etc ya esta fuera de mi alcance, para mi es chino mandarín y hasta allí no llego.  :-)
Me encuentras en YAcosta.com

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Compilar proyectos vbp sin abrirlos en el IDE
« Respuesta #29 en: Agosto 21, 2014, 04:35:23 pm »
Perdon, es verdad, dije una burrada al decir que se ven los nombres de las variables; para hacer unas pruebas estaba mostrando en un msgbox el nombre de la variable con su valor, y lo que yo veia era el string que mostraba en el msgbox, elimine eso y ya no se ve mas en el editor hex