Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Con ella puedo ver los privilegios, dárselos, o qué hago con ella?
Responder Con Cita
  #2  
Antiguo 10-05-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
Con ella puedo ver los privilegios, dárselos, o qué hago con ella?
Con ella puedes ver los privilegios.

En general para escribir en la memoria de otro proceso tienes que tener privilegio igual o mayor . Con privilegios debug alcanzas casi a cualquier proceso. Para escribir en procesos System, necesitas correr tu aplicación como System.
Si te falla, estudia primero el mensaje de errir pata saber donde fallas.

Saludos.
Responder Con Cita
  #3  
Antiguo 11-05-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Una cosa importante a la hora usar WriteProcessMemory y ReadProcessMemory que es obvio pero quiero comentar es que un proceso compilado para 32bits en principio no puede leer ni escribir en la memoria de otro de 64 bits, pero el camino contrario si es correcto. Esto se debe a incompatibilidad del tamaño de los punteros.

Mira a ver si este es tu caso.


Saludos.

Última edición por escafandra fecha: 11-05-2020 a las 01:30:45.
Responder Con Cita
  #4  
Antiguo 11-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Las dos aplicaciones las hice yo con C++builder 6, tanto el debugger como el que uso para probarlo, y son de 32 bits. Si miro con Process Explorer veo esto antes de ejecutar el código que modifica los privilegios:
https://ibb.co/JBxXVwL
Y una vez ejecutada la función que me da los privilegios no ha cambiado absolutamente nada pero creo que es simplemente porque ya los tengo de entrada ¿no?
Entonces, si esto está bien, ¿lo siguiente es usar GetLastError después de intentar escribir en el proceso y ver que me dice?
Responder Con Cita
  #5  
Antiguo 11-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Comento que al final no hubo ningún problema al asignar esos privilegios en windows XP y era otro tema diferente el que me estaba dando problemas, simplemente que mi código estaba mal y sin darme cuenta desacia lo que en un principio hacia.
Lo que si me he dado cuenta que en Windows 10 me da error al intentar asignar ese privilegio a mi aplicación porque dice que no se encuentra el token. ¿Alguien me lo puede explicar?
Responder Con Cita
  #6  
Antiguo 11-05-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
Comento que al final no hubo ningún problema al asignar esos privilegios en windows XP y era otro tema diferente el que me estaba dando problemas, simplemente que mi código estaba mal y sin darme cuenta desacia lo que en un principio hacia.
Lo que si me he dado cuenta que en Windows 10 me da error al intentar asignar ese privilegio a mi aplicación porque dice que no se encuentra el token. ¿Alguien me lo puede explicar?

No se como asignas privilegios pero deberías hacerlo siguiendo este método que funciona en todos los windows:


Para el proceso actual:
Código PHP:
BOOL EnablePrivilege (PCSTR nameBOOL Enable)
{
   
BOOL Result;
   
HANDLE hToken;
   
TOKEN_PRIVILEGES priv = {1, {00SE_PRIVILEGE_ENABLED}};
   if(!
Enablepriv.Privileges[0].Attributes 0;
   
LookupPrivilegeValueA(0name, &priv.Privileges[0].Luid);
   
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
   
AdjustTokenPrivileges(hTokenFALSE, &privsizeof priv00);
   
Result = (GetLastError() == ERROR_SUCCESS);
   
CloseHandle (hToken);
   return 
Result;


Por similitud, para cualquier proceso:
Código PHP:
BOOL EnablePrivilege (HANDLE hProcessPCSTR PrivNameBOOL Enable)
{
   
BOOL Result;
   
HANDLE hToken;
   
TOKEN_PRIVILEGES priv = {1, {00SE_PRIVILEGE_ENABLED}};
   if(!
Enablepriv.Privileges[0].Attributes 0;
   
LookupPrivilegeValueA(0PrivName, &priv.Privileges[0].Luid);
   
OpenProcessToken(hProcessTOKEN_ADJUST_PRIVILEGES, &hToken);
   
AdjustTokenPrivileges(hTokenFALSE, &privsizeof priv00);
   
Result = (GetLastError() == ERROR_SUCCESS);
   
CloseHandle (hToken);
   return 
Result;


Nota: No usa Unicode





Saludos.
Responder Con Cita
  #7  
Antiguo 11-05-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
¿lo siguiente es usar GetLastError después de intentar escribir en el proceso y ver que me dice?
Aclarado que ambos procesos son de 32 bits, todo depende si tienes un Handle válido para el proceso, de la zona de memoria del oto proceso que desees escribir, si es una zona nueva reservada (VirtualAllocEx), si estás escribiendo en su zona de datos o de código requiere permisos distintos sobre la zona de memoria (VirtualProtectEx), en fin, son varios detalles sobre los que hay que pensar y tener cuidado.


Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con CloseHandle y atacheo de proceso aguml C++ Builder 3 07-05-2020 15:04:01
Crear, modificar, borrar usuarios y asignar privilegios en Firebird anubis Trucos 2 17-10-2014 18:38:15
Problemas de Privilegios en Delphi gersojn Varios 10 03-08-2011 19:30:06
Problema para asignar privilegios PaFernan99 MySQL 2 19-11-2006 20:32:50
Problemas al crear TXT y asignar un String lucasarts_18 Varios 7 30-09-2005 22:42:43


La franja horaria es GMT +2. Ahora son las 10:33:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi