elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta sobre APIs en Windows.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta sobre APIs en Windows.  (Leído 2,363 veces)
EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Pregunta sobre APIs en Windows.
« en: 27 Febrero 2014, 00:11 am »

Disculpen que haga este hilo acá... realmente no se donde hacerlo jaja en fin, estoy experimentando con ctypes en Python (si lo sé esto es el subforo de C). Para eso me estoy informando con MSDN, y recurro a la sabiduría de los C-sianos (?) que la tienen calada...
Estoy intentando usar la API TerminateProcess, cuya descripción es la siguiente:

Código
  1. BOOL WINAPI TerminateProcess(
  2.  _In_  HANDLE hProcess,
  3.  _In_  UINT uExitCode
  4. );

Citar
hProcess [in]
A handle to the process to be terminated.
The handle must have the PROCESS_TERMINATE access right. For more information, see Process Security and Access Rights.
uExitCode [in]
The exit code to be used by the process and threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve a process's exit value.

Entiendo que necesita dos argumentos de entrada, el "handle" del proceso, y un código de salida.
Bien, entonces asumo que tengo que conseguir el "handle" del proceso. Pues bien, no entiendo cómo obtener el handle. Soy muy novato en el tema, y estoy viendo algo sobre la API OpenProcess, que teóricamente me devuelve el handle del proceso:

Código
  1. HANDLE WINAPI OpenProcess(
  2.  _In_  DWORD dwDesiredAccess,
  3.  _In_  BOOL bInheritHandle,
  4.  _In_  DWORD dwProcessId
  5. );

Citar
dwDesiredAccess [in]
The access to the process object. This access right is checked against the security descriptor for the process. This parameter can be one or more of the process access rights.
If the caller has enabled the SeDebugPrivilege privilege, the requested access is granted regardless of the contents of the security descriptor.
bInheritHandle [in]
If this value is TRUE, processes created by this process will inherit the handle. Otherwise, the processes do not inherit this handle.
dwProcessId [in]
The identifier of the local process to be opened.

Entiendo que necesita tres argumentos. Llegado el tercer argumento (el PID), entiendo que para obtenerlo, tengo que utilizar la API GetProcessID:

Código
  1. DWORD WINAPI GetProcessId(
  2.  _In_  HANDLE Process
  3. );
  4.  

Ahora bien, eso me devolvería el PID... el cuál necesito para obtener el handle... Pero la función me pide el handle del proceso... No entiendo xD.

Perdón la ignorancia, y que haga una pregunta así, pero no logro entender el procedimiento para cerrar un proceso mediante TerminateProcess. Se que lo puedo hacer utilizando taskkill /f /im blabla, pero prefiero entender esto :\
Aclaro que no estoy haciendo ninguna maldad ni nada similar, solo estoy practicando multithreading, y se me ocurrió hacer una función que abra un proceso, mientras otra lo cierre, por el mero hecho de practicar algo, y decidí hacerlo de esta manera.

De todas maneras, voy a seguir buscando y probando. No pido un códigohecho, con una palabra que me oriente estaría muy agradecido!

Un abrazo.




En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #1 en: 27 Febrero 2014, 00:30 am »

Prueba esta:
Código
  1. DWORD GetCurrentProcessId(void);


« Última modificación: 27 Febrero 2014, 00:47 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #2 en: 27 Febrero 2014, 00:40 am »

Lo que te dice amchacon es que uses esa función..

Citar
The return value is the process identifier of the calling process.

Ahora, no se como implementas las apis en Python, pero calculo que incluis la librería y llamas a la función,, vas bien parece.. no deberías tener mayor complicación..

Suerte! Saludos!
En línea

EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #3 en: 27 Febrero 2014, 06:53 am »

En Python es relativamente sencillo, tenés el módulo ctypes en dónde podés acceder a librerías dinámicas mediante stdcall o cdecl, y tenés mapeados (creo que es el término correcto) los tipos de datos entre c, python y ctypes, tipo:

C       Python      Ctypes
int       int            c_int
long     int           c_long

Y así...

Tengo entendio por lo que vengo leyendo, que la función GetCurrentProcessId obtiene el pid del proceso actual, y yo lo que necesitaba era conseguir el pid de otro proceso, me estoy liando, se que me faltan cosas pero no se cuáles jaja

Abrazo!
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #4 en: 27 Febrero 2014, 17:46 pm »

Para terminar el propio proceso desde donde se esta ejecutando tu código se usa ExitProcess nada de OpenProcess->TerminateProcess
ya que no es necesario. pero si lo que quieres es terminar un proceso diferente cualquiera y si no tienes un identificador especifico
pues tendras que enumerar los procesos, la MSDN tiene un ejemplo:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623(v=vs.85).aspx

Esa funcion es un wrapper de muy alto nivel puede que estes interesado en estas otras funciones:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684865(v=vs.85).aspx

Luego con el PID llamas a OpenProcess pasando las Flags correctas ( mirar documentación ) y por ultimo TerminateProcess.
Buen habito es cerrar el handle también.
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #5 en: 27 Febrero 2014, 17:46 pm »

Yo me complique la vida una vez con openprocess y le agarre pánico jaja empece a usar CreateProcess, que lleva mas parámetros pero no da muchos problemas de seguridad,, (al menos en mis pruebas fue mas sencillo, estaba inyectando código en procesos).

Capaz te sirve de mientras para practicar,, despues podes solucionar lo de OpenProcess

Citar

Y por supuesto la MSDN
Citar

Suerte! Saludos!
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #6 en: 27 Febrero 2014, 17:47 pm »

O lo que dice x64Core también  ;)
En línea

EzianGES

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #7 en: 27 Febrero 2014, 18:02 pm »

@xcore64:
Es justo lo que me faltaba! te lo re agradezco!

@Vaagish
Casualidades de la vida que justo tengo ese enlace abierto jajajaj Muchas gracias por la ayuda a ambos.


En cuánto tenga un código funcional lo subo :)

A probar y programar se ha dicho n.n

Muchísimas gracias.
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Pregunta sobre APIs en Windows.
« Respuesta #8 en: 27 Febrero 2014, 18:05 pm »

De nada! Suerte!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta sobre serial de oro windows XP
Windows
hunter18 4 11,357 Último mensaje 14 Agosto 2010, 00:25 am
por simorg
duda sobre apis de windows de 32 bits
Programación General
AlxSpy 2 2,545 Último mensaje 27 Agosto 2011, 02:32 am
por AlxSpy
Pregunta sobre Windows 8 y partición GPT « 1 2 »
Windows
lab004 13 31,210 Último mensaje 21 Mayo 2014, 11:59 am
por benja999
pregunta sobre ficheros en c# windows forms
.NET (C#, VB.NET, ASP)
rulovive 2 1,766 Último mensaje 20 Enero 2018, 18:24 pm
por rulovive
Ayuda con las APIS de windows, soy principiante
Ingeniería Inversa
papelito 4 1,894 Último mensaje 12 Enero 2020, 12:13 pm
por xor.pt
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines