Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Keyen Night en 16 Diciembre 2009, 23:42 pm



Título: Interceptar API
Publicado por: Keyen Night en 16 Diciembre 2009, 23:42 pm
En un programa llamado Sin Espias un programa antiespias (¬¬ que tonto es obvio); Tiene un modulo que se encarga de monitorear todos los procesos en busca de keylogger nose como lo hace tengo 2 posibilidades una es que detecte el api GetAsciiKeyState o que intercepte el teclado haciendo un Hook a Windows...
Si es detectando el api entonces me supongo que se podra hacer con mas apis que no sean esa.... En fin lo que quiero es detectar el uso de la api ReadProcessMemory
Si me pudieran ayudar estaria muy agredecido ;-)


Título: Re: Interceptar API
Publicado por: raul338 en 16 Diciembre 2009, 23:53 pm
[offtopic]
En un programa llamado Sin Espias un programa antiespias (¬¬ que tonto es obvio);
se dice "valga la redundancia" xD
[/offtopic]



La verdad ni idea, pregunta en la sección de VB o en el foro de leandro que saben una banda de APIs y esas cosas, despues te encargas (o te ayudamos  :P) a pasarlo a .net


Título: Re: Interceptar API
Publicado por: MazarD en 17 Diciembre 2009, 17:58 pm
Lo más fácil es que hookees en c ya que la rutina de filtrado dificilmente la podrás tener en c# por estar sobre el framework de .net.
 
 Aquí tienes un tutorial sobre api hooking básico: http://mazard.info/tutos/apihooking.pdf
 Después hay uno muy bueno de e0n que ahora mismo no encuentro, pero búscalo en el foro.
 
 Saludos!


Título: Re: Interceptar API
Publicado por: Foxy Rider en 17 Diciembre 2009, 19:14 pm
te conviene hacerte una librería para trabajar con esto en C y PInvokear ... o usar alguna de por ahí ...
podés hacerlo en .NET,pero es bastante desprolijo, so .. better go with PInvoke ..

fijate que por codeplex hay algo hecho  --> http://www.codeplex.com/Wikipage?ProjectName=easyhook

Saludos ~


Título: Re: Interceptar API
Publicado por: Keyen Night en 21 Diciembre 2009, 20:18 pm
He leido todos los tutos en C++ ya entendi el principio de editar la API para que todos los datos pasen primero por nosotros y despues regresen al programa que la esta llamando pero no he logrado hacer nada, pues debe ser que soy muy tonto xD para C++ como odio ese lenguaje aunque es pontente...
No existe algun modo de hacer en C++, C# o Vb de .Net?


Título: Re: Interceptar API
Publicado por: Foxy Rider en 21 Diciembre 2009, 21:33 pm
Mi querido Keyen, leíste lo que postee ?  :)

te amplío un poquito más ... lo que podés hacer es de dos maneras, usando assemblies que te provean esta función (ahí te tiré un ejemplo de codeplex) o armarte vos una ...

si tomás el camino de armar la librería/assembly vos en C, acordate de exportar las funciones a dll con  __declspec(dllexport) si estás en Visual studio, si es GNU, se exporta automáticamente todo... otro detalle, si compilás con un compilador de C++, agregá un extern "C", por que sino, no vas a poder PInvokear gracias al name mangling (que es una forma de enmarañar los nombres de funciones/clases, and so on) ---> http://msdn.microsoft.com/en-us/library/0603949d.aspx

y después, desde .NET usás PInvoke : http://msdn.microsoft.com/en-us/magazine/cc164123.aspx

hay maneras más complejas, pero, let's KISS (Keep it simple stupid)
creo que me expliqué bien xD (no sé, el sueño me hace dudar :$)

Saludos ~


Título: Re: Interceptar API
Publicado por: MazarD en 22 Diciembre 2009, 13:23 pm
Citar
podés hacerlo en .NET,pero es bastante desprolijo
O una locura directamente xD

El propio easyhook este de codeplex implemeta el hook desde una dll en c y después le proporciona una interfaz a c# para la rutina de filtrado con lo que es ahorrarse bastante trabajo, incluso proporciona un driver para hookear a nivel de kernel con lo que tienes las principales opciones.

La verdad es que está muy bien y lo hace verdaderamente simple para el que vaya a utilizarlo. Yo lo haría toda la parte de apihooking en c/c++ o c# con el easyhook este ahorrandote la complejidad (innecesaria) de integrar el apihooking a c#

Saludos


Título: Re: Interceptar API
Publicado por: Keyen Night en 22 Diciembre 2009, 19:03 pm
Gracias a Vertex.Symphony por sus mensajes pero a mi C++ no me va realmente.
MazarD cual seira el primer paso para hacer el api hooking con EasyHook en C#?


Título: Re: Interceptar API
Publicado por: Foxy Rider en 22 Diciembre 2009, 19:18 pm
Keyen, querido ... te comento, en mi primer mensaje te tiré el link a easyhook, creo que si buscás ayuda, el mínimo esfuerzo que se te pide es leer lo que se te responde, no se te va a dar un code hecho para que copypastees ....
también el mínimo esfuerzo de tratar de leer la documentación que hay en el sitio y venir con dudas específicas, es decir RTFM (Read The Fucking Manual)

por si no lo notaste, ahí te di el link en este post -> https://foro.elhacker.net/net/interceptar_api-t278233.0.html;msg1369164#msg1369164

Saludos ~


Título: Re: Interceptar API
Publicado por: Keyen Night en 22 Diciembre 2009, 19:24 pm
Realmente no quierro un codigo hecho y copy&paste eso no tiene sentido sino que casi no se consigue informacion acerca de api hooking si no fuera por este foro no habria descubierto nada acerca de este tema, más bien te agradezco por procuparte en que yo entienda ;)


Título: Re: Interceptar API
Publicado por: MazarD en 22 Diciembre 2009, 20:19 pm
Vertex.Symphony tampoco hay que ponerse bordes seguramente se lió cuando le explicaste el tema de las librerias con funciones exportadas sin que dijera que ese era su problema.

Keyen Night no puedo darte unos primeros pasos porque nunca he utilizado easyhook, solo he bajado el código para ver como funcionaba por curiosidad. Bajate la librería que te ha pasado en el primer post Vertex.Symphony y verás que viene bastante documentación y varios proyectos en c# de ejemplo y cuando tengas dudas concretas será más fácil ayudarte.

Saludos!



Título: Re: Interceptar API
Publicado por: Keyen Night en 22 Diciembre 2009, 20:48 pm
Estoy probando el codigo que hay en la pag de codeplex para hacer hook a CreateFileW pero C# me lanza un error en...
Código
  1. unsafe public class Main : EasyHook.IEntryPoint
  2. {
  3. XXX
  4. }
Dice...
Error   1   El código no seguro sólo puede aparecer si se compila con /unsafe   C:\Documents and Settings\***\Escritorio\Main\Main\Main.cs    20   29   Main


Título: Re: Interceptar API
Publicado por: raul338 en 22 Diciembre 2009, 21:07 pm
Agrega en las propiedades de proyecto, En "parametros adicionales" (en algun lado de compilacion creo:..) "/unsafe" que es lo que te tira error :P