PDA

Ver la Versión Completa : Proteger Programa


Yusk333
23-08-2007, 20:19:42
Hola a todos de nuevo :)

mi pregunta es esta no habra algun algoritmo para proteger el source de un programa o algo parecido por que aveces hasta depende el programa los sistemas de heuristica de los AV los detectan como virus :confused::eek:

dec
23-08-2007, 20:35:38
Hola,

Pues creo que cuanto más "la líes" más fácil será que los Antivirus se mosqueen... Ahora bien, ¿algún problema en particular? Porque no es normal que cualquier programa sea tomado como un posible "virus"... No sé si con Visual Basic pasa pero con Delphi no suele ocurrir eso. :D

seoane
23-08-2007, 20:39:36
Si entendi tu pregunta, quieres saber como hacer que los antivirus no piensen que tu programa es un virus.

Antes de seguir ¿tu programa es un virus? :D ... tenia que preguntar.

Ahora en serio, los antivirus sospechan cuando un programa hace "cosas extrañas": bajar archivos de internet, usar hooks, etc. No creo que la solución sea cifrar el ejecutable, eso haría saltar todavía mas alarmas, muchos antivirus sospechan de los ejecutables que están cifrados o comprimidos.

Es lo que hay, si tu programa no es un virus solo tienes que advertir a tus usuarios de que tu programa puede provocar falsos positivos y ellos tendrán que tomar medidas para que su antivirus no moleste a tu programa.

fer21unmsm
23-08-2007, 21:14:32
Aunque depende si tu programa accede a ciertas partes del SO y si hace cosas inusuales que un programa comun y silvestre no harían, si es así lo puede tomar como virus, a mi me ha pasado varias veces, pero como dicen los compañeros de arriba mientras más complejo sea el código, en cuanto a tecnicas de programación, más dificil es que te lo detecte el antivirus. Pero como se dice: todo lo hecho por el hombre puede ser roto por el mismo hombre jeje:)

Yusk333
23-08-2007, 21:14:52
no de echo solo es un archivo que modifica a un archivo de la pc , pero o sea no es virus ya que no usa recursos ni roba informacion ni nada solo es para modificar pero no se aprovecha de nada y eso tienen razon ,, use un protector de software y me lo detecto como posible mal ware :( ,,, alo mejor fue por eso

dec
23-08-2007, 21:25:47
Hola,

No te preocupes demasiado. Digo no te preocupes porque los "falsos positivos" existen. Ahora bien, si tu programa hace uso de algún componente... si estás usando código "de terceros" presta un poco más de atención. Es posible que tu programa no sea rebelde pero el código de terceros haga algo que ni tú mismo sepas.

Así que preocúpate lo justo y necesario. Personalmente, uno de mis proyectos actuales hacer "saltar las alarmas" de algún que otro antivirus. ¿Por qué? Pues porque hago uso de unos componentes de nombre "Abbrevia", y resulta que hay o hubo algún virus o troyano que se llamaba así o muy parecido. No encuentro otra razón, y sólo por esto saltan las alarmas, como digo.

Tengo que añadir otra cosa. Pueden usarse los componentes Abbrevia en un programa y el antivirus de marras no dirá ni mú. ¿Cómo es que avisa del potencial peligro de mi proyecto? Pues por lo que se ha comentado más arriba. Mi proyecto está comprimido con el programa UPX. Así que el antivirus no presta atención a los componentes "Abbrevia"... salvo que el programa esté además comprimido.

Yusk333
23-08-2007, 21:33:05
de echo el UPX ese compresor es tomado como virus ,,, a menos a mi me salta kaspersky ,,, pues un compañero me decia que la forma mejor era metiendole un algoritmo y codeandolo

dec
23-08-2007, 21:44:52
Hola,

Bueno. En realidad no es así, al menos no en todos los Antivirus. Pongo otra vez como ejemplo el proyecto que me traigo entre manos y antes mencioné. Este proyecto usa unos componentes cuyo nombre coincide con un troyano. El antivirus no se queja, si el proyecto no se comprime con UPX.

Es decir, que se han de dar las dos circunstancias: se usan los componentes "Abbrevia" y se comprime con UPX. Pero si no se usan los componentes mencionados, aunque se comprima con UPX, el antivirus no se queja tampoco. Vamos que podría decirse que UPX por sí solo no hace saltar las alarmas.

Lo que sí podrías decir a tu amigo es que nos explique qué es eso de "meter un algoritmo y codear" un programa... :)

