最近看到 一个 样本 ,里面有键盘 按键记录的功能 ,而且 实现也比较 简单,运行 记录 的效果还 不错 。主要思路如下 :

//假代码 int i=0;for(i=0;i<0x100;i++){GetKeyState(i);//参考:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeystate//如果有按键 记录,就去获取一些相关信息//当前时间 ,活动窗口名等一起记录}

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x64 下,虚拟地址转换物理地址:

***应用层虚拟地址转换

1,在windbg中找到对应进程的DirBase

2,根据 9-9-9-9-12(pml4-pd-pt-ptd)规则,对虚拟地址进行切割,然后读取相应的内容,最后定位到物理地址。

实测例子:

进程为DbgView.exe,进程的ImageBase=0x4000000;DirBase=0x303e0000

下面查找0x400000对应的物理地址:

对虚拟地址进行切割得到偏移为0-0-2-0-0

pml4=*((qword*)0x303e000+0*8)=0xa000000`045ec867    ,取页起始地址0x45ec000

pd=*((qword*)0x45ec000+0*8)=0xa000000`5a16d867         ,取页起始地址0x5a16d000

pt=*((qword*)0x5a16d000+2*8)=0xa000000`0686f867         ,取页起始地址0x686f000

pte=*((qword*))0x686f000+0*8)=0x81000000`45b78025    ,取页起始地址0x45b78000

PhysicalAddress=0x45b78000+0=0x45b78000

可以看到物理地址和虚拟地址内容是一致的。

***内核中虚拟地址转换

内核中的虚拟地址转物理地址与应用层原理是一致的,唯一的区别在于内核中的虚拟地址都属于system。

生成随机字符串

ULONG times = 0x10;char* GetRandString()
{//随机因子ULONGLONG seed = GetTickCount()+times;//基字符串CHAR RandString[MAX_PATH] = "aiebdcefgh\0";CHAR* temp = NULL;//长度随机化int i = seed%4+strlen(RandString)-4;RandString[i] = 0x0;while (i>0){//内容随机化RandString[i-1] += seed % (i+2);i--;}{temp = (CHAR*)malloc(MAX_PATH);if (temp){memset(temp, 0, MAX_PATH);strcat_s(temp,MAX_PATH, RandString);}}//times++;return temp;
}

计算字符串哈希

​​​​​​

//
// 计算字符串的hash
//
//注意64/32指针长度
ULONG CalStringHash(char* a1)
{ULONG result; // raxchar v2; // cl  ULONG v3; // edxresult = (unsigned __int64)a1;if (a1){v2 = *a1;v3 = 0;while (v2){v3 ^= 0XF673B679 * v2;v2 = *(BYTE*)++result;}result = v3;}return result;
}

简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希相关推荐

  1. delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收

    delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收 今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究. 一.直接上代码示例 1.屏蔽应 ...

  2. html 按键检测,js如何检测键盘按键的ascii码?

    本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 每个键盘上的按键都对应一个ascii码,包括鼠标左键,右键,中键都是有ascii码的.具体的码值是什么,实践出 ...

  3. 记录键盘按键记录程序实现

    1.编写键盘记录钩子的DLL函数 2.编写主程序调用DLL文件 一. 在vc6.0新建一个名字为hodll的MFC Appwizard DLL工程 在hodll.h文件里面//main symbols ...

  4. 学习记录:Unity点击屏幕生成随机UI花朵

    1 效果展示 点击屏幕的位置生成花朵,生成的花朵等5秒后自动销毁. 2 代码展示 1 生成花朵的代码 using System.Collections; using System.Collection ...

  5. 【无码专区2】序列划分(数学)

    有std,但是没有自我实现,所以是无码专区 description 完全由数字组成的字符串 sss,划分成若干段,每一段看成一个十进制的数(允许前导零)求有多少种划分方法使得相邻两个数至少一个是 DD ...

  6. 键盘按键响应时间越快越好吗_【涨姿势】按键无冲、响应延时、键盘调速……你会看机械键盘参数指标吗?...

    除了手感之外,快速响应与按键无冲对于机械键盘也十分重要.但对于许多新手玩家而言,不同键轴的手感是实实在在可以体验到的,但快速响应与按键无冲突却是一个大家少有了解的知识.今天将为广大玩家着重讲解按键响应 ...

  7. 基于FPGA的 矩阵键盘按键识别 【原理+源码】

    目录 引言 原理阐述 实现方法 源码分享 板级调试演示 引言 最近了解了矩阵键盘扫描的原理,动手实现了一下,在这里做一个简单的总结. 原理阐述 矩阵键盘典型电路: FPGA的应用电路: 其中,行信号为 ...

  8. 键盘的扫描码虚拟码概念 常见Windows键盘按键虚拟码

    '当用户按下某个键时, ' 1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传送到计算机: '       键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同. ...

  9. 【无码专区1】简单路径的第二大边权(启发式合并+最小生成树)

    只有std,没有自我实现,所以叫做无码专区 description 给一张无向图,多次询问,每次询问两个点之间所有简单路径(不重复经过点)中边权第二大(不是严格第二大)的权值的最小值. 数据范围:10 ...

最新文章

  1. Linux下编辑器vi/vim的使用介绍
  2. maven指定构建的编码格式
  3. linux教程期末考试,Linux-期末考试试题8套含答案.doc
  4. 风林火山最新系统win11 32位旗舰版v2021.07
  5. union的限制, 临时表大小的优化
  6. VC++多线程工作笔记0001---认识与创建线程
  7. 部署NEP-5智能合约 (第1部分)
  8. java创建一个不可变对象_如何在Java中创建不可变类?
  9. 如何使用Wondershare UniConverter应用效果并调整音量
  10. 关于GPS坐标系和地图定位偏差
  11. windows查看md5命令
  12. 从高德地图获取城市地铁线路+站点
  13. 在html用vue组件,html页面引入vue组件
  14. 2017年上半年软件设计师考试真题及答案(上午+下午)免费
  15. 由两个曲面确定的交线的切向量求解
  16. 大公司都在用的招聘分析模型,会EXCEL就行,白嫖党不要错过
  17. 初识计算机网络||概述
  18. 【HTML】讲讲HTML5视频播放的方式
  19. 诺禾:和Java一样能用汉字编程的神奇语言
  20. android 手机超频降频秘籍

热门文章

  1. 如何定义一个高逼格的原生JS插件
  2. 火狐浏览器油猴子GreaseMonkey使用教程
  3. Unity3D基本入门及功能介绍
  4. 「普通人VS程序员」电脑还可以这样关机,神操作 建议阅读
  5. 利用notepad++实现文件批量转换编码格式
  6. 微信机器人的构建与使用
  7. linux 查询挂载信息,linux 查询挂载信息
  8. php 屏蔽搜索机器人,php实现判断访问来路是否为搜索引擎机器人的方法
  9. Android整合SQLite数据库进行基本的增删改查
  10. 帝企鹅变形记:腾讯发展的秘密