[c]/** @author cHackAll */
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <linux/input.h>
void main()
{
struct input_event ie;
unsigned short *pixel;
struct fb_var_screeninfo info;
unsigned int fd, fb, pad, scan, size, xy[2], count, vib;
if (setgid(0) || setuid(0) ||
!(fd = open("/dev/input/event2", O_RDONLY, 0)) ||
!(fb = open("/dev/graphics/fb0", O_RDWR, 0)) ||
ioctl(fb, FBIOGET_VSCREENINFO, &info)) return;
scan = (info.xres * (info.bits_per_pixel >> 3)) + 32;
void *buffer = mmap(NULL, size = info.yres * scan, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);
while (read(fd, &ie, sizeof(ie)))
if (ie.type)
{
if ((ie.type == 3) && (ie.code < 2))
xy[ie.code] = ie.value;
count = 0;
if ((ie.type == 1) && (vib = open("/sys/devices/platform/msm_pmic_vibrator/enable", O_WRONLY, 0)))
{
count = 55;
write(vib, "55\n", 3);
close(vib);
}
do
{
for (int y = 0; y < info.yres; y++)
{
pixel = buffer + (y * scan);
for (int x = 0; x < info.xres; x++)
if ((x == xy[0]) || (y == xy[1]))
pixel[x] = 0xF800; // 565
}
fsync(fb);
if (count) usleep(55);
} while (count--);
}
munmap(buffer, size);
close(fb); close(fd);
}[/c]
Compilamos y ejecutamos;
Verificamos;
Explicación;
El anterior código accede a la pantalla táctil, a la información de pantalla (pixeles) y al vibrador del teléfono móvil. Lo que hace es sencillo; detecta cuando el usuario toca, suelta o mueve su dedo sobre la pantalla táctil realizando una intersección de dos líneas horizontal/vertical en dicho punto. Adicionalmente cuando comienza y finaliza el movimiento (osea ni bien se toca o suelta), enciende por unos milisegundos el motor del vibrador.
Las aplicaciones posibles del anterior ejemplo son; el realizar un pseudo-HOOK detectando una actividad específica en la pantalla táctil sin que nuestra aplicación sea la que esté corriendo en primer plano o tenga interfaz alguna. Y la segunda es la monitorización o grabado de lo que se ve en el display del dispositivo (en el mismo dispositivo claro está).
Salud
Accediendo al hardware del dispositivo (TCC)
Comenzado por
cHackAll
, ago 08 2011 06:43
4 respuestas en este tema
#1
Escrito 08 agosto 2011 - 06:43
#2
Escrito 08 agosto 2011 - 07:02
Gracias cHackAll, muy interesante la aplicación.
Saludos
Saludos
#3
Escrito 08 agosto 2011 - 07:25
Muy interesante, estos programas, ¿como se ejecutan? como les dices que se ejecuten al iniciar el telefono ?
Salud OS
Salud OS
#4
Escrito 08 agosto 2011 - 07:47
Excelente.
Saludos.
Saludos.
#5
Escrito 08 agosto 2011 - 08:06
Apariencia del ejemplo compilado (aeabi);
Estos programas los puedes ejecutar manualmente en la linea de comandos escribiendo su nombre, los puedes ejecutar mediante un paquete que los llame (Ej. al hacer un tap [~click]). Los puedes compilar en una librería que posteriormente usarás en tus paquetes. Los puedes incluir en un ROM personalizado para que tu dispositivo tenga un comportamiento completamente personalizado y si, claro está, cuando el dispositivo está iniciando (ver los dos niveles inferiores del siguiente diagrama).
Salud
...estos programas, ¿como se ejecutan? como les dices que se ejecuten al iniciar el telefono ?...
Estos programas los puedes ejecutar manualmente en la linea de comandos escribiendo su nombre, los puedes ejecutar mediante un paquete que los llame (Ej. al hacer un tap [~click]). Los puedes compilar en una librería que posteriormente usarás en tus paquetes. Los puedes incluir en un ROM personalizado para que tu dispositivo tenga un comportamiento completamente personalizado y si, claro está, cuando el dispositivo está iniciando (ver los dos niveles inferiores del siguiente diagrama).
Salud