Yusk333
23-08-2007, 22:09:01
pues no tengo muchos conocimientos en programacion no se si eso se pueda realizar pero , este amigo se guarda los proyectos en privado ,, ahi es lo malo :( ,, pero mejor buscare informacion haber que encuentro ,,, entonces el programa en si el mio hace una modificacion en un archivo que contiene texto en el sistema y corre el explorador solo eso
solo creo no me lo detecta pero ya vere

saludos

cHackAll
25-08-2007, 20:15:32
Que lindo tema!!! por que será que llego tarde? bueno ya se había visto el asunto y la idea del antivirus es simple, recorrer todo el ejecutable y al encontrarce algo "reconocible" pues BEEP, la segunda es hacer lo mismo cuando el proceso está corriendo en memoria, lo que viabiliza verificar el contenido real y no que contenido que nos dejó el packer (Ej. UPX). y bueno, tambien se pueden revisar distintos puntos de un eXecutable, y este es uno de los principales problemas, los que realizan virus buscan la forma de realizar pequeños eXecutables que se puedan "mover" rapidamente.

Tambien hay el asunto que que comentaba seoane, si haces algo extraño pues BEEP, pero depende mucho del Antivirus.

Al grano con el hilo, en lo personal utilizo yo utilizo el PECompact2, UPX y en muy caso especial el mew11. Los dos ultimos me dieron en varias ocaciones un "BEEP", pero nunca les doy bola... lo que si hago es cambiar algunas partes del código para ver cual API o conjuncion de APIs o movimientos en memoria ya esta en la lista "negra".

Como consejo a Yusk333, parece que quieres que no se puedan ver las cadenas y constantes de tu ejecutable (por que si te refieres como tu dices para "...proteger el SOURCE de un programa...", me suena como el código fuente, y para eso un ZIP con clave basta y sobra). Bueno simplemente cambia todas las cadenas que no quieres que se vean por otros datos "semi encriptados en tu mismo ejecutable", por ejemplo:

uses Windows;

var
Count: Cardinal;
Mensaje: array [0..63] of Char = #$B7#$91#$91#$9D#$DB#$97#$90#$8B#$D7#$94#$80#$91#$9D#$9D#$82#$D0#$8E#$83#$84#$8B#$84#$99#$C9#$8C#$82 #$8A#$C5#$A7#$8F#$97#$83#$A4#$BA#$B2#$AD#$B4#$B2#$FB#$F8#$F9;

begin
Count := lstrlen(@Mensaje);
while Count <> 0 do
begin
Dec(Count);
Mensaje[Count] := Char(Ord(Mensaje[Count]) xor ($FF xor (Count and $FF)));
end;
MessageBox(0, @Mensaje, nil, 0);
end.

en contraparte de un

uses Windows;
begin
MessageBox(0, 'Hola mis buenos amigos del ClubDelphi!!!', nil, 0);
end.


Revisando el contenido de los ejecutables generados veras la diferencia.

Claro que es un simple algoritmo que funciona desde "ambos" lados, pero de todas formas la idea que dejo es lo que importa. Para crear el ejecutable necesitas un programa externo posiblemente hecho por ti que encripte, y un algoritmo de desencriptado an la carga del proyecto.

Saludos

Yusk333
04-09-2007, 23:27:48
prove el primer source ,, y no me funciono :s , el segundo me sale una texbox

yo decia codear el source para que los antivirus no lo tomen como virus cambiando algunas partes del source o algo por el estilo