Ayuda obtener permisos administrador

Iniciado por Kaxperday, 21 Septiembre 2014, 01:44 AM

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

Kaxperday

Buenas gente, estaba escribiendo algún malware y llegado el momento de instalarse necesito que se copie en el directorio "C:\Windows" y necesito permisos de root, he estado buscando bastante por google, y parece que hay funciones para unix, a través de las cuales puedes adquirir el root para ejecutar el programa, yo solo quiero que mi programa al ejecutar tenga permisos de root para poder copiarse en ese directorio, ahora estoy trabajando el C++, soy nuevo pero me adaptaré rápido espero xD.

Confío en que sepáis algo sobre el tema, toda ayuda es bienvenida.

Edito: He estado mirando cosas para hacerlo, quizás con chmod() podría eliminar privilegios del directorio en cuestión. Pero seguramente necesite permisos para usarla no se si windows me pondra en el .exe la opción de correr como administrador, estaría bien.

Edito: No entiendo, si tengo este código:

Código (cpp) [Seleccionar]

#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <windows.h>
using namespace std;

int main()
{
   int permisos;
   permisos=_chmod("C:\\Users\\...\\programa.exe",_S_IWRITE);
   if(permisos==-1)
   {
       printf("Error al dar permisos al archivo.");
   }
   else
   {
       printf("Éxito al dar permisos al archivo.");
   }
   system("move programa.exe C:\\Windows");
   getchar();
   return 0;
}



No entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).

Se supone que le di permisos de escritura al archivo, y me los concedió entonces ¿por qué tengo que ejecutarlo como administrador para hacer el move?

Yo quiero que salga igual que cuando vamos a instalar un programa nos pide permisos, (no se puede correr sin los permisos), y que cuando se instale ya no necesite pedir permisos más, como cualquier programa que instalamos vamos.

Edito: He encontrado esto, ¿cómo debería aplicarlo al código para que me funcionara?

http://msdn.microsoft.com/en-us/library/bb756929.aspx

También mediante makefiles se puede incrustar el manifiesto:

http://msdn.microsoft.com/es-es/library/ms235591.aspx

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

patilanz

#1
Hola yo tambien quiero hacer lo mismo para el mismo fin  ;D
He encontrado esto y ahora lo voy a probar :

http://www.codeease.com/force-windows-form-application-to-run-as-administrator-on-windows-7.html

@Edit:

Vale he encontrado la respuesta:



He visto que si en "Habilitar Control de cuentas de usuario(UAC)" lo cambias por No luego al abrir el siguiente codigo:

Código (cpp) [Seleccionar]
ofstream file("c:\\test.txt");
file << "hola :)";
if (file.good())
printf_s("nice");
else
printf_s("bad");

Siempre muestra nice aunque no crea el archivo. Sabéis porque y que hace exactamente esta opción?

Un saludo

Kaxperday

Vaya, yo uso codeblocks y no me aparece esa opción por ninguna parte, que editor usaste?

Aún así espero que haya alguna alternativa para codeblocks, aunque no lo encuentro por ninguna parte, lo que quiero es embeber el manifest dentro del ejecutable.

Saludos.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

eferion

Cita de: Kaxperday en 21 Septiembre 2014, 01:44 AM
Buenas gente, estaba escribiendo algún malware y llegado el momento de instalarse necesito que se copie en el directorio "C:\Windows" y necesito permisos de root, he estado buscando bastante por google, y parece que hay funciones para unix, a través de las cuales puedes adquirir el root para ejecutar el programa, yo solo quiero que mi programa al ejecutar tenga permisos de root para poder copiarse en ese directorio, ahora estoy trabajando el C++, soy nuevo pero me adaptaré rápido espero xD.

Lo que quieres hacer no lo vas a conseguir de una forma "legal". Es decir, tu pretendes que tu código se instale en el ordenador y empiece a toquetear cosas del sistema operativo. Si hubiese una forma clara de saltarse las protecciones entonces éstas no tendrían sentido. Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Desde luego no esperes que una función tipo "chmod" te de acceso... eso sería demasiado sencillo. Piensa que no puedes cambiar los permisos de acceso de un recurso si no tienes unos privilegios mínimos, al igual que no puedes cambiar la cerradura de una puerta si no la abres antes.

Eternal Idol

Cita de: eferion en 22 Septiembre 2014, 10:43 AM
Lo que quieres hacer no lo vas a conseguir de una forma "legal". Es decir, tu pretendes que tu código se instale en el ordenador y empiece a toquetear cosas del sistema operativo. Si hubiese una forma clara de saltarse las protecciones entonces éstas no tendrían sentido. Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Desde luego no esperes que una función tipo "chmod" te de acceso... eso sería demasiado sencillo. Piensa que no puedes cambiar los permisos de acceso de un recurso si no tienes unos privilegios mínimos, al igual que no puedes cambiar la cerradura de una puerta si no la abres antes.

En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

eferion

Cita de: Eternal Idol en 22 Septiembre 2014, 11:44 AM
En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).

Ya, pero ese mecanismo, por el simple echo de ser legal, implica que al usuario, salvo que haya desactivado las notificaciones, recibirá un aviso pidiendo su autorización para permitir que el programa realice cambios en ese directorio... y no se, no creo que sea la filosofía de un malware... bueno, salvo que el programa tenga apariencia legal y el malware actúe en segundo plano, pero aún así creo que no es la idea original.

Eternal Idol

Cita de: eferion en 22 Septiembre 2014, 11:52 AM
Ya, pero ese mecanismo, por el simple echo de ser legal, implica que al usuario, salvo que haya desactivado las notificaciones, recibirá un aviso pidiendo su autorización para permitir que el programa realice cambios en ese directorio... y no se, no creo que sea la filosofía de un malware... bueno, salvo que el programa tenga apariencia legal y el malware actúe en segundo plano, pero aún así creo que no es la idea original.

El hecho es que el usuario pide usar un manifest para no tener que forzar manualmente que se ejecute su programa como administrador y esa es una forma "legal" de hacerlo.

Cita de: Kaxperday en 21 Septiembre 2014, 01:44 AMPero seguramente necesite permisos para usarla no se si windows me pondra en el .exe la opción de correr como administrador, estaría bien.

Cita de: Kaxperday en 21 Septiembre 2014, 01:44 AMNo entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

eferion

Cita de: Eternal Idol en 22 Septiembre 2014, 11:59 AM
El hecho es que el usuario pide usar un manifest para no tener que forzar manualmente que se ejecute su programa como administrador y esa es una forma "legal" de hacerlo.

Un programa que requiera privilegios de administrador en los windows actuales implica mostrar al usuario un mensaje en el que se le pide autorización. Obviamente el programa puede indicar en el manifiesto que necesita de antemano esos permisos, pero no va a evitar que al usuario le aparezca el correspondiente aviso.

No estoy entrando en detalles acerca de si esta información puede ir en el manifiesto o no... simplemente remarco que las formas legales de hacer esto conllevan el inconveniente del mensaje al usuario... y que ese puede ser un efecto indeseado a la hora de desarrollar un programa tipo troyano, virus, spyware, etc.

Si en vez de malware estuviese desarrollando una calculadora, por ejemplo, no habría echo ningún comentario al respecto de los permisos.

Eternal Idol

Cita de: eferion en 22 Septiembre 2014, 12:37 PM
Un programa que requiera privilegios de administrador en los windows actuales implica mostrar al usuario un mensaje en el que se le pide autorización. Obviamente el programa puede indicar en el manifiesto que necesita de antemano esos permisos, pero no va a evitar que al usuario le aparezca el correspondiente aviso.

Cita de: Eternal Idol en 22 Septiembre 2014, 11:44 AM
En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).

Cita de: eferion en 22 Septiembre 2014, 12:37 PMNo estoy entrando en detalles acerca de si esta información puede ir en el manifiesto o no... simplemente remarco que las formas legales de hacer esto conllevan el inconveniente del mensaje al usuario... y que ese puede ser un efecto indeseado a la hora de desarrollar un programa tipo troyano, virus, spyware, etc.

Cita de: Kaxperday en 21 Septiembre 2014, 01:44 AMNo entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).

Cita de: Kaxperday en 21 Septiembre 2014, 01:44 AMYo quiero que salga igual que cuando vamos a instalar un programa nos pide permisos, (no se puede correr sin los permisos), y que cuando se instale ya no necesite pedir permisos más, como cualquier programa que instalamos vamos.

Cita de: eferion en 22 Septiembre 2014, 12:37 PMSi en vez de malware estuviese desarrollando una calculadora, por ejemplo, no habría echo ningún comentario al respecto de los permisos.

El hecho es que existe una forma "legal" de hacerlo y es la que propuso el mismo usuario.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

eferion

Bueno entonces nos abstendremos de comentar cosas que nos parecen oportunas, como detalles que puedan pasar desapercibidos, y nos ceñiremos única y exclusivamente a la duda que tenga el usuario. ¿es eso?

Me parece totalmente surrealista esta conversación.